![](https://images2015.cnblogs.com/blog/754782/201607/754782-20160714200030389-1434533326.jpg)
#pragma mark - 生成锁屏界面的图片
- (void)generatorLockImage
{
// 1.拿到当前歌曲的图片
DXMusic *playingMusic = [DXMusicTool playingMusic];
UIImage *currentImage = [UIImage imageNamed:playingMusic.icon];
// 2.拿到三句歌词
// 2.1.获取当前的歌词
DXLrcline *currentLrc = self.lrclist[self.currentIndex];
// 2.2.上一句歌词
NSInteger previousIndex = self.currentIndex - 1;
DXLrcline *prevousLrc = nil;
if (previousIndex >= 0) {
prevousLrc = self.lrclist[previousIndex];
}
// 2.3.下一句歌词
NSInteger nextIndex = self.currentIndex + 1;
DXLrcline *nextLrc = nil;
if (nextIndex < self.lrclist.count) {
nextLrc = self.lrclist[nextIndex];
}
// 3.生成水印图片
// 3.1.获取上下文
UIGraphicsBeginImageContext(currentImage.size);
// 3.2.将图片画上去
[currentImage drawInRect:CGRectMake(0, 0, currentImage.size.width, currentImage.size.height)];
// 3.3.将歌词画到图片上
CGFloat titleH = 25;
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.alignment = NSTextAlignmentCenter;
NSDictionary *attributes1 = @{NSFontAttributeName : [UIFont systemFontOfSize:14.0],
NSForegroundColorAttributeName : [UIColor lightGrayColor],
NSParagraphStyleAttributeName : style};
[prevousLrc.text drawInRect:CGRectMake(0, currentImage.size.height - titleH * 3, currentImage.size.width, titleH) withAttributes:attributes1];
[nextLrc.text drawInRect:CGRectMake(0, currentImage.size.height - titleH, currentImage.size.width, titleH) withAttributes:attributes1];
NSDictionary *attributes2 = @{NSFontAttributeName : [UIFont systemFontOfSize:16.0],
NSForegroundColorAttributeName : [UIColor whiteColor],
NSParagraphStyleAttributeName : style};
[currentLrc.text drawInRect:CGRectMake(0, currentImage.size.height - titleH * 2, currentImage.size.width, titleH) withAttributes:attributes2];
// 4.生成图片
UIImage *lockImage = UIGraphicsGetImageFromCurrentImageContext();
// 5.设置锁屏信息
[self setupLockScreenInfoWithLockImage:lockImage];
// 6.关闭
UIGraphicsEndImageContext();
}
- (void)setupLockScreenInfoWithLockImage:(UIImage *)lockImage
{
// 0.获取当前正在播放的歌曲
DXMusic *playingMusic = [DXMusicTool playingMusic];
// 1.获取锁屏界面中心
MPNowPlayingInfoCenter *playingInfoCenter = [MPNowPlayingInfoCenter defaultCenter];
// 2.设置展示的信息
NSMutableDictionary *playingInfo = [NSMutableDictionary dictionary];
[playingInfo setObject:playingMusic.name forKey:MPMediaItemPropertyAlbumTitle];
[playingInfo setObject:playingMusic.singer forKey:MPMediaItemPropertyArtist];
MPMediaItemArtwork *artWork = [[MPMediaItemArtwork alloc] initWithImage:lockImage];
[playingInfo setObject:artWork forKey:MPMediaItemPropertyArtwork];
[playingInfo setObject:@(self.duration) forKey:MPMediaItemPropertyPlaybackDuration];
[playingInfo setObject:@(self.currentTime) forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
playingInfoCenter.nowPlayingInfo = playingInfo;
// 3.让应用程序可以接受远程事件
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
}
// 监听锁屏控制事件
- (void)remoteControlReceivedWithEvent:(UIEvent *)event
{
switch (event.subtype) {
case UIEventSubtypeRemoteControlPlay:
case UIEventSubtypeRemoteControlPause:
[self playOrPause];
break;
case UIEventSubtypeRemoteControlNextTrack:
[self next];
break;
case UIEventSubtypeRemoteControlPreviousTrack:
[self previous];
break;
default:
break;
}
}