·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> ZLMusic模仿百度音乐应用IOS源码

ZLMusic模仿百度音乐应用IOS源码

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

这个项目是一个比较不错的ZLMusic模仿百度音乐应用,也是采用Swift开发的百度音乐电台,基本模仿了现实中的百度音乐应用功能了,支持播放功能,上首歌,下一首个,以及歌曲分类等。源码大家可以看看下面吧。

  • <ignore_js_op> 运行截图
  • <ignore_js_op> 运行截图
  • <ignore_js_op>
    func stopPlayMusic() {
        if (self.isStop == true) {
            self.player.pause()
            btn .setTitle("播放", forState:UIControlState.Normal)
            //var paused = player.currentTime
            self.songImageView.layer.speed = 0.0
             
        }else{
            self.player.play()
            btn .setTitle("暂停", forState:UIControlState.Normal)
            self.songImageView.layer.beginTime = player.currentTime
            self.songImageView.layer.speed = 0.1
        }
        isStop = !isStop
       }
       func downloadData(path: NSString,dataHandler: (NSData)->Void){
            var url = NSURL(string: path)
            var request = NSURLRequest(URL: url)
            var mainQueue = NSOperationQueue.mainQueue()
            NSURLConnection.sendAsynchronousRequest(request, queue: mainQueue) {
                (response:NSURLResponse!, data:NSData!, error:NSError!) -> Void in
                var httPResponse = response as NSHTTPURLResponse
                if httpResponse.statusCode == 200 {
                   dataHandler(data)
                }
                 
            }
    
        }
         
        func downloadSong(path: NSString) {
            self.downloadData(path, dataHandler: { (data: NSData) -> Void in
                self.playSong(data)
            })
        }
        func downloadSongLrc(path: NSString) {
            var lrcPath = "http://ting.baidu.com\(path)"
            self.downloadData(lrcPath, dataHandler: { (data: NSData) -> Void in
                var lrc = NSString(data: data, encoding:NSUTF8StringEncoding)
                var lrcLists = lrc.componentsSeparatedByString("\n") as NSArray
                println("\(lrc)")
                println("\(lrcLists[5])")
                
            })
        }
        func loadSongMessage(id: Int) {
             
            var path = "http://music.baidu.com/data/music/fmlink?type=mp3&rate=1&format=json&songIds=\(id)"
            downloadData(path, dataHandler: { (data: NSData) -> Void in
                var array: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error:nil) as NSDictionary
                var dataDic: NSDictionary = array["data"] as NSDictionary
                var list:NSArray = dataDic["songList"] as NSArray
                var songDic:NSDictionary = list[0] as NSDictionary
                self.currentSong.refreshSong(songDic)
                self.title = self.currentSong.songName
                println("\(songDic)")
                self.playImage(self.currentSong.songPicRadio)
                self.showSongInfo()
                self.downloadSong(self.currentSong.songLink)
                self.downloadSongLrc(self.currentSong.lrcLink)
            })
             
        }
         
        func playImage(path: NSString) {
             
             
            if path == "" {
                self.songImageView.backgroundColor = UIColor.cyanColor()
            }else{
                var url = NSURL(string: path)
                var data = NSData(contentsOfURL: url, options: nil, error: nil)
                var image = UIImage(data: data)
                self.songImageView.image = image
            }
            self.songImageView.contentMode = UIViewContentMode.ScaleaspectFit
            self.songImageView.layer.cornerRadius = self.songImageView.frame.width/2
            self.songImageView.layer.masksToBounds = true
            self.songImageView.userInteractionEnabled = true
            var ges = UITapGestureRecognizer(target: self, action:"tapImageView:")
            self.songImageView.addGestureRecognizer(ges)
             
        }
        func showSongInfo() {
            self.artistName.text = self.currentSong.artistName
            self.songName.text = self.currentSong.songName
            self.timeLabel.text = "00:00"
        }
        func loadSongList() {
            var path = "http://fm.baidu.com/dev/api/?tn=playlist&special=Flash&prepend=&format=json&_=1378945264366&id="+String(channel.id)
            downloadData(path, dataHandler: { (data: NSData) -> Void in
                var dic: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error:nil) as NSDictionary
                var list: NSArray = dic["list"] as NSArray
                for dict in list{
                    var song = Song()
                    song.id = dict["id"] as Int
                    self.songList.append(song)
                }
                if self.songList.count != 0 {
                    self.currentSong = self.songList[0]
                    self.loadSongMessage(self.currentSong.id)
                }
    
           })
        }
    
        func doAnimation() {
            var animation = CABasicAnimation(keyPath: "transform.rotation.z")
            animation.toValue = NSNumber(double: 2.0*M_PI)
            animation.duration = 1.5
            animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
            animation.removedOnCompletion = false
            animation.cumulative = false
            animation.repeatCount = FLT_MAX
            self.songImageView.layer.addAnimation(animation, forKey: "AnimatedKey")
            self.songImageView.layer.speed = 0.1
        }
         
        func tapImageView(sender:UITapGestureRecognizer){
            self.stopPlayMusic()
        }
            override func viewDidLoad() {
            super.viewDidLoad()
            //self.title = channel.title
            loadSongList()
            self.view.backgroundColor = UIColor(red: 218/255.0, green: 225/255.0, blue: 230/255.0, alpha: 1)
            println("\(channel.id)")
        }
        override func viewWillDisappear(animated: Bool) {
            timer.invalidate()
            self.songImageView.stopAnimating()
            player.stop()
        }
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
         
         func AudioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) {
            timer.invalidate()
            self.songImageView.layer.speed = 0
            self.songImageView.stopAnimating()
            var index = self.currentIndex + 1
            loadSongWithIndex(index)
    }
    

      

    详细说明:http://ios.662p.com/thread-2239-1-1.html