├── .DS_Store ├── .gitignore ├── README.md ├── WJQQMusic.xcodeproj ├── project.pbxproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── WJQQMusic ├── AppDelegate.swift ├── Base.lproj │ ├── LaunchScreen.xib │ └── Main.storyboard ├── HttpProtocol.swift ├── Images.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── Info.plist ├── PlayListView.swift ├── PlayListView.xib ├── Public.swift ├── Resource │ ├── .DS_Store │ ├── 239780136.jpg │ ├── actionIconLike@2x.png │ ├── actionIconLikeSelected@2x.png │ ├── actionbutton@2x.png │ ├── bannerTips_topokSQ@2x.png │ ├── channel_songFolderList_playAll@2x.png │ ├── channel_songFolderList_playAll_h@2x.png │ ├── channel_song_list_play_btn@2x.png │ ├── channel_song_list_play_btn_h@2x.png │ ├── icon_operate_play@2x.png │ ├── icon_operate_play_pressed@2x.png │ ├── mymuisc_more@2x.png │ ├── nowplay_recommend_selected_cell@2x.png │ ├── nowplaying_playlist@2x.png │ ├── nowplaying_random@2x.png │ ├── nowplaying_random_h@2x.png │ ├── nowplaying_section_bg@2x.png │ ├── player_btn_download_disable@2x.png │ ├── player_btn_download_highlight@2x.png │ ├── player_btn_download_normal@2x.png │ ├── player_btn_favorite_disable@2x.png │ ├── player_btn_favorite_highlight@2x.png │ ├── player_btn_favorite_normal@2x.png │ ├── player_btn_favorited_highlight@2x.png │ ├── player_btn_favorited_normal@2x.png │ ├── player_btn_hq_disable@2x.png │ ├── player_btn_more_highlight@2x.png │ ├── player_btn_more_normal@2x.png │ ├── player_btn_next_highlight@2x.png │ ├── player_btn_next_normal@2x.png │ ├── player_btn_pause_highlight@2x.png │ ├── player_btn_pause_normal@2x.png │ ├── player_btn_play_highlight@2x.png │ ├── player_btn_play_normal@2x.png │ ├── player_btn_playlist_highlight@2x.png │ ├── player_btn_playlist_normal@2x.png │ ├── player_btn_pre_highlight@2x.png │ ├── player_btn_pre_normal@2x.png │ ├── player_btn_radio_normal@2x.png │ ├── player_btn_radiolist_highlight@2x.png │ ├── player_btn_radiolist_normal@2x.png │ ├── player_btn_random_disable@2x.png │ ├── player_btn_random_highlight@2x.png │ ├── player_btn_random_normal@2x.png │ ├── player_btn_repeat_disable@2x.png │ ├── player_btn_repeat_highlight@2x.png │ ├── player_btn_repeat_normal@2x.png │ ├── player_btn_repeatone_disable@2x.png │ ├── player_btn_repeatone_highlight@2x.png │ ├── player_btn_repeatone_normal@2x.png │ ├── player_btn_share_disable@2x.png │ ├── player_btn_share_highlight@2x.png │ ├── player_btn_share_normal@2x.png │ ├── player_btn_sq_disable@2x.png │ ├── player_btn_trash_highlight@2x.png │ ├── player_btn_trash_normal@2x.png │ ├── player_slider_playback_left@2x.png │ ├── player_slider_playback_right@2x.png │ └── player_slider_playback_thumb@2x.png ├── Song.swift └── ViewController.swift ├── WJQQMusicTests ├── Info.plist └── WJQQMusicTests.swift └── wj.gif /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | build/ 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | *.xccheckout 14 | *.moved-aside 15 | DerivedData 16 | *.hmap 17 | *.ipa 18 | *.xcuserstate 19 | 20 | # CocoaPods 21 | # 22 | # We recommend against adding the Pods directory to your .gitignore. However 23 | # you should judge for yourself, the pros and cons are mentioned at: 24 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 25 | # 26 | # Pods/ 27 | 28 | # Carthage 29 | # 30 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 31 | # Carthage/Checkouts 32 | 33 | Carthage/Build 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WJQQMusicSwiftDemo 2 | swift版模仿QQ音乐:Layer动画,Xib的使用,网络请求数据,UISlider,MPMoviePlayerController,protocol,UIVisualEffectView 3 | 4 | ##效果图 5 | ![WJQQMusicSwiftDemo](https://github.com/WinJayQ/WJQQMusicSwiftDemo/raw/master/wj.gif) 6 | -------------------------------------------------------------------------------- /WJQQMusic.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 9C17FEFB1BA90ACB00E32E37 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C17FEFA1BA90ACB00E32E37 /* AppDelegate.swift */; }; 11 | 9C17FEFD1BA90ACB00E32E37 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C17FEFC1BA90ACB00E32E37 /* ViewController.swift */; }; 12 | 9C17FF001BA90ACB00E32E37 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FEFE1BA90ACB00E32E37 /* Main.storyboard */; }; 13 | 9C17FF021BA90ACB00E32E37 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF011BA90ACB00E32E37 /* Images.xcassets */; }; 14 | 9C17FF051BA90ACB00E32E37 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF031BA90ACB00E32E37 /* LaunchScreen.xib */; }; 15 | 9C17FF111BA90ACB00E32E37 /* WJQQMusicTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C17FF101BA90ACB00E32E37 /* WJQQMusicTests.swift */; }; 16 | 9C17FF561BA90B2B00E32E37 /* 239780136.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF1B1BA90B2B00E32E37 /* 239780136.jpg */; }; 17 | 9C17FF571BA90B2B00E32E37 /* actionbutton@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF1C1BA90B2B00E32E37 /* actionbutton@2x.png */; }; 18 | 9C17FF581BA90B2B00E32E37 /* actionIconLike@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF1D1BA90B2B00E32E37 /* actionIconLike@2x.png */; }; 19 | 9C17FF591BA90B2B00E32E37 /* actionIconLikeSelected@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF1E1BA90B2B00E32E37 /* actionIconLikeSelected@2x.png */; }; 20 | 9C17FF5A1BA90B2B00E32E37 /* bannerTips_topokSQ@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF1F1BA90B2B00E32E37 /* bannerTips_topokSQ@2x.png */; }; 21 | 9C17FF5B1BA90B2B00E32E37 /* channel_song_list_play_btn@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF201BA90B2B00E32E37 /* channel_song_list_play_btn@2x.png */; }; 22 | 9C17FF5C1BA90B2B00E32E37 /* channel_song_list_play_btn_h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF211BA90B2B00E32E37 /* channel_song_list_play_btn_h@2x.png */; }; 23 | 9C17FF5D1BA90B2B00E32E37 /* channel_songFolderList_playAll@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF221BA90B2B00E32E37 /* channel_songFolderList_playAll@2x.png */; }; 24 | 9C17FF5E1BA90B2B00E32E37 /* channel_songFolderList_playAll_h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF231BA90B2B00E32E37 /* channel_songFolderList_playAll_h@2x.png */; }; 25 | 9C17FF5F1BA90B2B00E32E37 /* icon_operate_play@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF241BA90B2B00E32E37 /* icon_operate_play@2x.png */; }; 26 | 9C17FF601BA90B2B00E32E37 /* icon_operate_play_pressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF251BA90B2B00E32E37 /* icon_operate_play_pressed@2x.png */; }; 27 | 9C17FF611BA90B2B00E32E37 /* mymuisc_more@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF261BA90B2B00E32E37 /* mymuisc_more@2x.png */; }; 28 | 9C17FF621BA90B2B00E32E37 /* nowplay_recommend_selected_cell@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF271BA90B2B00E32E37 /* nowplay_recommend_selected_cell@2x.png */; }; 29 | 9C17FF631BA90B2B00E32E37 /* nowplaying_playlist@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF281BA90B2B00E32E37 /* nowplaying_playlist@2x.png */; }; 30 | 9C17FF641BA90B2B00E32E37 /* nowplaying_random@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF291BA90B2B00E32E37 /* nowplaying_random@2x.png */; }; 31 | 9C17FF651BA90B2B00E32E37 /* nowplaying_random_h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF2A1BA90B2B00E32E37 /* nowplaying_random_h@2x.png */; }; 32 | 9C17FF661BA90B2B00E32E37 /* nowplaying_section_bg@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF2B1BA90B2B00E32E37 /* nowplaying_section_bg@2x.png */; }; 33 | 9C17FF671BA90B2B00E32E37 /* player_btn_download_disable@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF2C1BA90B2B00E32E37 /* player_btn_download_disable@2x.png */; }; 34 | 9C17FF681BA90B2B00E32E37 /* player_btn_download_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF2D1BA90B2B00E32E37 /* player_btn_download_highlight@2x.png */; }; 35 | 9C17FF691BA90B2B00E32E37 /* player_btn_download_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF2E1BA90B2B00E32E37 /* player_btn_download_normal@2x.png */; }; 36 | 9C17FF6A1BA90B2B00E32E37 /* player_btn_favorite_disable@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF2F1BA90B2B00E32E37 /* player_btn_favorite_disable@2x.png */; }; 37 | 9C17FF6B1BA90B2B00E32E37 /* player_btn_favorite_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF301BA90B2B00E32E37 /* player_btn_favorite_highlight@2x.png */; }; 38 | 9C17FF6C1BA90B2B00E32E37 /* player_btn_favorite_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF311BA90B2B00E32E37 /* player_btn_favorite_normal@2x.png */; }; 39 | 9C17FF6D1BA90B2B00E32E37 /* player_btn_favorited_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF321BA90B2B00E32E37 /* player_btn_favorited_highlight@2x.png */; }; 40 | 9C17FF6E1BA90B2B00E32E37 /* player_btn_favorited_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF331BA90B2B00E32E37 /* player_btn_favorited_normal@2x.png */; }; 41 | 9C17FF6F1BA90B2B00E32E37 /* player_btn_hq_disable@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF341BA90B2B00E32E37 /* player_btn_hq_disable@2x.png */; }; 42 | 9C17FF701BA90B2B00E32E37 /* player_btn_more_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF351BA90B2B00E32E37 /* player_btn_more_highlight@2x.png */; }; 43 | 9C17FF711BA90B2B00E32E37 /* player_btn_more_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF361BA90B2B00E32E37 /* player_btn_more_normal@2x.png */; }; 44 | 9C17FF721BA90B2B00E32E37 /* player_btn_next_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF371BA90B2B00E32E37 /* player_btn_next_highlight@2x.png */; }; 45 | 9C17FF731BA90B2B00E32E37 /* player_btn_next_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF381BA90B2B00E32E37 /* player_btn_next_normal@2x.png */; }; 46 | 9C17FF741BA90B2B00E32E37 /* player_btn_pause_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF391BA90B2B00E32E37 /* player_btn_pause_highlight@2x.png */; }; 47 | 9C17FF751BA90B2B00E32E37 /* player_btn_pause_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF3A1BA90B2B00E32E37 /* player_btn_pause_normal@2x.png */; }; 48 | 9C17FF761BA90B2B00E32E37 /* player_btn_play_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF3B1BA90B2B00E32E37 /* player_btn_play_highlight@2x.png */; }; 49 | 9C17FF771BA90B2B00E32E37 /* player_btn_play_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF3C1BA90B2B00E32E37 /* player_btn_play_normal@2x.png */; }; 50 | 9C17FF781BA90B2B00E32E37 /* player_btn_playlist_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF3D1BA90B2B00E32E37 /* player_btn_playlist_highlight@2x.png */; }; 51 | 9C17FF791BA90B2B00E32E37 /* player_btn_playlist_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF3E1BA90B2B00E32E37 /* player_btn_playlist_normal@2x.png */; }; 52 | 9C17FF7A1BA90B2B00E32E37 /* player_btn_pre_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF3F1BA90B2B00E32E37 /* player_btn_pre_highlight@2x.png */; }; 53 | 9C17FF7B1BA90B2B00E32E37 /* player_btn_pre_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF401BA90B2B00E32E37 /* player_btn_pre_normal@2x.png */; }; 54 | 9C17FF7C1BA90B2B00E32E37 /* player_btn_radio_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF411BA90B2B00E32E37 /* player_btn_radio_normal@2x.png */; }; 55 | 9C17FF7D1BA90B2B00E32E37 /* player_btn_radiolist_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF421BA90B2B00E32E37 /* player_btn_radiolist_highlight@2x.png */; }; 56 | 9C17FF7E1BA90B2B00E32E37 /* player_btn_radiolist_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF431BA90B2B00E32E37 /* player_btn_radiolist_normal@2x.png */; }; 57 | 9C17FF7F1BA90B2B00E32E37 /* player_btn_random_disable@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF441BA90B2B00E32E37 /* player_btn_random_disable@2x.png */; }; 58 | 9C17FF801BA90B2B00E32E37 /* player_btn_random_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF451BA90B2B00E32E37 /* player_btn_random_highlight@2x.png */; }; 59 | 9C17FF811BA90B2B00E32E37 /* player_btn_random_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF461BA90B2B00E32E37 /* player_btn_random_normal@2x.png */; }; 60 | 9C17FF821BA90B2B00E32E37 /* player_btn_repeat_disable@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF471BA90B2B00E32E37 /* player_btn_repeat_disable@2x.png */; }; 61 | 9C17FF831BA90B2B00E32E37 /* player_btn_repeat_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF481BA90B2B00E32E37 /* player_btn_repeat_highlight@2x.png */; }; 62 | 9C17FF841BA90B2B00E32E37 /* player_btn_repeat_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF491BA90B2B00E32E37 /* player_btn_repeat_normal@2x.png */; }; 63 | 9C17FF851BA90B2B00E32E37 /* player_btn_repeatone_disable@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF4A1BA90B2B00E32E37 /* player_btn_repeatone_disable@2x.png */; }; 64 | 9C17FF861BA90B2B00E32E37 /* player_btn_repeatone_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF4B1BA90B2B00E32E37 /* player_btn_repeatone_highlight@2x.png */; }; 65 | 9C17FF871BA90B2B00E32E37 /* player_btn_repeatone_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF4C1BA90B2B00E32E37 /* player_btn_repeatone_normal@2x.png */; }; 66 | 9C17FF881BA90B2B00E32E37 /* player_btn_share_disable@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF4D1BA90B2B00E32E37 /* player_btn_share_disable@2x.png */; }; 67 | 9C17FF891BA90B2B00E32E37 /* player_btn_share_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF4E1BA90B2B00E32E37 /* player_btn_share_highlight@2x.png */; }; 68 | 9C17FF8A1BA90B2B00E32E37 /* player_btn_share_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF4F1BA90B2B00E32E37 /* player_btn_share_normal@2x.png */; }; 69 | 9C17FF8B1BA90B2B00E32E37 /* player_btn_sq_disable@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF501BA90B2B00E32E37 /* player_btn_sq_disable@2x.png */; }; 70 | 9C17FF8C1BA90B2B00E32E37 /* player_btn_trash_highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF511BA90B2B00E32E37 /* player_btn_trash_highlight@2x.png */; }; 71 | 9C17FF8D1BA90B2B00E32E37 /* player_btn_trash_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF521BA90B2B00E32E37 /* player_btn_trash_normal@2x.png */; }; 72 | 9C17FF8E1BA90B2B00E32E37 /* player_slider_playback_left@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF531BA90B2B00E32E37 /* player_slider_playback_left@2x.png */; }; 73 | 9C17FF8F1BA90B2B00E32E37 /* player_slider_playback_right@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF541BA90B2B00E32E37 /* player_slider_playback_right@2x.png */; }; 74 | 9C17FF901BA90B2B00E32E37 /* player_slider_playback_thumb@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FF551BA90B2B00E32E37 /* player_slider_playback_thumb@2x.png */; }; 75 | 9C17FF941BA91A6B00E32E37 /* PlayListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C17FF931BA91A6B00E32E37 /* PlayListView.swift */; }; 76 | 9C17FFEF1BA944D200E32E37 /* HttpProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C17FFEE1BA944D200E32E37 /* HttpProtocol.swift */; }; 77 | 9C17FFF11BA9480600E32E37 /* Song.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C17FFF01BA9480600E32E37 /* Song.swift */; }; 78 | 9C17FFF31BA9543E00E32E37 /* Public.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C17FFF21BA9543E00E32E37 /* Public.swift */; }; 79 | 9C17FFF51BA9675300E32E37 /* PlayListView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9C17FFF41BA9675300E32E37 /* PlayListView.xib */; }; 80 | /* End PBXBuildFile section */ 81 | 82 | /* Begin PBXContainerItemProxy section */ 83 | 9C17FF0B1BA90ACB00E32E37 /* PBXContainerItemProxy */ = { 84 | isa = PBXContainerItemProxy; 85 | containerPortal = 9C17FEED1BA90ACB00E32E37 /* Project object */; 86 | proxyType = 1; 87 | remoteGlobalIDString = 9C17FEF41BA90ACB00E32E37; 88 | remoteInfo = WJQQMusic; 89 | }; 90 | /* End PBXContainerItemProxy section */ 91 | 92 | /* Begin PBXCopyFilesBuildPhase section */ 93 | 9C17FFC21BA9415A00E32E37 /* Embed Frameworks */ = { 94 | isa = PBXCopyFilesBuildPhase; 95 | buildActionMask = 2147483647; 96 | dstPath = ""; 97 | dstSubfolderSpec = 10; 98 | files = ( 99 | ); 100 | name = "Embed Frameworks"; 101 | runOnlyForDeploymentPostprocessing = 0; 102 | }; 103 | /* End PBXCopyFilesBuildPhase section */ 104 | 105 | /* Begin PBXFileReference section */ 106 | 9C17FEF51BA90ACB00E32E37 /* WJQQMusic.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WJQQMusic.app; sourceTree = BUILT_PRODUCTS_DIR; }; 107 | 9C17FEF91BA90ACB00E32E37 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 108 | 9C17FEFA1BA90ACB00E32E37 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 109 | 9C17FEFC1BA90ACB00E32E37 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 110 | 9C17FEFF1BA90ACB00E32E37 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 111 | 9C17FF011BA90ACB00E32E37 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 112 | 9C17FF041BA90ACB00E32E37 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 113 | 9C17FF0A1BA90ACB00E32E37 /* WJQQMusicTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WJQQMusicTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 114 | 9C17FF0F1BA90ACB00E32E37 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 115 | 9C17FF101BA90ACB00E32E37 /* WJQQMusicTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WJQQMusicTests.swift; sourceTree = ""; }; 116 | 9C17FF1B1BA90B2B00E32E37 /* 239780136.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = 239780136.jpg; sourceTree = ""; }; 117 | 9C17FF1C1BA90B2B00E32E37 /* actionbutton@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "actionbutton@2x.png"; sourceTree = ""; }; 118 | 9C17FF1D1BA90B2B00E32E37 /* actionIconLike@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "actionIconLike@2x.png"; sourceTree = ""; }; 119 | 9C17FF1E1BA90B2B00E32E37 /* actionIconLikeSelected@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "actionIconLikeSelected@2x.png"; sourceTree = ""; }; 120 | 9C17FF1F1BA90B2B00E32E37 /* bannerTips_topokSQ@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bannerTips_topokSQ@2x.png"; sourceTree = ""; }; 121 | 9C17FF201BA90B2B00E32E37 /* channel_song_list_play_btn@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "channel_song_list_play_btn@2x.png"; sourceTree = ""; }; 122 | 9C17FF211BA90B2B00E32E37 /* channel_song_list_play_btn_h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "channel_song_list_play_btn_h@2x.png"; sourceTree = ""; }; 123 | 9C17FF221BA90B2B00E32E37 /* channel_songFolderList_playAll@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "channel_songFolderList_playAll@2x.png"; sourceTree = ""; }; 124 | 9C17FF231BA90B2B00E32E37 /* channel_songFolderList_playAll_h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "channel_songFolderList_playAll_h@2x.png"; sourceTree = ""; }; 125 | 9C17FF241BA90B2B00E32E37 /* icon_operate_play@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon_operate_play@2x.png"; sourceTree = ""; }; 126 | 9C17FF251BA90B2B00E32E37 /* icon_operate_play_pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon_operate_play_pressed@2x.png"; sourceTree = ""; }; 127 | 9C17FF261BA90B2B00E32E37 /* mymuisc_more@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mymuisc_more@2x.png"; sourceTree = ""; }; 128 | 9C17FF271BA90B2B00E32E37 /* nowplay_recommend_selected_cell@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "nowplay_recommend_selected_cell@2x.png"; sourceTree = ""; }; 129 | 9C17FF281BA90B2B00E32E37 /* nowplaying_playlist@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "nowplaying_playlist@2x.png"; sourceTree = ""; }; 130 | 9C17FF291BA90B2B00E32E37 /* nowplaying_random@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "nowplaying_random@2x.png"; sourceTree = ""; }; 131 | 9C17FF2A1BA90B2B00E32E37 /* nowplaying_random_h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "nowplaying_random_h@2x.png"; sourceTree = ""; }; 132 | 9C17FF2B1BA90B2B00E32E37 /* nowplaying_section_bg@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "nowplaying_section_bg@2x.png"; sourceTree = ""; }; 133 | 9C17FF2C1BA90B2B00E32E37 /* player_btn_download_disable@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_download_disable@2x.png"; sourceTree = ""; }; 134 | 9C17FF2D1BA90B2B00E32E37 /* player_btn_download_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_download_highlight@2x.png"; sourceTree = ""; }; 135 | 9C17FF2E1BA90B2B00E32E37 /* player_btn_download_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_download_normal@2x.png"; sourceTree = ""; }; 136 | 9C17FF2F1BA90B2B00E32E37 /* player_btn_favorite_disable@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_favorite_disable@2x.png"; sourceTree = ""; }; 137 | 9C17FF301BA90B2B00E32E37 /* player_btn_favorite_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_favorite_highlight@2x.png"; sourceTree = ""; }; 138 | 9C17FF311BA90B2B00E32E37 /* player_btn_favorite_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_favorite_normal@2x.png"; sourceTree = ""; }; 139 | 9C17FF321BA90B2B00E32E37 /* player_btn_favorited_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_favorited_highlight@2x.png"; sourceTree = ""; }; 140 | 9C17FF331BA90B2B00E32E37 /* player_btn_favorited_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_favorited_normal@2x.png"; sourceTree = ""; }; 141 | 9C17FF341BA90B2B00E32E37 /* player_btn_hq_disable@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_hq_disable@2x.png"; sourceTree = ""; }; 142 | 9C17FF351BA90B2B00E32E37 /* player_btn_more_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_more_highlight@2x.png"; sourceTree = ""; }; 143 | 9C17FF361BA90B2B00E32E37 /* player_btn_more_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_more_normal@2x.png"; sourceTree = ""; }; 144 | 9C17FF371BA90B2B00E32E37 /* player_btn_next_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_next_highlight@2x.png"; sourceTree = ""; }; 145 | 9C17FF381BA90B2B00E32E37 /* player_btn_next_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_next_normal@2x.png"; sourceTree = ""; }; 146 | 9C17FF391BA90B2B00E32E37 /* player_btn_pause_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_pause_highlight@2x.png"; sourceTree = ""; }; 147 | 9C17FF3A1BA90B2B00E32E37 /* player_btn_pause_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_pause_normal@2x.png"; sourceTree = ""; }; 148 | 9C17FF3B1BA90B2B00E32E37 /* player_btn_play_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_play_highlight@2x.png"; sourceTree = ""; }; 149 | 9C17FF3C1BA90B2B00E32E37 /* player_btn_play_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_play_normal@2x.png"; sourceTree = ""; }; 150 | 9C17FF3D1BA90B2B00E32E37 /* player_btn_playlist_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_playlist_highlight@2x.png"; sourceTree = ""; }; 151 | 9C17FF3E1BA90B2B00E32E37 /* player_btn_playlist_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_playlist_normal@2x.png"; sourceTree = ""; }; 152 | 9C17FF3F1BA90B2B00E32E37 /* player_btn_pre_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_pre_highlight@2x.png"; sourceTree = ""; }; 153 | 9C17FF401BA90B2B00E32E37 /* player_btn_pre_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_pre_normal@2x.png"; sourceTree = ""; }; 154 | 9C17FF411BA90B2B00E32E37 /* player_btn_radio_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_radio_normal@2x.png"; sourceTree = ""; }; 155 | 9C17FF421BA90B2B00E32E37 /* player_btn_radiolist_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_radiolist_highlight@2x.png"; sourceTree = ""; }; 156 | 9C17FF431BA90B2B00E32E37 /* player_btn_radiolist_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_radiolist_normal@2x.png"; sourceTree = ""; }; 157 | 9C17FF441BA90B2B00E32E37 /* player_btn_random_disable@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_random_disable@2x.png"; sourceTree = ""; }; 158 | 9C17FF451BA90B2B00E32E37 /* player_btn_random_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_random_highlight@2x.png"; sourceTree = ""; }; 159 | 9C17FF461BA90B2B00E32E37 /* player_btn_random_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_random_normal@2x.png"; sourceTree = ""; }; 160 | 9C17FF471BA90B2B00E32E37 /* player_btn_repeat_disable@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_repeat_disable@2x.png"; sourceTree = ""; }; 161 | 9C17FF481BA90B2B00E32E37 /* player_btn_repeat_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_repeat_highlight@2x.png"; sourceTree = ""; }; 162 | 9C17FF491BA90B2B00E32E37 /* player_btn_repeat_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_repeat_normal@2x.png"; sourceTree = ""; }; 163 | 9C17FF4A1BA90B2B00E32E37 /* player_btn_repeatone_disable@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_repeatone_disable@2x.png"; sourceTree = ""; }; 164 | 9C17FF4B1BA90B2B00E32E37 /* player_btn_repeatone_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_repeatone_highlight@2x.png"; sourceTree = ""; }; 165 | 9C17FF4C1BA90B2B00E32E37 /* player_btn_repeatone_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_repeatone_normal@2x.png"; sourceTree = ""; }; 166 | 9C17FF4D1BA90B2B00E32E37 /* player_btn_share_disable@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_share_disable@2x.png"; sourceTree = ""; }; 167 | 9C17FF4E1BA90B2B00E32E37 /* player_btn_share_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_share_highlight@2x.png"; sourceTree = ""; }; 168 | 9C17FF4F1BA90B2B00E32E37 /* player_btn_share_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_share_normal@2x.png"; sourceTree = ""; }; 169 | 9C17FF501BA90B2B00E32E37 /* player_btn_sq_disable@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_sq_disable@2x.png"; sourceTree = ""; }; 170 | 9C17FF511BA90B2B00E32E37 /* player_btn_trash_highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_trash_highlight@2x.png"; sourceTree = ""; }; 171 | 9C17FF521BA90B2B00E32E37 /* player_btn_trash_normal@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_btn_trash_normal@2x.png"; sourceTree = ""; }; 172 | 9C17FF531BA90B2B00E32E37 /* player_slider_playback_left@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_slider_playback_left@2x.png"; sourceTree = ""; }; 173 | 9C17FF541BA90B2B00E32E37 /* player_slider_playback_right@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_slider_playback_right@2x.png"; sourceTree = ""; }; 174 | 9C17FF551BA90B2B00E32E37 /* player_slider_playback_thumb@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "player_slider_playback_thumb@2x.png"; sourceTree = ""; }; 175 | 9C17FF931BA91A6B00E32E37 /* PlayListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayListView.swift; sourceTree = ""; }; 176 | 9C17FFEE1BA944D200E32E37 /* HttpProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpProtocol.swift; sourceTree = ""; }; 177 | 9C17FFF01BA9480600E32E37 /* Song.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Song.swift; sourceTree = ""; }; 178 | 9C17FFF21BA9543E00E32E37 /* Public.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Public.swift; sourceTree = ""; }; 179 | 9C17FFF41BA9675300E32E37 /* PlayListView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PlayListView.xib; sourceTree = ""; }; 180 | /* End PBXFileReference section */ 181 | 182 | /* Begin PBXFrameworksBuildPhase section */ 183 | 9C17FEF21BA90ACB00E32E37 /* Frameworks */ = { 184 | isa = PBXFrameworksBuildPhase; 185 | buildActionMask = 2147483647; 186 | files = ( 187 | ); 188 | runOnlyForDeploymentPostprocessing = 0; 189 | }; 190 | 9C17FF071BA90ACB00E32E37 /* Frameworks */ = { 191 | isa = PBXFrameworksBuildPhase; 192 | buildActionMask = 2147483647; 193 | files = ( 194 | ); 195 | runOnlyForDeploymentPostprocessing = 0; 196 | }; 197 | /* End PBXFrameworksBuildPhase section */ 198 | 199 | /* Begin PBXGroup section */ 200 | 9C17FEEC1BA90ACB00E32E37 = { 201 | isa = PBXGroup; 202 | children = ( 203 | 9C17FEF71BA90ACB00E32E37 /* WJQQMusic */, 204 | 9C17FF0D1BA90ACB00E32E37 /* WJQQMusicTests */, 205 | 9C17FEF61BA90ACB00E32E37 /* Products */, 206 | ); 207 | sourceTree = ""; 208 | }; 209 | 9C17FEF61BA90ACB00E32E37 /* Products */ = { 210 | isa = PBXGroup; 211 | children = ( 212 | 9C17FEF51BA90ACB00E32E37 /* WJQQMusic.app */, 213 | 9C17FF0A1BA90ACB00E32E37 /* WJQQMusicTests.xctest */, 214 | ); 215 | name = Products; 216 | sourceTree = ""; 217 | }; 218 | 9C17FEF71BA90ACB00E32E37 /* WJQQMusic */ = { 219 | isa = PBXGroup; 220 | children = ( 221 | 9C17FFED1BA944AE00E32E37 /* Class */, 222 | 9C17FF951BA91AA100E32E37 /* Model */, 223 | 9C17FF921BA91A4400E32E37 /* View */, 224 | 9C17FF911BA91A2900E32E37 /* ViewController */, 225 | 9C17FEFA1BA90ACB00E32E37 /* AppDelegate.swift */, 226 | 9C17FEFE1BA90ACB00E32E37 /* Main.storyboard */, 227 | 9C17FF011BA90ACB00E32E37 /* Images.xcassets */, 228 | 9C17FF031BA90ACB00E32E37 /* LaunchScreen.xib */, 229 | 9C17FEF81BA90ACB00E32E37 /* Supporting Files */, 230 | ); 231 | path = WJQQMusic; 232 | sourceTree = ""; 233 | }; 234 | 9C17FEF81BA90ACB00E32E37 /* Supporting Files */ = { 235 | isa = PBXGroup; 236 | children = ( 237 | 9C17FF1A1BA90B2B00E32E37 /* Resource */, 238 | 9C17FEF91BA90ACB00E32E37 /* Info.plist */, 239 | ); 240 | name = "Supporting Files"; 241 | sourceTree = ""; 242 | }; 243 | 9C17FF0D1BA90ACB00E32E37 /* WJQQMusicTests */ = { 244 | isa = PBXGroup; 245 | children = ( 246 | 9C17FF101BA90ACB00E32E37 /* WJQQMusicTests.swift */, 247 | 9C17FF0E1BA90ACB00E32E37 /* Supporting Files */, 248 | ); 249 | path = WJQQMusicTests; 250 | sourceTree = ""; 251 | }; 252 | 9C17FF0E1BA90ACB00E32E37 /* Supporting Files */ = { 253 | isa = PBXGroup; 254 | children = ( 255 | 9C17FF0F1BA90ACB00E32E37 /* Info.plist */, 256 | ); 257 | name = "Supporting Files"; 258 | sourceTree = ""; 259 | }; 260 | 9C17FF1A1BA90B2B00E32E37 /* Resource */ = { 261 | isa = PBXGroup; 262 | children = ( 263 | 9C17FF1B1BA90B2B00E32E37 /* 239780136.jpg */, 264 | 9C17FF1C1BA90B2B00E32E37 /* actionbutton@2x.png */, 265 | 9C17FF1D1BA90B2B00E32E37 /* actionIconLike@2x.png */, 266 | 9C17FF1E1BA90B2B00E32E37 /* actionIconLikeSelected@2x.png */, 267 | 9C17FF1F1BA90B2B00E32E37 /* bannerTips_topokSQ@2x.png */, 268 | 9C17FF201BA90B2B00E32E37 /* channel_song_list_play_btn@2x.png */, 269 | 9C17FF211BA90B2B00E32E37 /* channel_song_list_play_btn_h@2x.png */, 270 | 9C17FF221BA90B2B00E32E37 /* channel_songFolderList_playAll@2x.png */, 271 | 9C17FF231BA90B2B00E32E37 /* channel_songFolderList_playAll_h@2x.png */, 272 | 9C17FF241BA90B2B00E32E37 /* icon_operate_play@2x.png */, 273 | 9C17FF251BA90B2B00E32E37 /* icon_operate_play_pressed@2x.png */, 274 | 9C17FF261BA90B2B00E32E37 /* mymuisc_more@2x.png */, 275 | 9C17FF271BA90B2B00E32E37 /* nowplay_recommend_selected_cell@2x.png */, 276 | 9C17FF281BA90B2B00E32E37 /* nowplaying_playlist@2x.png */, 277 | 9C17FF291BA90B2B00E32E37 /* nowplaying_random@2x.png */, 278 | 9C17FF2A1BA90B2B00E32E37 /* nowplaying_random_h@2x.png */, 279 | 9C17FF2B1BA90B2B00E32E37 /* nowplaying_section_bg@2x.png */, 280 | 9C17FF2C1BA90B2B00E32E37 /* player_btn_download_disable@2x.png */, 281 | 9C17FF2D1BA90B2B00E32E37 /* player_btn_download_highlight@2x.png */, 282 | 9C17FF2E1BA90B2B00E32E37 /* player_btn_download_normal@2x.png */, 283 | 9C17FF2F1BA90B2B00E32E37 /* player_btn_favorite_disable@2x.png */, 284 | 9C17FF301BA90B2B00E32E37 /* player_btn_favorite_highlight@2x.png */, 285 | 9C17FF311BA90B2B00E32E37 /* player_btn_favorite_normal@2x.png */, 286 | 9C17FF321BA90B2B00E32E37 /* player_btn_favorited_highlight@2x.png */, 287 | 9C17FF331BA90B2B00E32E37 /* player_btn_favorited_normal@2x.png */, 288 | 9C17FF341BA90B2B00E32E37 /* player_btn_hq_disable@2x.png */, 289 | 9C17FF351BA90B2B00E32E37 /* player_btn_more_highlight@2x.png */, 290 | 9C17FF361BA90B2B00E32E37 /* player_btn_more_normal@2x.png */, 291 | 9C17FF371BA90B2B00E32E37 /* player_btn_next_highlight@2x.png */, 292 | 9C17FF381BA90B2B00E32E37 /* player_btn_next_normal@2x.png */, 293 | 9C17FF391BA90B2B00E32E37 /* player_btn_pause_highlight@2x.png */, 294 | 9C17FF3A1BA90B2B00E32E37 /* player_btn_pause_normal@2x.png */, 295 | 9C17FF3B1BA90B2B00E32E37 /* player_btn_play_highlight@2x.png */, 296 | 9C17FF3C1BA90B2B00E32E37 /* player_btn_play_normal@2x.png */, 297 | 9C17FF3D1BA90B2B00E32E37 /* player_btn_playlist_highlight@2x.png */, 298 | 9C17FF3E1BA90B2B00E32E37 /* player_btn_playlist_normal@2x.png */, 299 | 9C17FF3F1BA90B2B00E32E37 /* player_btn_pre_highlight@2x.png */, 300 | 9C17FF401BA90B2B00E32E37 /* player_btn_pre_normal@2x.png */, 301 | 9C17FF411BA90B2B00E32E37 /* player_btn_radio_normal@2x.png */, 302 | 9C17FF421BA90B2B00E32E37 /* player_btn_radiolist_highlight@2x.png */, 303 | 9C17FF431BA90B2B00E32E37 /* player_btn_radiolist_normal@2x.png */, 304 | 9C17FF441BA90B2B00E32E37 /* player_btn_random_disable@2x.png */, 305 | 9C17FF451BA90B2B00E32E37 /* player_btn_random_highlight@2x.png */, 306 | 9C17FF461BA90B2B00E32E37 /* player_btn_random_normal@2x.png */, 307 | 9C17FF471BA90B2B00E32E37 /* player_btn_repeat_disable@2x.png */, 308 | 9C17FF481BA90B2B00E32E37 /* player_btn_repeat_highlight@2x.png */, 309 | 9C17FF491BA90B2B00E32E37 /* player_btn_repeat_normal@2x.png */, 310 | 9C17FF4A1BA90B2B00E32E37 /* player_btn_repeatone_disable@2x.png */, 311 | 9C17FF4B1BA90B2B00E32E37 /* player_btn_repeatone_highlight@2x.png */, 312 | 9C17FF4C1BA90B2B00E32E37 /* player_btn_repeatone_normal@2x.png */, 313 | 9C17FF4D1BA90B2B00E32E37 /* player_btn_share_disable@2x.png */, 314 | 9C17FF4E1BA90B2B00E32E37 /* player_btn_share_highlight@2x.png */, 315 | 9C17FF4F1BA90B2B00E32E37 /* player_btn_share_normal@2x.png */, 316 | 9C17FF501BA90B2B00E32E37 /* player_btn_sq_disable@2x.png */, 317 | 9C17FF511BA90B2B00E32E37 /* player_btn_trash_highlight@2x.png */, 318 | 9C17FF521BA90B2B00E32E37 /* player_btn_trash_normal@2x.png */, 319 | 9C17FF531BA90B2B00E32E37 /* player_slider_playback_left@2x.png */, 320 | 9C17FF541BA90B2B00E32E37 /* player_slider_playback_right@2x.png */, 321 | 9C17FF551BA90B2B00E32E37 /* player_slider_playback_thumb@2x.png */, 322 | ); 323 | path = Resource; 324 | sourceTree = ""; 325 | }; 326 | 9C17FF911BA91A2900E32E37 /* ViewController */ = { 327 | isa = PBXGroup; 328 | children = ( 329 | 9C17FEFC1BA90ACB00E32E37 /* ViewController.swift */, 330 | ); 331 | name = ViewController; 332 | sourceTree = ""; 333 | }; 334 | 9C17FF921BA91A4400E32E37 /* View */ = { 335 | isa = PBXGroup; 336 | children = ( 337 | 9C17FF931BA91A6B00E32E37 /* PlayListView.swift */, 338 | 9C17FFF41BA9675300E32E37 /* PlayListView.xib */, 339 | ); 340 | name = View; 341 | sourceTree = ""; 342 | }; 343 | 9C17FF951BA91AA100E32E37 /* Model */ = { 344 | isa = PBXGroup; 345 | children = ( 346 | 9C17FFF01BA9480600E32E37 /* Song.swift */, 347 | ); 348 | name = Model; 349 | sourceTree = ""; 350 | }; 351 | 9C17FFED1BA944AE00E32E37 /* Class */ = { 352 | isa = PBXGroup; 353 | children = ( 354 | 9C17FFEE1BA944D200E32E37 /* HttpProtocol.swift */, 355 | 9C17FFF21BA9543E00E32E37 /* Public.swift */, 356 | ); 357 | name = Class; 358 | sourceTree = ""; 359 | }; 360 | /* End PBXGroup section */ 361 | 362 | /* Begin PBXNativeTarget section */ 363 | 9C17FEF41BA90ACB00E32E37 /* WJQQMusic */ = { 364 | isa = PBXNativeTarget; 365 | buildConfigurationList = 9C17FF141BA90ACB00E32E37 /* Build configuration list for PBXNativeTarget "WJQQMusic" */; 366 | buildPhases = ( 367 | 9C17FEF11BA90ACB00E32E37 /* Sources */, 368 | 9C17FEF21BA90ACB00E32E37 /* Frameworks */, 369 | 9C17FEF31BA90ACB00E32E37 /* Resources */, 370 | 9C17FFC21BA9415A00E32E37 /* Embed Frameworks */, 371 | ); 372 | buildRules = ( 373 | ); 374 | dependencies = ( 375 | ); 376 | name = WJQQMusic; 377 | productName = WJQQMusic; 378 | productReference = 9C17FEF51BA90ACB00E32E37 /* WJQQMusic.app */; 379 | productType = "com.apple.product-type.application"; 380 | }; 381 | 9C17FF091BA90ACB00E32E37 /* WJQQMusicTests */ = { 382 | isa = PBXNativeTarget; 383 | buildConfigurationList = 9C17FF171BA90ACB00E32E37 /* Build configuration list for PBXNativeTarget "WJQQMusicTests" */; 384 | buildPhases = ( 385 | 9C17FF061BA90ACB00E32E37 /* Sources */, 386 | 9C17FF071BA90ACB00E32E37 /* Frameworks */, 387 | 9C17FF081BA90ACB00E32E37 /* Resources */, 388 | ); 389 | buildRules = ( 390 | ); 391 | dependencies = ( 392 | 9C17FF0C1BA90ACB00E32E37 /* PBXTargetDependency */, 393 | ); 394 | name = WJQQMusicTests; 395 | productName = WJQQMusicTests; 396 | productReference = 9C17FF0A1BA90ACB00E32E37 /* WJQQMusicTests.xctest */; 397 | productType = "com.apple.product-type.bundle.unit-test"; 398 | }; 399 | /* End PBXNativeTarget section */ 400 | 401 | /* Begin PBXProject section */ 402 | 9C17FEED1BA90ACB00E32E37 /* Project object */ = { 403 | isa = PBXProject; 404 | attributes = { 405 | LastUpgradeCheck = 0640; 406 | ORGANIZATIONNAME = WJ; 407 | TargetAttributes = { 408 | 9C17FEF41BA90ACB00E32E37 = { 409 | CreatedOnToolsVersion = 6.4; 410 | }; 411 | 9C17FF091BA90ACB00E32E37 = { 412 | CreatedOnToolsVersion = 6.4; 413 | TestTargetID = 9C17FEF41BA90ACB00E32E37; 414 | }; 415 | }; 416 | }; 417 | buildConfigurationList = 9C17FEF01BA90ACB00E32E37 /* Build configuration list for PBXProject "WJQQMusic" */; 418 | compatibilityVersion = "Xcode 3.2"; 419 | developmentRegion = English; 420 | hasScannedForEncodings = 0; 421 | knownRegions = ( 422 | en, 423 | Base, 424 | ); 425 | mainGroup = 9C17FEEC1BA90ACB00E32E37; 426 | productRefGroup = 9C17FEF61BA90ACB00E32E37 /* Products */; 427 | projectDirPath = ""; 428 | projectRoot = ""; 429 | targets = ( 430 | 9C17FEF41BA90ACB00E32E37 /* WJQQMusic */, 431 | 9C17FF091BA90ACB00E32E37 /* WJQQMusicTests */, 432 | ); 433 | }; 434 | /* End PBXProject section */ 435 | 436 | /* Begin PBXResourcesBuildPhase section */ 437 | 9C17FEF31BA90ACB00E32E37 /* Resources */ = { 438 | isa = PBXResourcesBuildPhase; 439 | buildActionMask = 2147483647; 440 | files = ( 441 | 9C17FF611BA90B2B00E32E37 /* mymuisc_more@2x.png in Resources */, 442 | 9C17FF581BA90B2B00E32E37 /* actionIconLike@2x.png in Resources */, 443 | 9C17FF841BA90B2B00E32E37 /* player_btn_repeat_normal@2x.png in Resources */, 444 | 9C17FF631BA90B2B00E32E37 /* nowplaying_playlist@2x.png in Resources */, 445 | 9C17FF571BA90B2B00E32E37 /* actionbutton@2x.png in Resources */, 446 | 9C17FFF51BA9675300E32E37 /* PlayListView.xib in Resources */, 447 | 9C17FF721BA90B2B00E32E37 /* player_btn_next_highlight@2x.png in Resources */, 448 | 9C17FF811BA90B2B00E32E37 /* player_btn_random_normal@2x.png in Resources */, 449 | 9C17FF8D1BA90B2B00E32E37 /* player_btn_trash_normal@2x.png in Resources */, 450 | 9C17FF7E1BA90B2B00E32E37 /* player_btn_radiolist_normal@2x.png in Resources */, 451 | 9C17FF7F1BA90B2B00E32E37 /* player_btn_random_disable@2x.png in Resources */, 452 | 9C17FF001BA90ACB00E32E37 /* Main.storyboard in Resources */, 453 | 9C17FF8F1BA90B2B00E32E37 /* player_slider_playback_right@2x.png in Resources */, 454 | 9C17FF6A1BA90B2B00E32E37 /* player_btn_favorite_disable@2x.png in Resources */, 455 | 9C17FF641BA90B2B00E32E37 /* nowplaying_random@2x.png in Resources */, 456 | 9C17FF801BA90B2B00E32E37 /* player_btn_random_highlight@2x.png in Resources */, 457 | 9C17FF831BA90B2B00E32E37 /* player_btn_repeat_highlight@2x.png in Resources */, 458 | 9C17FF5C1BA90B2B00E32E37 /* channel_song_list_play_btn_h@2x.png in Resources */, 459 | 9C17FF5E1BA90B2B00E32E37 /* channel_songFolderList_playAll_h@2x.png in Resources */, 460 | 9C17FF741BA90B2B00E32E37 /* player_btn_pause_highlight@2x.png in Resources */, 461 | 9C17FF791BA90B2B00E32E37 /* player_btn_playlist_normal@2x.png in Resources */, 462 | 9C17FF751BA90B2B00E32E37 /* player_btn_pause_normal@2x.png in Resources */, 463 | 9C17FF691BA90B2B00E32E37 /* player_btn_download_normal@2x.png in Resources */, 464 | 9C17FF591BA90B2B00E32E37 /* actionIconLikeSelected@2x.png in Resources */, 465 | 9C17FF8A1BA90B2B00E32E37 /* player_btn_share_normal@2x.png in Resources */, 466 | 9C17FF5A1BA90B2B00E32E37 /* bannerTips_topokSQ@2x.png in Resources */, 467 | 9C17FF051BA90ACB00E32E37 /* LaunchScreen.xib in Resources */, 468 | 9C17FF6C1BA90B2B00E32E37 /* player_btn_favorite_normal@2x.png in Resources */, 469 | 9C17FF731BA90B2B00E32E37 /* player_btn_next_normal@2x.png in Resources */, 470 | 9C17FF6B1BA90B2B00E32E37 /* player_btn_favorite_highlight@2x.png in Resources */, 471 | 9C17FF651BA90B2B00E32E37 /* nowplaying_random_h@2x.png in Resources */, 472 | 9C17FF701BA90B2B00E32E37 /* player_btn_more_highlight@2x.png in Resources */, 473 | 9C17FF8E1BA90B2B00E32E37 /* player_slider_playback_left@2x.png in Resources */, 474 | 9C17FF901BA90B2B00E32E37 /* player_slider_playback_thumb@2x.png in Resources */, 475 | 9C17FF5B1BA90B2B00E32E37 /* channel_song_list_play_btn@2x.png in Resources */, 476 | 9C17FF8B1BA90B2B00E32E37 /* player_btn_sq_disable@2x.png in Resources */, 477 | 9C17FF871BA90B2B00E32E37 /* player_btn_repeatone_normal@2x.png in Resources */, 478 | 9C17FF851BA90B2B00E32E37 /* player_btn_repeatone_disable@2x.png in Resources */, 479 | 9C17FF021BA90ACB00E32E37 /* Images.xcassets in Resources */, 480 | 9C17FF891BA90B2B00E32E37 /* player_btn_share_highlight@2x.png in Resources */, 481 | 9C17FF7B1BA90B2B00E32E37 /* player_btn_pre_normal@2x.png in Resources */, 482 | 9C17FF711BA90B2B00E32E37 /* player_btn_more_normal@2x.png in Resources */, 483 | 9C17FF7A1BA90B2B00E32E37 /* player_btn_pre_highlight@2x.png in Resources */, 484 | 9C17FF5F1BA90B2B00E32E37 /* icon_operate_play@2x.png in Resources */, 485 | 9C17FF821BA90B2B00E32E37 /* player_btn_repeat_disable@2x.png in Resources */, 486 | 9C17FF881BA90B2B00E32E37 /* player_btn_share_disable@2x.png in Resources */, 487 | 9C17FF6F1BA90B2B00E32E37 /* player_btn_hq_disable@2x.png in Resources */, 488 | 9C17FF761BA90B2B00E32E37 /* player_btn_play_highlight@2x.png in Resources */, 489 | 9C17FF681BA90B2B00E32E37 /* player_btn_download_highlight@2x.png in Resources */, 490 | 9C17FF861BA90B2B00E32E37 /* player_btn_repeatone_highlight@2x.png in Resources */, 491 | 9C17FF6D1BA90B2B00E32E37 /* player_btn_favorited_highlight@2x.png in Resources */, 492 | 9C17FF7D1BA90B2B00E32E37 /* player_btn_radiolist_highlight@2x.png in Resources */, 493 | 9C17FF5D1BA90B2B00E32E37 /* channel_songFolderList_playAll@2x.png in Resources */, 494 | 9C17FF771BA90B2B00E32E37 /* player_btn_play_normal@2x.png in Resources */, 495 | 9C17FF6E1BA90B2B00E32E37 /* player_btn_favorited_normal@2x.png in Resources */, 496 | 9C17FF621BA90B2B00E32E37 /* nowplay_recommend_selected_cell@2x.png in Resources */, 497 | 9C17FF671BA90B2B00E32E37 /* player_btn_download_disable@2x.png in Resources */, 498 | 9C17FF7C1BA90B2B00E32E37 /* player_btn_radio_normal@2x.png in Resources */, 499 | 9C17FF661BA90B2B00E32E37 /* nowplaying_section_bg@2x.png in Resources */, 500 | 9C17FF8C1BA90B2B00E32E37 /* player_btn_trash_highlight@2x.png in Resources */, 501 | 9C17FF781BA90B2B00E32E37 /* player_btn_playlist_highlight@2x.png in Resources */, 502 | 9C17FF601BA90B2B00E32E37 /* icon_operate_play_pressed@2x.png in Resources */, 503 | 9C17FF561BA90B2B00E32E37 /* 239780136.jpg in Resources */, 504 | ); 505 | runOnlyForDeploymentPostprocessing = 0; 506 | }; 507 | 9C17FF081BA90ACB00E32E37 /* Resources */ = { 508 | isa = PBXResourcesBuildPhase; 509 | buildActionMask = 2147483647; 510 | files = ( 511 | ); 512 | runOnlyForDeploymentPostprocessing = 0; 513 | }; 514 | /* End PBXResourcesBuildPhase section */ 515 | 516 | /* Begin PBXSourcesBuildPhase section */ 517 | 9C17FEF11BA90ACB00E32E37 /* Sources */ = { 518 | isa = PBXSourcesBuildPhase; 519 | buildActionMask = 2147483647; 520 | files = ( 521 | 9C17FF941BA91A6B00E32E37 /* PlayListView.swift in Sources */, 522 | 9C17FEFD1BA90ACB00E32E37 /* ViewController.swift in Sources */, 523 | 9C17FFF31BA9543E00E32E37 /* Public.swift in Sources */, 524 | 9C17FEFB1BA90ACB00E32E37 /* AppDelegate.swift in Sources */, 525 | 9C17FFEF1BA944D200E32E37 /* HttpProtocol.swift in Sources */, 526 | 9C17FFF11BA9480600E32E37 /* Song.swift in Sources */, 527 | ); 528 | runOnlyForDeploymentPostprocessing = 0; 529 | }; 530 | 9C17FF061BA90ACB00E32E37 /* Sources */ = { 531 | isa = PBXSourcesBuildPhase; 532 | buildActionMask = 2147483647; 533 | files = ( 534 | 9C17FF111BA90ACB00E32E37 /* WJQQMusicTests.swift in Sources */, 535 | ); 536 | runOnlyForDeploymentPostprocessing = 0; 537 | }; 538 | /* End PBXSourcesBuildPhase section */ 539 | 540 | /* Begin PBXTargetDependency section */ 541 | 9C17FF0C1BA90ACB00E32E37 /* PBXTargetDependency */ = { 542 | isa = PBXTargetDependency; 543 | target = 9C17FEF41BA90ACB00E32E37 /* WJQQMusic */; 544 | targetProxy = 9C17FF0B1BA90ACB00E32E37 /* PBXContainerItemProxy */; 545 | }; 546 | /* End PBXTargetDependency section */ 547 | 548 | /* Begin PBXVariantGroup section */ 549 | 9C17FEFE1BA90ACB00E32E37 /* Main.storyboard */ = { 550 | isa = PBXVariantGroup; 551 | children = ( 552 | 9C17FEFF1BA90ACB00E32E37 /* Base */, 553 | ); 554 | name = Main.storyboard; 555 | sourceTree = ""; 556 | }; 557 | 9C17FF031BA90ACB00E32E37 /* LaunchScreen.xib */ = { 558 | isa = PBXVariantGroup; 559 | children = ( 560 | 9C17FF041BA90ACB00E32E37 /* Base */, 561 | ); 562 | name = LaunchScreen.xib; 563 | sourceTree = ""; 564 | }; 565 | /* End PBXVariantGroup section */ 566 | 567 | /* Begin XCBuildConfiguration section */ 568 | 9C17FF121BA90ACB00E32E37 /* Debug */ = { 569 | isa = XCBuildConfiguration; 570 | buildSettings = { 571 | ALWAYS_SEARCH_USER_PATHS = NO; 572 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 573 | CLANG_CXX_LIBRARY = "libc++"; 574 | CLANG_ENABLE_MODULES = YES; 575 | CLANG_ENABLE_OBJC_ARC = YES; 576 | CLANG_WARN_BOOL_CONVERSION = YES; 577 | CLANG_WARN_CONSTANT_CONVERSION = YES; 578 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 579 | CLANG_WARN_EMPTY_BODY = YES; 580 | CLANG_WARN_ENUM_CONVERSION = YES; 581 | CLANG_WARN_INT_CONVERSION = YES; 582 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 583 | CLANG_WARN_UNREACHABLE_CODE = YES; 584 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 585 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 586 | COPY_PHASE_STRIP = NO; 587 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 588 | ENABLE_STRICT_OBJC_MSGSEND = YES; 589 | GCC_C_LANGUAGE_STANDARD = gnu99; 590 | GCC_DYNAMIC_NO_PIC = NO; 591 | GCC_NO_COMMON_BLOCKS = YES; 592 | GCC_OPTIMIZATION_LEVEL = 0; 593 | GCC_PREPROCESSOR_DEFINITIONS = ( 594 | "DEBUG=1", 595 | "$(inherited)", 596 | ); 597 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 598 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 599 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 600 | GCC_WARN_UNDECLARED_SELECTOR = YES; 601 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 602 | GCC_WARN_UNUSED_FUNCTION = YES; 603 | GCC_WARN_UNUSED_VARIABLE = YES; 604 | IPHONEOS_DEPLOYMENT_TARGET = 8.4; 605 | MTL_ENABLE_DEBUG_INFO = YES; 606 | ONLY_ACTIVE_ARCH = YES; 607 | SDKROOT = iphoneos; 608 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 609 | }; 610 | name = Debug; 611 | }; 612 | 9C17FF131BA90ACB00E32E37 /* Release */ = { 613 | isa = XCBuildConfiguration; 614 | buildSettings = { 615 | ALWAYS_SEARCH_USER_PATHS = NO; 616 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 617 | CLANG_CXX_LIBRARY = "libc++"; 618 | CLANG_ENABLE_MODULES = YES; 619 | CLANG_ENABLE_OBJC_ARC = YES; 620 | CLANG_WARN_BOOL_CONVERSION = YES; 621 | CLANG_WARN_CONSTANT_CONVERSION = YES; 622 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 623 | CLANG_WARN_EMPTY_BODY = YES; 624 | CLANG_WARN_ENUM_CONVERSION = YES; 625 | CLANG_WARN_INT_CONVERSION = YES; 626 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 627 | CLANG_WARN_UNREACHABLE_CODE = YES; 628 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 629 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 630 | COPY_PHASE_STRIP = NO; 631 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 632 | ENABLE_NS_ASSERTIONS = NO; 633 | ENABLE_STRICT_OBJC_MSGSEND = YES; 634 | GCC_C_LANGUAGE_STANDARD = gnu99; 635 | GCC_NO_COMMON_BLOCKS = YES; 636 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 637 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 638 | GCC_WARN_UNDECLARED_SELECTOR = YES; 639 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 640 | GCC_WARN_UNUSED_FUNCTION = YES; 641 | GCC_WARN_UNUSED_VARIABLE = YES; 642 | IPHONEOS_DEPLOYMENT_TARGET = 8.4; 643 | MTL_ENABLE_DEBUG_INFO = NO; 644 | SDKROOT = iphoneos; 645 | VALIDATE_PRODUCT = YES; 646 | }; 647 | name = Release; 648 | }; 649 | 9C17FF151BA90ACB00E32E37 /* Debug */ = { 650 | isa = XCBuildConfiguration; 651 | buildSettings = { 652 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 653 | INFOPLIST_FILE = WJQQMusic/Info.plist; 654 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 655 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 656 | PRODUCT_NAME = "$(TARGET_NAME)"; 657 | }; 658 | name = Debug; 659 | }; 660 | 9C17FF161BA90ACB00E32E37 /* Release */ = { 661 | isa = XCBuildConfiguration; 662 | buildSettings = { 663 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 664 | INFOPLIST_FILE = WJQQMusic/Info.plist; 665 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 666 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 667 | PRODUCT_NAME = "$(TARGET_NAME)"; 668 | }; 669 | name = Release; 670 | }; 671 | 9C17FF181BA90ACB00E32E37 /* Debug */ = { 672 | isa = XCBuildConfiguration; 673 | buildSettings = { 674 | BUNDLE_LOADER = "$(TEST_HOST)"; 675 | FRAMEWORK_SEARCH_PATHS = ( 676 | "$(SDKROOT)/Developer/Library/Frameworks", 677 | "$(inherited)", 678 | ); 679 | GCC_PREPROCESSOR_DEFINITIONS = ( 680 | "DEBUG=1", 681 | "$(inherited)", 682 | ); 683 | INFOPLIST_FILE = WJQQMusicTests/Info.plist; 684 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 685 | PRODUCT_NAME = "$(TARGET_NAME)"; 686 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WJQQMusic.app/WJQQMusic"; 687 | }; 688 | name = Debug; 689 | }; 690 | 9C17FF191BA90ACB00E32E37 /* Release */ = { 691 | isa = XCBuildConfiguration; 692 | buildSettings = { 693 | BUNDLE_LOADER = "$(TEST_HOST)"; 694 | FRAMEWORK_SEARCH_PATHS = ( 695 | "$(SDKROOT)/Developer/Library/Frameworks", 696 | "$(inherited)", 697 | ); 698 | INFOPLIST_FILE = WJQQMusicTests/Info.plist; 699 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 700 | PRODUCT_NAME = "$(TARGET_NAME)"; 701 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WJQQMusic.app/WJQQMusic"; 702 | }; 703 | name = Release; 704 | }; 705 | /* End XCBuildConfiguration section */ 706 | 707 | /* Begin XCConfigurationList section */ 708 | 9C17FEF01BA90ACB00E32E37 /* Build configuration list for PBXProject "WJQQMusic" */ = { 709 | isa = XCConfigurationList; 710 | buildConfigurations = ( 711 | 9C17FF121BA90ACB00E32E37 /* Debug */, 712 | 9C17FF131BA90ACB00E32E37 /* Release */, 713 | ); 714 | defaultConfigurationIsVisible = 0; 715 | defaultConfigurationName = Release; 716 | }; 717 | 9C17FF141BA90ACB00E32E37 /* Build configuration list for PBXNativeTarget "WJQQMusic" */ = { 718 | isa = XCConfigurationList; 719 | buildConfigurations = ( 720 | 9C17FF151BA90ACB00E32E37 /* Debug */, 721 | 9C17FF161BA90ACB00E32E37 /* Release */, 722 | ); 723 | defaultConfigurationIsVisible = 0; 724 | defaultConfigurationName = Release; 725 | }; 726 | 9C17FF171BA90ACB00E32E37 /* Build configuration list for PBXNativeTarget "WJQQMusicTests" */ = { 727 | isa = XCConfigurationList; 728 | buildConfigurations = ( 729 | 9C17FF181BA90ACB00E32E37 /* Debug */, 730 | 9C17FF191BA90ACB00E32E37 /* Release */, 731 | ); 732 | defaultConfigurationIsVisible = 0; 733 | defaultConfigurationName = Release; 734 | }; 735 | /* End XCConfigurationList section */ 736 | }; 737 | rootObject = 9C17FEED1BA90ACB00E32E37 /* Project object */; 738 | } 739 | -------------------------------------------------------------------------------- /WJQQMusic.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /WJQQMusic/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // WJQQMusic 4 | // 5 | // Created by jh navi on 15/9/16. 6 | // Copyright (c) 2015年 WJ. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(application: UIApplication) { 33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /WJQQMusic/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 20 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /WJQQMusic/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 44 | 50 | 51 | 52 | 53 | 63 | 73 | 83 | 89 | 90 | 91 | 92 | 98 | 104 | 110 | 116 | 122 | 131 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | -------------------------------------------------------------------------------- /WJQQMusic/HttpProtocol.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HttpProtocol.swift 3 | // WJQQMusic 4 | // 5 | // Created by jh navi on 15/9/16. 6 | // Copyright (c) 2015年 WJ. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | protocol HttpProtocol { 12 | func didRecieveResults(results: NSDictionary) 13 | } 14 | 15 | class HttpController: NSObject { 16 | var delegate: HttpProtocol? 17 | func onSearch(url: String) { 18 | NSLog("请求地址:%@", url) 19 | var nsUrl: NSURL = NSURL(string: url)! 20 | var request: NSURLRequest = NSURLRequest(URL: nsUrl) 21 | NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: { 22 | (response: NSURLResponse!,data: NSData!,error: NSError!) -> Void in 23 | if data != nil { 24 | var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary 25 | self.delegate?.didRecieveResults(jsonResult) 26 | } 27 | }) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /WJQQMusic/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /WJQQMusic/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | WJ.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /WJQQMusic/PlayListView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PlayListView.swift 3 | // WJQQMusic 4 | // 5 | // Created by jh navi on 15/9/16. 6 | // Copyright (c) 2015年 WJ. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class PlayListView: UIView,UITableViewDataSource,UITableViewDelegate { 12 | 13 | @IBOutlet weak var viewBackground: UIView! 14 | @IBOutlet weak var viewContent: UIView! 15 | @IBOutlet weak var tableView: UITableView! 16 | 17 | var tableData:NSArray=NSArray()//列表数据 18 | var viewContorller:ViewController=ViewController()//父控制器 19 | 20 | 21 | //显示 22 | func showPlayListView(){ 23 | UIApplication.sharedApplication().keyWindow?.addSubview(self) 24 | //动画从下向上进入 25 | var vbFrame:CGRect = self.viewBackground.frame 26 | vbFrame.origin.y=vbFrame.origin.y+vbFrame.size.height 27 | self.viewBackground.frame=vbFrame 28 | UIView.animateWithDuration(0.15, animations: { () -> Void in 29 | var vbFrame:CGRect = self.viewBackground.frame 30 | vbFrame.origin.y=vbFrame.origin.y-vbFrame.size.height 31 | self.viewBackground.frame=vbFrame 32 | //背景加模糊特效 33 | let blurEffect=UIBlurEffect(style: UIBlurEffectStyle.Dark) 34 | let blureView=UIVisualEffectView(effect: blurEffect) 35 | blureView.frame = self.viewBackground.frame; 36 | self.viewBackground=blureView 37 | }); 38 | } 39 | 40 | //关闭 41 | @IBAction func closePlayListView(sender: AnyObject) { 42 | self.removeFromSuperview() 43 | } 44 | 45 | /** 46 | * UITableViewDelegate 47 | **/ 48 | 49 | func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 50 | NSLog("tableData = %@", tableData) 51 | return tableData.count 52 | } 53 | func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 54 | //定义cell 55 | let cell=UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "douban") 56 | cell.backgroundColor=UIColor.clearColor() 57 | //当前行数据 58 | let rowSong:Song=self.tableData[indexPath.row] as! Song 59 | //行显示内容 60 | cell.textLabel?.text = rowSong.title as String 61 | cell.textLabel?.font=UIFont(name: "宋体", size: 14.0) 62 | if indexPath.row == self.viewContorller.currentIndex { 63 | cell.textLabel?.textColor = UIColor.greenColor() 64 | }else{ 65 | cell.textLabel?.textColor=UIColor.whiteColor() 66 | } 67 | cell.detailTextLabel?.text=rowSong.artist as String 68 | cell.detailTextLabel?.font=UIFont(name:"宋体", size: 8.0) 69 | return cell; 70 | } 71 | func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 72 | let rowSong:Song=self.tableData[indexPath.row] as! Song 73 | viewContorller.setMyCurrentSong(rowSong) 74 | self.removeFromSuperview() 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /WJQQMusic/PlayListView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 40 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /WJQQMusic/Public.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Public.swift 3 | // WJQQMusic 4 | // 5 | // Created by jh navi on 15/9/16. 6 | // Copyright (c) 2015年 WJ. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | /** 12 | *获取网络图片 13 | */ 14 | 15 | func getImageWithUrl(urlString:NSString)->UIImage{ 16 | //var url : NSURL = NSURL(string:urlString)! 17 | var strUrl: String = urlString as! String 18 | var url: NSURL = NSURL(string: strUrl)! 19 | var data : NSData = NSData(contentsOfURL:url)! 20 | var image : UIImage = UIImage(data:data, scale: 1.0)! 21 | return image 22 | } 23 | -------------------------------------------------------------------------------- /WJQQMusic/Resource/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/.DS_Store -------------------------------------------------------------------------------- /WJQQMusic/Resource/239780136.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/239780136.jpg -------------------------------------------------------------------------------- /WJQQMusic/Resource/actionIconLike@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/actionIconLike@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/actionIconLikeSelected@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/actionIconLikeSelected@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/actionbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/actionbutton@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/bannerTips_topokSQ@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/bannerTips_topokSQ@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/channel_songFolderList_playAll@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/channel_songFolderList_playAll@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/channel_songFolderList_playAll_h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/channel_songFolderList_playAll_h@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/channel_song_list_play_btn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/channel_song_list_play_btn@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/channel_song_list_play_btn_h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/channel_song_list_play_btn_h@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/icon_operate_play@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/icon_operate_play@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/icon_operate_play_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/icon_operate_play_pressed@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/mymuisc_more@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/mymuisc_more@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/nowplay_recommend_selected_cell@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/nowplay_recommend_selected_cell@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/nowplaying_playlist@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/nowplaying_playlist@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/nowplaying_random@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/nowplaying_random@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/nowplaying_random_h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/nowplaying_random_h@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/nowplaying_section_bg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/nowplaying_section_bg@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_download_disable@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_download_disable@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_download_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_download_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_download_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_download_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_favorite_disable@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_favorite_disable@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_favorite_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_favorite_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_favorite_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_favorite_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_favorited_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_favorited_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_favorited_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_favorited_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_hq_disable@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_hq_disable@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_more_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_more_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_more_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_more_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_next_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_next_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_next_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_next_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_pause_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_pause_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_pause_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_pause_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_play_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_play_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_play_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_play_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_playlist_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_playlist_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_playlist_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_playlist_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_pre_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_pre_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_pre_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_pre_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_radio_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_radio_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_radiolist_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_radiolist_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_radiolist_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_radiolist_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_random_disable@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_random_disable@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_random_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_random_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_random_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_random_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_repeat_disable@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_repeat_disable@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_repeat_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_repeat_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_repeat_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_repeat_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_repeatone_disable@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_repeatone_disable@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_repeatone_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_repeatone_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_repeatone_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_repeatone_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_share_disable@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_share_disable@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_share_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_share_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_share_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_share_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_sq_disable@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_sq_disable@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_trash_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_trash_highlight@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_btn_trash_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_btn_trash_normal@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_slider_playback_left@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_slider_playback_left@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_slider_playback_right@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_slider_playback_right@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Resource/player_slider_playback_thumb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/WJQQMusic/Resource/player_slider_playback_thumb@2x.png -------------------------------------------------------------------------------- /WJQQMusic/Song.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Song.swift 3 | // WJQQMusic 4 | // 5 | // Created by jh navi on 15/9/16. 6 | // Copyright (c) 2015年 WJ. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import Foundation 11 | 12 | class Song: NSObject { 13 | // var adtype:NSNumber = 0.0 14 | var aid:NSString = "" 15 | var album:NSString = "" 16 | var albumtitle:NSString = "" 17 | var alert_msg: NSString = "" 18 | var artist:NSString = "" 19 | // var company:NSString = "" 20 | var file_ext:NSString = "" 21 | var kbps:NSNumber = 0.0 22 | var length:NSNumber = 0.0 23 | var like:NSNumber = 0.0 24 | // var monitor_url:NSString = "" 25 | var picture:NSString = "" 26 | // var public_time:NSString = "" 27 | // var rating_avg:NSString = "" 28 | var sha256:NSString = "" 29 | var sid:NSString = "" 30 | // var songlists_count:NSNumber = 0.0 31 | var singers:[NSDictionary] = [] 32 | var ssid:NSString = "" 33 | var status:NSString = "" 34 | var subtype:NSString = "" 35 | var title:NSString = "" 36 | var url:NSString = "" 37 | var ver:NSNumber = 0.0 38 | 39 | } 40 | -------------------------------------------------------------------------------- /WJQQMusic/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // WJQQMusic 4 | // 5 | // Created by jh navi on 15/9/16. 6 | // Copyright (c) 2015年 WJ. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import MediaPlayer 11 | import QuartzCore 12 | 13 | class ViewController: UIViewController,HttpProtocol { 14 | 15 | 16 | @IBOutlet weak var backgroundImageView: UIImageView! 17 | @IBOutlet weak var photoBorderView: UIView! 18 | @IBOutlet weak var photo: UIImageView! 19 | @IBOutlet weak var titleLabel: UILabel! 20 | @IBOutlet weak var artistLabel: UILabel! 21 | @IBOutlet weak var progressSlider: UISlider! 22 | @IBOutlet weak var playButton: UIButton! 23 | @IBOutlet weak var playTimeLabel: UILabel! 24 | @IBOutlet weak var allTimeLabel: UILabel! 25 | 26 | var eHttp:HttpController = HttpController() 27 | var tableData:NSArray = NSArray() 28 | var currentSong:Song = Song() 29 | var currentIndex: Int = 0 30 | var audioPlayer:MPMoviePlayerController=MPMoviePlayerController() 31 | var timer:NSTimer? 32 | 33 | 34 | override func viewDidLoad() { 35 | super.viewDidLoad() 36 | // Do any additional setup after loading the view, typically from a nib. 37 | //将图像变圆形 38 | photo.layer.cornerRadius = self.photo.frame.size.width/2 39 | photo.clipsToBounds = true 40 | photoBorderView.layer.cornerRadius = self.photoBorderView.frame.size.width/2 41 | photoBorderView.clipsToBounds = true 42 | //模糊效果 43 | let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark) 44 | let blurView = UIVisualEffectView(effect: blurEffect) 45 | blurView.frame = self.view.frame 46 | backgroundImageView.addSubview(blurView) 47 | //设置slider图标 48 | progressSlider.setMinimumTrackImage(UIImage(named: "player_slider_playback_left.png"), forState: UIControlState.Normal) 49 | progressSlider.setMaximumTrackImage(UIImage(named: "player_slider_playback_right.png"), forState: UIControlState.Normal) 50 | progressSlider.setThumbImage(UIImage(named: "player_slider_playback_thumb.png"), forState: UIControlState.Normal) 51 | 52 | // rotationAnimation() 53 | 54 | //请求网络数据 55 | eHttp.delegate=self 56 | eHttp.onSearch("http://douban.fm/j/mine/playlist?channel=1")//华语 57 | } 58 | 59 | //图片旋转动画 60 | func rotationAnimation(){ 61 | let rotation=CABasicAnimation(keyPath: "transform.rotation.z") 62 | rotation.timingFunction=CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) 63 | rotation.toValue=2*M_PI 64 | rotation.duration=16 65 | rotation.repeatCount=HUGE 66 | rotation.autoreverses=false 67 | photo.layer.addAnimation(rotation, forKey: "rotationAnimation") 68 | pauseLayer(photo.layer) 69 | } 70 | 71 | //停止Layer上面的动画 72 | func pauseLayer(layer:CALayer){ 73 | var pausedTime:CFTimeInterval=layer.convertTime(CACurrentMediaTime(), fromLayer: nil) 74 | layer.speed=0.0 75 | layer.timeOffset=pausedTime 76 | } 77 | 78 | //继续Layer上面的动画 79 | func resumeLayer(layer:CALayer){ 80 | var pausedTime:CFTimeInterval = layer.timeOffset 81 | layer.speed=1.0 82 | layer.timeOffset=0.0 83 | layer.beginTime=0.0 84 | var timeSincePause:CFTimeInterval=layer.convertTime(CACurrentMediaTime(), fromLayer: nil)-pausedTime 85 | layer.beginTime=timeSincePause 86 | } 87 | 88 | 89 | 90 | @IBAction func showPlayList(sender: UIButton) { 91 | var playList: PlayListView = NSBundle.mainBundle().loadNibNamed("PlayListView", owner: self, options: nil).last as! PlayListView 92 | playList.tableData=self.tableData 93 | playList.viewContorller=self 94 | playList.showPlayListView() 95 | } 96 | 97 | //请求网络数据结果 98 | func didRecieveResults(results:NSDictionary){ 99 | NSLog("请求到的数据:%@", results) 100 | if (results["song"] != nil) { 101 | let resultData:NSArray = results["song"] as! NSArray 102 | NSLog("resultData = %@", resultData) 103 | let list:NSMutableArray = NSMutableArray() 104 | 105 | for(var index:Int=0;index 0 { 161 | currentIndex-- 162 | } 163 | currentSong = tableData.objectAtIndex(currentIndex) as! Song 164 | setMyCurrentSong(currentSong) 165 | } 166 | 167 | 168 | //下一曲 169 | @IBAction func nextSongClick(sender: UIButton) { 170 | NSLog("下一曲") 171 | if currentIndex < tableData.count { 172 | currentIndex++ 173 | } 174 | currentSong = tableData.objectAtIndex(currentIndex) as! Song 175 | setMyCurrentSong(currentSong) 176 | } 177 | 178 | //更新播放时间 179 | func updateTime(){ 180 | var c=audioPlayer.currentPlaybackTime 181 | // audioPlayer.endPlaybackTime 182 | if c>0.0 { 183 | let t=audioPlayer.duration 184 | let p:CFloat=CFloat(c/t) 185 | progressSlider.value=p; 186 | let all:Int=Int(c)//共多少秒 187 | let m:Int=all % 60//秒 188 | let f:Int=Int(all/60)//分 189 | var time=NSString(format:"%02d:%02d",f,m) 190 | playTimeLabel.text=time as String 191 | } 192 | } 193 | 194 | 195 | 196 | } 197 | 198 | -------------------------------------------------------------------------------- /WJQQMusicTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | WJ.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /WJQQMusicTests/WJQQMusicTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WJQQMusicTests.swift 3 | // WJQQMusicTests 4 | // 5 | // Created by jh navi on 15/9/16. 6 | // Copyright (c) 2015年 WJ. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import XCTest 11 | 12 | class WJQQMusicTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | XCTAssert(true, "Pass") 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measureBlock() { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /wj.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WinJayQ/WJQQMusicSwiftDemo/d8613bf9d11ee7ff89445d9a3ed2ebb435416e17/wj.gif --------------------------------------------------------------------------------