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

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

  • <ignore_js_op>ZLMusic模仿百度音乐应用IOS源码
    运行截图
  • <ignore_js_op>ZLMusic模仿百度音乐应用IOS源码
    运行截图
  • <ignore_js_op>ZLMusic模仿百度音乐应用IOS源码
    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

你可能感兴趣的:(Music)