ZLMusic模仿百度音乐应用项目源码
funcstopPlayMusic(){if(self.isStop==true){self.player.pause()btn.setTitle("播放",forState:UIControlState.Normal)//varpaused=player.currentTimeself.songImageView.layer.speed=0.0}else{self.player.play()btn.setTitle("暂停",forState:UIControlState.Normal)self.songImageView.layer.beginTime=player.currentTimeself.songImageView.layer.speed=0.1}isStop=!isStop}funcdownloadData(path:NSString,dataHandler:(NSData)->Void){varurl=NSURL(string:path)varrequest=NSURLRequest(URL:url)varmainQueue=NSOperationQueue.mainQueue()NSURLConnection.sendAsynchronousRequest(request,queue:mainQueue){(response:NSURLResponse!,data:NSData!,error:NSError!)->VoidinvarhttpResponse=responseasNSHTTPURLResponseifhttpResponse.statusCode==200{dataHandler(data)}}}funcdownloadSong(path:NSString){self.downloadData(path,dataHandler:{(data:NSData)->Voidinself.playSong(data)})}funcdownloadSongLrc(path:NSString){varlrcPath="http://ting.baidu.com\(path)"self.downloadData(lrcPath,dataHandler:{(data:NSData)->Voidinvarlrc=NSString(data:data,encoding:NSUTF8StringEncoding)varlrcLists=lrc.componentsSeparatedByString("\n")asNSArrayprintln("\(lrc)")println("\(lrcLists[5])")})}funcloadSongMessage(id:Int){varpath="http://music.baidu.com/data/music/fmlink?type=mp3&rate=1&format=json&songIds=\(id)"downloadData(path,dataHandler:{(data:NSData)->Voidinvararray:NSDictionary=NSJSONSerialization.JSONObjectWithData(data,options:NSJSONReadingOptions.AllowFragments,error:nil)asNSDictionaryvardataDic:NSDictionary=array["data"]asNSDictionaryvarlist:NSArray=dataDic["songList"]asNSArrayvarsongDic:NSDictionary=list[0]asNSDictionaryself.currentSong.refreshSong(songDic)self.title=self.currentSong.songNameprintln("\(songDic)")self.playImage(self.currentSong.songPicRadio)self.showSongInfo()self.downloadSong(self.currentSong.songLink)self.downloadSongLrc(self.currentSong.lrcLink)})}funcplayImage(path:NSString){ifpath==""{self.songImageView.backgroundColor=UIColor.cyanColor()}else{varurl=NSURL(string:path)vardata=NSData(contentsOfURL:url,options:nil,error:nil)varp_w_picpath=UIImage(data:data)self.songImageView.p_w_picpath=p_w_picpath}self.songImageView.contentMode=UIViewContentMode.ScaleAspectFitself.songImageView.layer.cornerRadius=self.songImageView.frame.width/2self.songImageView.layer.masksToBounds=trueself.songImageView.userInteractionEnabled=truevarges=UITapGestureRecognizer(target:self,action:"tapImageView:")self.songImageView.addGestureRecognizer(ges)}funcshowSongInfo(){self.artistName.text=self.currentSong.artistNameself.songName.text=self.currentSong.songNameself.timeLabel.text="00:00"}funcloadSongList(){varpath="http://fm.baidu.com/dev/api/?tn=playlist&special=flash&prepend=&format=json&_=1378945264366&id="+String(channel.id)downloadData(path,dataHandler:{(data:NSData)->Voidinvardic:NSDictionary=NSJSONSerialization.JSONObjectWithData(data,options:NSJSONReadingOptions.AllowFragments,error:nil)asNSDictionaryvarlist:NSArray=dic["list"]asNSArrayfordictinlist{varsong=Song()song.id=dict["id"]asIntself.songList.append(song)}ifself.songList.count!=0{self.currentSong=self.songList[0]self.loadSongMessage(self.currentSong.id)}})}funcdoAnimation(){varanimation=CABasicAnimation(keyPath:"transform.rotation.z")animation.toValue=NSNumber(double:2.0*M_PI)animation.duration=1.5animation.timingFunction=CAMediaTimingFunction(name:kCAMediaTimingFunctionLinear)animation.removedOnCompletion=falseanimation.cumulative=falseanimation.repeatCount=FLT_MAXself.songImageView.layer.addAnimation(animation,forKey:"AnimatedKey")self.songImageView.layer.speed=0.1}functapImageView(sender:UITapGestureRecognizer){self.stopPlayMusic()}overridefuncviewDidLoad(){super.viewDidLoad()//self.title=channel.titleloadSongList()self.view.backgroundColor=UIColor(red:218/255.0,green:225/255.0,blue:230/255.0,alpha:1)println("\(channel.id)")}overridefuncviewWillDisappear(animated:Bool){timer.invalidate()self.songImageView.stopAnimating()player.stop()}overridefuncdidReceiveMemoryWarning(){super.didReceiveMemoryWarning()//Disposeofanyresourcesthatcanberecreated.}funcAudioPlayerDidFinishPlaying(player:AVAudioPlayer!,successfullyflag:Bool){timer.invalidate()self.songImageView.layer.speed=0self.songImageView.stopAnimating()varindex=self.currentIndex+1loadSongWithIndex(index)}
这个项目是一个比较不错的ZLMusic模仿百度音乐应用,也是采用Swift开发的百度音乐电台,基本模仿了现实中的百度音乐应用功能了,支持播放功能,上首歌,下一首个,以及歌曲分类等。
项目×××:http://code.662p.com/view/9375.html
运行截图
运行截图
运行截图
详细说明:http://ios.662p.com/thread-2239-1-1.html
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。