音乐播放器之锁屏歌词

//展示锁屏歌曲信息:图片、歌词、进度、歌曲名、演唱者、专辑、(歌词是绘制在图片上的)
func showLockScreenTotaltime(totalTime:Float,currentTime:Float,isShow:Bool) {
    let songDict = NSMutableDictionary()
    //设置歌曲题目
    songDict.setValue("520", forKey: MPMediaItemPropertyTitle)
    //设置歌手名
    songDict.setValue("chenfan", forKey: MPMediaItemPropertyArtist)
    //设置专辑名
    songDict.setValue("zz", forKey: MPMediaItemPropertyAlbumTitle)
    //设置歌曲时长
    songDict.setValue(NSNumber(value: totalTime), forKey: MPMediaItemPropertyPlaybackDuration)
    //设置已经播放时长
    songDict.setValue(NSNumber(value: currentTime), forKey: MPNowPlayingInfoPropertyElapsedPlaybackTime)
    
    var lrcImage = UIImage(named: "backgroundImage5.jpg")
    if isShow {
        //制作带歌词的海报
        if lrcImageView == nil {
            lrcImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 400, height: 800))
        }
        if lockScreenTableView == nil {
            lockScreenTableView = UITableView(frame: CGRect(x: 0, y: 800-44*7 + 20, width: 480, height: 44*3))
            lockScreenTableView?.dataSource = self
            lockScreenTableView?.delegate = self
            lockScreenTableView?.separatorStyle = .none
            lockScreenTableView?.backgroundColor = UIColor.clear
            lockScreenTableView?.register(UITableViewCell.self, forCellReuseIdentifier: "cellID")
        }
        //主要为了把歌词绘制到图片上,已达到更新歌词的目的
        lrcImageView?.addSubview(self.lockScreenTableView!)
        lrcImageView?.image = lrcImage
        lrcImageView?.backgroundColor = UIColor.black
        
        //获取添加了歌词数据的海报图片
        UIGraphicsBeginImageContextWithOptions(lrcImageView!.frame.size, false, 0.0)
        if let context = UIGraphicsGetCurrentContext() {
            lrcImageView?.layer.render(in: context)
            lrcImage = UIGraphicsGetImageFromCurrentImageContext()
            lastImage = lrcImage
            UIGraphicsEndImageContext();
        }
    } else {
        if lastImage != nil {
            lrcImage = lastImage
        }
    }
    
    //设置显示的海报图片
    songDict.setObject(MPMediaItemArtwork(image: lrcImage!), forKey: MPMediaItemPropertyArtwork as NSCopying)
    //加入正在播放媒体的信息中心
    MPNowPlayingInfoCenter.default().nowPlayingInfo = songDict as! [String : Any]
    
}

你可能感兴趣的:(音乐播放器之锁屏歌词)