├── .DS_Store ├── .gitignore ├── Podfile ├── Podfile.lock ├── Pods ├── AFNetworking │ ├── AFNetworking │ │ ├── AFHTTPSessionManager.h │ │ ├── AFHTTPSessionManager.m │ │ ├── AFNetworkReachabilityManager.h │ │ ├── AFNetworkReachabilityManager.m │ │ ├── AFNetworking.h │ │ ├── AFSecurityPolicy.h │ │ ├── AFSecurityPolicy.m │ │ ├── AFURLRequestSerialization.h │ │ ├── AFURLRequestSerialization.m │ │ ├── AFURLResponseSerialization.h │ │ ├── AFURLResponseSerialization.m │ │ ├── AFURLSessionManager.h │ │ └── AFURLSessionManager.m │ ├── LICENSE │ ├── README.md │ └── UIKit+AFNetworking │ │ ├── AFAutoPurgingImageCache.h │ │ ├── AFAutoPurgingImageCache.m │ │ ├── AFImageDownloader.h │ │ ├── AFImageDownloader.m │ │ ├── AFNetworkActivityIndicatorManager.h │ │ ├── AFNetworkActivityIndicatorManager.m │ │ ├── UIActivityIndicatorView+AFNetworking.h │ │ ├── UIActivityIndicatorView+AFNetworking.m │ │ ├── UIButton+AFNetworking.h │ │ ├── UIButton+AFNetworking.m │ │ ├── UIImage+AFNetworking.h │ │ ├── UIImageView+AFNetworking.h │ │ ├── UIImageView+AFNetworking.m │ │ ├── UIKit+AFNetworking.h │ │ ├── UIProgressView+AFNetworking.h │ │ ├── UIProgressView+AFNetworking.m │ │ ├── UIRefreshControl+AFNetworking.h │ │ ├── UIRefreshControl+AFNetworking.m │ │ ├── UIWebView+AFNetworking.h │ │ └── UIWebView+AFNetworking.m ├── MBProgressHUD │ ├── LICENSE │ ├── MBProgressHUD.h │ ├── MBProgressHUD.m │ └── README.mdown ├── MJExtension │ ├── LICENSE │ ├── MJExtension │ │ ├── MJExtension.h │ │ ├── MJExtensionConst.h │ │ ├── MJExtensionConst.m │ │ ├── MJFoundation.h │ │ ├── MJFoundation.m │ │ ├── MJProperty.h │ │ ├── MJProperty.m │ │ ├── MJPropertyKey.h │ │ ├── MJPropertyKey.m │ │ ├── MJPropertyType.h │ │ ├── MJPropertyType.m │ │ ├── NSObject+MJClass.h │ │ ├── NSObject+MJClass.m │ │ ├── NSObject+MJCoding.h │ │ ├── NSObject+MJCoding.m │ │ ├── NSObject+MJKeyValue.h │ │ ├── NSObject+MJKeyValue.m │ │ ├── NSObject+MJProperty.h │ │ ├── NSObject+MJProperty.m │ │ ├── NSString+MJExtension.h │ │ └── NSString+MJExtension.m │ └── README.md ├── MJRefresh │ ├── LICENSE │ ├── MJRefresh │ │ ├── Base │ │ │ ├── MJRefreshAutoFooter.h │ │ │ ├── MJRefreshAutoFooter.m │ │ │ ├── MJRefreshBackFooter.h │ │ │ ├── MJRefreshBackFooter.m │ │ │ ├── MJRefreshComponent.h │ │ │ ├── MJRefreshComponent.m │ │ │ ├── MJRefreshFooter.h │ │ │ ├── MJRefreshFooter.m │ │ │ ├── MJRefreshHeader.h │ │ │ └── MJRefreshHeader.m │ │ ├── Custom │ │ │ ├── Footer │ │ │ │ ├── Auto │ │ │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ │ │ ├── MJRefreshAutoGifFooter.m │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ │ │ ├── MJRefreshAutoNormalFooter.m │ │ │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ │ │ └── MJRefreshAutoStateFooter.m │ │ │ │ └── Back │ │ │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ │ │ ├── MJRefreshBackGifFooter.m │ │ │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ │ │ ├── MJRefreshBackNormalFooter.m │ │ │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ │ │ └── MJRefreshBackStateFooter.m │ │ │ └── Header │ │ │ │ ├── MJRefreshGifHeader.h │ │ │ │ ├── MJRefreshGifHeader.m │ │ │ │ ├── MJRefreshNormalHeader.h │ │ │ │ ├── MJRefreshNormalHeader.m │ │ │ │ ├── MJRefreshStateHeader.h │ │ │ │ └── MJRefreshStateHeader.m │ │ ├── MJRefresh.bundle │ │ │ ├── arrow@2x.png │ │ │ ├── en.lproj │ │ │ │ └── Localizable.strings │ │ │ ├── zh-Hans.lproj │ │ │ │ └── Localizable.strings │ │ │ └── zh-Hant.lproj │ │ │ │ └── Localizable.strings │ │ ├── MJRefresh.h │ │ ├── MJRefreshConst.h │ │ ├── MJRefreshConst.m │ │ ├── NSBundle+MJRefresh.h │ │ ├── NSBundle+MJRefresh.m │ │ ├── UIScrollView+MJExtension.h │ │ ├── UIScrollView+MJExtension.m │ │ ├── UIScrollView+MJRefresh.h │ │ ├── UIScrollView+MJRefresh.m │ │ ├── UIView+MJExtension.h │ │ └── UIView+MJExtension.m │ └── README.md ├── Manifest.lock ├── Masonry │ ├── LICENSE │ ├── Masonry │ │ ├── MASCompositeConstraint.h │ │ ├── MASCompositeConstraint.m │ │ ├── MASConstraint+Private.h │ │ ├── MASConstraint.h │ │ ├── MASConstraint.m │ │ ├── MASConstraintMaker.h │ │ ├── MASConstraintMaker.m │ │ ├── MASLayoutConstraint.h │ │ ├── MASLayoutConstraint.m │ │ ├── MASUtilities.h │ │ ├── MASViewAttribute.h │ │ ├── MASViewAttribute.m │ │ ├── MASViewConstraint.h │ │ ├── MASViewConstraint.m │ │ ├── Masonry.h │ │ ├── NSArray+MASAdditions.h │ │ ├── NSArray+MASAdditions.m │ │ ├── NSArray+MASShorthandAdditions.h │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ ├── NSLayoutConstraint+MASDebugAdditions.m │ │ ├── View+MASAdditions.h │ │ ├── View+MASAdditions.m │ │ ├── View+MASShorthandAdditions.h │ │ ├── ViewController+MASAdditions.h │ │ └── ViewController+MASAdditions.m │ └── README.md ├── Pods.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ └── chenling.xcuserdatad │ │ └── xcschemes │ │ ├── AFNetworking.xcscheme │ │ ├── MBProgressHUD.xcscheme │ │ ├── MJExtension.xcscheme │ │ ├── MJRefresh.xcscheme │ │ ├── Masonry.xcscheme │ │ ├── Pods-SCMusic.xcscheme │ │ └── xcschememanagement.plist └── Target Support Files │ ├── AFNetworking │ ├── AFNetworking-dummy.m │ ├── AFNetworking-prefix.pch │ ├── AFNetworking-umbrella.h │ ├── AFNetworking.modulemap │ ├── AFNetworking.xcconfig │ └── Info.plist │ ├── MBProgressHUD │ ├── Info.plist │ ├── MBProgressHUD-dummy.m │ ├── MBProgressHUD-prefix.pch │ ├── MBProgressHUD-umbrella.h │ ├── MBProgressHUD.modulemap │ └── MBProgressHUD.xcconfig │ ├── MJExtension │ ├── Info.plist │ ├── MJExtension-dummy.m │ ├── MJExtension-prefix.pch │ ├── MJExtension-umbrella.h │ ├── MJExtension.modulemap │ └── MJExtension.xcconfig │ ├── MJRefresh │ ├── Info.plist │ ├── MJRefresh-dummy.m │ ├── MJRefresh-prefix.pch │ ├── MJRefresh-umbrella.h │ ├── MJRefresh.modulemap │ └── MJRefresh.xcconfig │ ├── Masonry │ ├── Info.plist │ ├── Masonry-dummy.m │ ├── Masonry-prefix.pch │ ├── Masonry-umbrella.h │ ├── Masonry.modulemap │ └── Masonry.xcconfig │ └── Pods-SCMusic │ ├── Info.plist │ ├── Pods-SCMusic-acknowledgements.markdown │ ├── Pods-SCMusic-acknowledgements.plist │ ├── Pods-SCMusic-dummy.m │ ├── Pods-SCMusic-frameworks.sh │ ├── Pods-SCMusic-resources.sh │ ├── Pods-SCMusic-umbrella.h │ ├── Pods-SCMusic.debug.xcconfig │ ├── Pods-SCMusic.modulemap │ └── Pods-SCMusic.release.xcconfig ├── README.md ├── SCMusic.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── chenling.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── chenling.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ └── xcschememanagement.plist ├── SCMusic.xcworkspace ├── contents.xcworkspacedata └── xcuserdata │ └── chenling.xcuserdatad │ ├── UserInterfaceState.xcuserstate │ └── xcdebugger │ └── Breakpoints_v2.xcbkptlist ├── SCMusic ├── .DS_Store ├── Classes │ ├── .DS_Store │ ├── Controller │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── ContentTableViewController.h │ │ ├── ContentTableViewController.m │ │ ├── DetailControlViewController.h │ │ ├── DetailControlViewController.m │ │ ├── NavigationViewController.h │ │ ├── NavigationViewController.m │ │ ├── RootViewController.h │ │ └── RootViewController.m │ ├── Model │ │ ├── Const.h │ │ ├── Const.m │ │ ├── OMAlbumInfo.h │ │ ├── OMAlbumInfo.m │ │ ├── OMArtistInfo.h │ │ ├── OMArtistInfo.m │ │ ├── OMHotSongInfo.h │ │ ├── OMHotSongInfo.m │ │ ├── OMSongInfo.h │ │ └── OMSongInfo.m │ ├── MusicDownloader │ │ ├── MusicDownloader.h │ │ └── MusicDownloader.m │ ├── MusicPlayerManager │ │ ├── .DS_Store │ │ ├── MusicPlayerManager.h │ │ └── MusicPlayerManager.m │ └── View │ │ ├── .DS_Store │ │ ├── DetailControlView │ │ ├── BottomView │ │ │ ├── BottomView.h │ │ │ └── BottomView.m │ │ ├── MidView │ │ │ ├── MidView.h │ │ │ ├── MidView.m │ │ │ ├── SCIconView.h │ │ │ ├── SCIconView.m │ │ │ ├── SCLrcTableView.h │ │ │ ├── SCLrcTableView.m │ │ │ ├── SCLrcTableViewCell.h │ │ │ └── SCLrcTableViewCell.m │ │ └── TopView │ │ │ ├── TopView.h │ │ │ └── TopView.m │ │ ├── SCImageView │ │ ├── SCImageView.h │ │ └── SCImageView.m │ │ ├── SimpleControlView │ │ ├── SimpleControlView.h │ │ └── SimpleControlView.m │ │ ├── SongListView │ │ ├── SongListTableView.h │ │ ├── SongListTableView.m │ │ ├── SongListTableViewCell.h │ │ ├── SongListTableViewCell.m │ │ ├── SongListTopView.h │ │ ├── SongListTopView.m │ │ ├── SongListView.h │ │ └── SongListView.m │ │ ├── TTTopChannelContianerView.h │ │ └── TTTopChannelContianerView.m ├── Resources │ ├── .DS_Store │ ├── 309769.lrc │ ├── Assets.xcassets │ │ ├── .DS_Store │ │ ├── AppIcon.appiconset │ │ │ ├── AppIcon29x29.png │ │ │ ├── AppIcon29x29@2x.png │ │ │ ├── AppIcon29x29@3x.png │ │ │ ├── AppIcon40x40@2x.png │ │ │ ├── AppIcon40x40@3x.png │ │ │ ├── AppIcon57x57.png │ │ │ ├── AppIcon57x57@2x.png │ │ │ ├── AppIcon60x60@2x.png │ │ │ ├── AppIcon60x60@3x.png │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── Placeholder.imageset │ │ │ ├── Contents.json │ │ │ ├── Placeholder.png │ │ │ └── Placeholder@2x.png │ │ ├── album_default.imageset │ │ │ ├── Contents.json │ │ │ └── png.png │ │ ├── backgroundImage.imageset │ │ │ ├── Contents.json │ │ │ └── 邓紫棋1.jpg │ │ ├── backgroundImage1.imageset │ │ │ ├── Contents.json │ │ │ └── backgroundImage1.jpg │ │ ├── backgroundImage2.imageset │ │ │ ├── Contents.json │ │ │ └── backgroundImage2.jpg │ │ ├── backgroundImage3.imageset │ │ │ ├── Contents.json │ │ │ └── backgroundImage3.jpg │ │ ├── cm2_detail_knob_nomal.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_detail_knob_nomal.png │ │ │ ├── cm2_detail_knob_nomal@2x.png │ │ │ └── cm2_detail_knob_nomal@3x.png │ │ ├── cm2_detail_knob_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_detail_knob_prs.png │ │ │ ├── cm2_detail_knob_prs@2x.png │ │ │ └── cm2_detail_knob_prs@3x.png │ │ ├── cm2_efc_knob_trough_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_efc_knob_trough_prs.png │ │ │ ├── cm2_efc_knob_trough_prs@2x.png │ │ │ └── cm2_efc_knob_trough_prs@3x.png │ │ ├── cm2_fm_btn_love.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_love.png │ │ │ ├── cm2_fm_btn_love@2x.png │ │ │ └── cm2_fm_btn_love@3x.png │ │ ├── cm2_fm_btn_love_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_love_prs.png │ │ │ ├── cm2_fm_btn_love_prs@2x.png │ │ │ └── cm2_fm_btn_love_prs@3x.png │ │ ├── cm2_fm_btn_loved.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_loved.png │ │ │ ├── cm2_fm_btn_loved@2x.png │ │ │ └── cm2_fm_btn_loved@3x.png │ │ ├── cm2_fm_btn_loved_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_loved_prs.png │ │ │ ├── cm2_fm_btn_loved_prs@2x.png │ │ │ └── cm2_fm_btn_loved_prs@3x.png │ │ ├── cm2_fm_btn_next.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_next.png │ │ │ ├── cm2_fm_btn_next@2x.png │ │ │ └── cm2_fm_btn_next@3x.png │ │ ├── cm2_fm_btn_next_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_next_prs.png │ │ │ ├── cm2_fm_btn_next_prs@2x.png │ │ │ └── cm2_fm_btn_next_prs@3x.png │ │ ├── cm2_fm_btn_pause.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_play.png │ │ │ ├── cm2_fm_btn_play@2x.png │ │ │ └── cm2_fm_btn_play@3x.png │ │ ├── cm2_fm_btn_pause_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_play_prs.png │ │ │ ├── cm2_fm_btn_play_prs@2x.png │ │ │ └── cm2_fm_btn_play_prs@3x.png │ │ ├── cm2_fm_btn_play.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_pause.png │ │ │ ├── cm2_fm_btn_pause@2x.png │ │ │ └── cm2_fm_btn_pause@3x.png │ │ ├── cm2_fm_btn_play_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_pause_prs.png │ │ │ ├── cm2_fm_btn_pause_prs@2x.png │ │ │ └── cm2_fm_btn_pause_prs@3x.png │ │ ├── cm2_fm_btn_pre.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_pre.png │ │ │ ├── cm2_fm_btn_pre@2x.png │ │ │ └── cm2_fm_btn_pre@3x.png │ │ ├── cm2_fm_btn_pre_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_fm_btn_pre_prs.png │ │ │ ├── cm2_fm_btn_pre_prs@2x.png │ │ │ └── cm2_fm_btn_pre_prs@3x.png │ │ ├── cm2_icn_list.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_icn_list.png │ │ │ ├── cm2_icn_list@2x.png │ │ │ └── cm2_icn_list@3x.png │ │ ├── cm2_icn_list_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_icn_list_prs.png │ │ │ ├── cm2_icn_list_prs@2x.png │ │ │ └── cm2_icn_list_prs@3x.png │ │ ├── cm2_icn_loop.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_icn_loop.png │ │ │ ├── cm2_icn_loop@2x.png │ │ │ └── cm2_icn_loop@3x.png │ │ ├── cm2_icn_loop_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_icn_loop_prs.png │ │ │ ├── cm2_icn_loop_prs@2x.png │ │ │ └── cm2_icn_loop_prs@3x.png │ │ ├── cm2_icn_next.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_icn_next.png │ │ │ ├── cm2_icn_next@2x.png │ │ │ └── cm2_icn_next@3x.png │ │ ├── cm2_icn_one.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_icn_one.png │ │ │ ├── cm2_icn_one@2x.png │ │ │ └── cm2_icn_one@3x.png │ │ ├── cm2_icn_one_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_icn_one_prs.png │ │ │ ├── cm2_icn_one_prs@2x.png │ │ │ └── cm2_icn_one_prs@3x.png │ │ ├── cm2_icn_shuffle.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_icn_shuffle.png │ │ │ ├── cm2_icn_shuffle@2x.png │ │ │ └── cm2_icn_shuffle@3x.png │ │ ├── cm2_icn_shuffle_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_icn_shuffle_prs.png │ │ │ ├── cm2_icn_shuffle_prs@2x.png │ │ │ └── cm2_icn_shuffle_prs@3x.png │ │ ├── cm2_live_btn_back.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_live_btn_back.png │ │ │ ├── cm2_live_btn_back@2x.png │ │ │ └── cm2_live_btn_back@3x.png │ │ ├── cm2_live_btn_back_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_live_btn_back_prs.png │ │ │ ├── cm2_live_btn_back_prs@2x.png │ │ │ └── cm2_live_btn_back_prs@3x.png │ │ ├── cm2_simple_defaut_album_image.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_simple_defaut_album_image.png │ │ │ ├── cm2_simple_defaut_album_image@2x.png │ │ │ └── cm2_simple_defaut_album_image@3x.png │ │ ├── cm2_simple_knob_nomal.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_simple_knob_trough_prs.png │ │ │ ├── cm2_simple_knob_trough_prs@2x.png │ │ │ └── cm2_simple_knob_trough_prs@3x.png │ │ ├── cm2_simple_knob_prs.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_simple_live_color_1_prs.png │ │ │ ├── cm2_simple_live_color_1_prs@2x.png │ │ │ └── cm2_simple_live_color_1_prs@3x.png │ │ ├── cm2_simple_live_color_1.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_simple_live_color_1.png │ │ │ ├── cm2_simple_live_color_1@2x.png │ │ │ └── cm2_simple_live_color_1@3x.png │ │ ├── launchImage.imageset │ │ │ ├── Contents.json │ │ │ └── launchImage.jpg │ │ ├── picture1.imageset │ │ │ ├── Contents.json │ │ │ └── u=2264471419,3598996476&fm=23&gp=0.jpg │ │ ├── player_cm2_play_disc.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_play_disc.png │ │ │ ├── cm2_play_disc@2x.png │ │ │ └── cm2_play_disc@3x.png │ │ └── player_cm2_play_needle_play-ip6.imageset │ │ │ ├── Contents.json │ │ │ ├── cm2_play_needle_play-ip6@2x.png │ │ │ └── cm2_play_needle_play@3x.png │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ └── Info.plist └── main.m ├── SCMusic截图.gif ├── SCMusic截图.png └── SC音乐软件更改说明.txt /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/.gitignore -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'SCMusic' do 5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks 6 | use_frameworks! 7 | 8 | # Pods for SCMusic 9 | 10 | pod 'AFNetworking', '~> 3.0' 11 | pod 'Masonry' 12 | pod 'MBProgressHUD' 13 | pod 'MJExtension' 14 | pod 'MJRefresh' 15 | 16 | end 17 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - AFNetworking (3.1.0): 3 | - AFNetworking/NSURLSession (= 3.1.0) 4 | - AFNetworking/Reachability (= 3.1.0) 5 | - AFNetworking/Security (= 3.1.0) 6 | - AFNetworking/Serialization (= 3.1.0) 7 | - AFNetworking/UIKit (= 3.1.0) 8 | - AFNetworking/NSURLSession (3.1.0): 9 | - AFNetworking/Reachability 10 | - AFNetworking/Security 11 | - AFNetworking/Serialization 12 | - AFNetworking/Reachability (3.1.0) 13 | - AFNetworking/Security (3.1.0) 14 | - AFNetworking/Serialization (3.1.0) 15 | - AFNetworking/UIKit (3.1.0): 16 | - AFNetworking/NSURLSession 17 | - Masonry (1.1.0) 18 | - MBProgressHUD (1.1.0) 19 | - MJExtension (3.0.13) 20 | - MJRefresh (3.1.15.1) 21 | 22 | DEPENDENCIES: 23 | - AFNetworking (~> 3.0) 24 | - Masonry 25 | - MBProgressHUD 26 | - MJExtension 27 | - MJRefresh 28 | 29 | SPEC CHECKSUMS: 30 | AFNetworking: 5e0e199f73d8626b11e79750991f5d173d1f8b67 31 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 32 | MBProgressHUD: e7baa36a220447d8aeb12769bf0585582f3866d9 33 | MJExtension: 5932755f451458eefa24239358817f8d291240c7 34 | MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6 35 | 36 | PODFILE CHECKSUM: 89d7e9438bc277d90a6edb2ff41b50d66d96bd72 37 | 38 | COCOAPODS: 1.3.1 39 | -------------------------------------------------------------------------------- /Pods/AFNetworking/AFNetworking/AFNetworking.h: -------------------------------------------------------------------------------- 1 | // AFNetworking.h 2 | // 3 | // Copyright (c) 2013 AFNetworking (http://afnetworking.com/) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import 25 | #import 26 | 27 | #ifndef _AFNETWORKING_ 28 | #define _AFNETWORKING_ 29 | 30 | #import "AFURLRequestSerialization.h" 31 | #import "AFURLResponseSerialization.h" 32 | #import "AFSecurityPolicy.h" 33 | 34 | #if !TARGET_OS_WATCH 35 | #import "AFNetworkReachabilityManager.h" 36 | #endif 37 | 38 | #import "AFURLSessionManager.h" 39 | #import "AFHTTPSessionManager.h" 40 | 41 | #endif /* _AFNETWORKING_ */ 42 | -------------------------------------------------------------------------------- /Pods/AFNetworking/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011–2016 Alamofire Software Foundation (http://alamofire.org/) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h: -------------------------------------------------------------------------------- 1 | // UIActivityIndicatorView+AFNetworking.h 2 | // Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy 5 | // of this software and associated documentation files (the "Software"), to deal 6 | // in the Software without restriction, including without limitation the rights 7 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | // copies of the Software, and to permit persons to whom the Software is 9 | // furnished to do so, subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in 12 | // all copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 | // THE SOFTWARE. 21 | 22 | #import 23 | 24 | #import 25 | 26 | #if TARGET_OS_IOS || TARGET_OS_TV 27 | 28 | #import 29 | 30 | /** 31 | This category adds methods to the UIKit framework's `UIActivityIndicatorView` class. The methods in this category provide support for automatically starting and stopping animation depending on the loading state of a session task. 32 | */ 33 | @interface UIActivityIndicatorView (AFNetworking) 34 | 35 | ///---------------------------------- 36 | /// @name Animating for Session Tasks 37 | ///---------------------------------- 38 | 39 | /** 40 | Binds the animating state to the state of the specified task. 41 | 42 | @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. 43 | */ 44 | - (void)setAnimatingWithStateOfTask:(nullable NSURLSessionTask *)task; 45 | 46 | @end 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /Pods/AFNetworking/UIKit+AFNetworking/UIImage+AFNetworking.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+AFNetworking.h 3 | // 4 | // 5 | // Created by Paulo Ferreira on 08/07/15. 6 | // 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy 8 | // of this software and associated documentation files (the "Software"), to deal 9 | // in the Software without restriction, including without limitation the rights 10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | // copies of the Software, and to permit persons to whom the Software is 12 | // furnished to do so, subject to the following conditions: 13 | // 14 | // The above copyright notice and this permission notice shall be included in 15 | // all copies or substantial portions of the Software. 16 | // 17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | // THE SOFTWARE. 24 | 25 | #if TARGET_OS_IOS || TARGET_OS_TV 26 | 27 | #import 28 | 29 | @interface UIImage (AFNetworking) 30 | 31 | + (UIImage*) safeImageWithData:(NSData*)data; 32 | 33 | @end 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h: -------------------------------------------------------------------------------- 1 | // UIKit+AFNetworking.h 2 | // 3 | // Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #if TARGET_OS_IOS || TARGET_OS_TV 24 | #import 25 | 26 | #ifndef _UIKIT_AFNETWORKING_ 27 | #define _UIKIT_AFNETWORKING_ 28 | 29 | #if TARGET_OS_IOS 30 | #import "AFAutoPurgingImageCache.h" 31 | #import "AFImageDownloader.h" 32 | #import "AFNetworkActivityIndicatorManager.h" 33 | #import "UIRefreshControl+AFNetworking.h" 34 | #import "UIWebView+AFNetworking.h" 35 | #endif 36 | 37 | #import "UIActivityIndicatorView+AFNetworking.h" 38 | #import "UIButton+AFNetworking.h" 39 | #import "UIImageView+AFNetworking.h" 40 | #import "UIProgressView+AFNetworking.h" 41 | #endif /* _UIKIT_AFNETWORKING_ */ 42 | #endif 43 | -------------------------------------------------------------------------------- /Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h: -------------------------------------------------------------------------------- 1 | // UIRefreshControl+AFNetworking.m 2 | // 3 | // Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | 25 | #import 26 | 27 | #if TARGET_OS_IOS 28 | 29 | #import 30 | 31 | NS_ASSUME_NONNULL_BEGIN 32 | 33 | /** 34 | This category adds methods to the UIKit framework's `UIRefreshControl` class. The methods in this category provide support for automatically beginning and ending refreshing depending on the loading state of a session task. 35 | */ 36 | @interface UIRefreshControl (AFNetworking) 37 | 38 | ///----------------------------------- 39 | /// @name Refreshing for Session Tasks 40 | ///----------------------------------- 41 | 42 | /** 43 | Binds the refreshing state to the state of the specified task. 44 | 45 | @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. 46 | */ 47 | - (void)setRefreshingWithStateOfTask:(NSURLSessionTask *)task; 48 | 49 | @end 50 | 51 | NS_ASSUME_NONNULL_END 52 | 53 | #endif 54 | -------------------------------------------------------------------------------- /Pods/MBProgressHUD/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright © 2009-2016 Matej Bukovinski 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/MJExtension/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2015 MJExtension (https://github.com/CoderMJLee/MJExtension) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJExtension.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 代码地址:https://github.com/CoderMJLee/MJExtension 8 | // 代码地址:http://code4app.com/ios/%E5%AD%97%E5%85%B8-JSON-%E4%B8%8E%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%BD%AC%E6%8D%A2/5339992a933bf062608b4c57 9 | 10 | #import "NSObject+MJCoding.h" 11 | #import "NSObject+MJProperty.h" 12 | #import "NSObject+MJClass.h" 13 | #import "NSObject+MJKeyValue.h" 14 | #import "NSString+MJExtension.h" 15 | #import "MJExtensionConst.h" -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJExtensionConst.m: -------------------------------------------------------------------------------- 1 | #ifndef __MJExtensionConst__M__ 2 | #define __MJExtensionConst__M__ 3 | 4 | #import 5 | 6 | /** 7 | * 成员变量类型(属性类型) 8 | */ 9 | NSString *const MJPropertyTypeInt = @"i"; 10 | NSString *const MJPropertyTypeShort = @"s"; 11 | NSString *const MJPropertyTypeFloat = @"f"; 12 | NSString *const MJPropertyTypeDouble = @"d"; 13 | NSString *const MJPropertyTypeLong = @"l"; 14 | NSString *const MJPropertyTypeLongLong = @"q"; 15 | NSString *const MJPropertyTypeChar = @"c"; 16 | NSString *const MJPropertyTypeBOOL1 = @"c"; 17 | NSString *const MJPropertyTypeBOOL2 = @"b"; 18 | NSString *const MJPropertyTypePointer = @"*"; 19 | 20 | NSString *const MJPropertyTypeIvar = @"^{objc_ivar=}"; 21 | NSString *const MJPropertyTypeMethod = @"^{objc_method=}"; 22 | NSString *const MJPropertyTypeBlock = @"@?"; 23 | NSString *const MJPropertyTypeClass = @"#"; 24 | NSString *const MJPropertyTypeSEL = @":"; 25 | NSString *const MJPropertyTypeId = @"@"; 26 | 27 | #endif -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJFoundation.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJFoundation.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 14/7/16. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MJFoundation : NSObject 12 | + (BOOL)isClassFromFoundation:(Class)c; 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJFoundation.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJFoundation.m 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 14/7/16. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJFoundation.h" 10 | #import "MJExtensionConst.h" 11 | #import 12 | 13 | static NSSet *foundationClasses_; 14 | 15 | @implementation MJFoundation 16 | 17 | + (NSSet *)foundationClasses 18 | { 19 | if (foundationClasses_ == nil) { 20 | // 集合中没有NSObject,因为几乎所有的类都是继承自NSObject,具体是不是NSObject需要特殊判断 21 | foundationClasses_ = [NSSet setWithObjects: 22 | [NSURL class], 23 | [NSDate class], 24 | [NSValue class], 25 | [NSData class], 26 | [NSError class], 27 | [NSArray class], 28 | [NSDictionary class], 29 | [NSString class], 30 | [NSAttributedString class], nil]; 31 | } 32 | return foundationClasses_; 33 | } 34 | 35 | + (BOOL)isClassFromFoundation:(Class)c 36 | { 37 | if (c == [NSObject class] || c == [NSManagedObject class]) return YES; 38 | 39 | __block BOOL result = NO; 40 | [[self foundationClasses] enumerateObjectsUsingBlock:^(Class foundationClass, BOOL *stop) { 41 | if ([c isSubclassOfClass:foundationClass]) { 42 | result = YES; 43 | *stop = YES; 44 | } 45 | }]; 46 | return result; 47 | } 48 | @end 49 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJProperty.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJProperty.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/4/17. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 包装一个成员属性 8 | 9 | #import 10 | #import 11 | #import "MJPropertyType.h" 12 | #import "MJPropertyKey.h" 13 | 14 | /** 15 | * 包装一个成员 16 | */ 17 | @interface MJProperty : NSObject 18 | /** 成员属性 */ 19 | @property (nonatomic, assign) objc_property_t property; 20 | /** 成员属性的名字 */ 21 | @property (nonatomic, readonly) NSString *name; 22 | 23 | /** 成员属性的类型 */ 24 | @property (nonatomic, readonly) MJPropertyType *type; 25 | /** 成员属性来源于哪个类(可能是父类) */ 26 | @property (nonatomic, assign) Class srcClass; 27 | 28 | /**** 同一个成员属性 - 父类和子类的行为可能不一致(originKey、propertyKeys、objectClassInArray) ****/ 29 | /** 设置最原始的key */ 30 | - (void)setOriginKey:(id)originKey forClass:(Class)c; 31 | /** 对应着字典中的多级key(里面存放的数组,数组里面都是MJPropertyKey对象) */ 32 | - (NSArray *)propertyKeysForClass:(Class)c; 33 | 34 | /** 模型数组中的模型类型 */ 35 | - (void)setObjectClassInArray:(Class)objectClass forClass:(Class)c; 36 | - (Class)objectClassInArrayForClass:(Class)c; 37 | /**** 同一个成员变量 - 父类和子类的行为可能不一致(key、keys、objectClassInArray) ****/ 38 | 39 | /** 40 | * 设置object的成员变量值 41 | */ 42 | - (void)setValue:(id)value forObject:(id)object; 43 | /** 44 | * 得到object的成员属性值 45 | */ 46 | - (id)valueForObject:(id)object; 47 | 48 | /** 49 | * 初始化 50 | */ 51 | + (instancetype)cachedPropertyWithProperty:(objc_property_t)property; 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJPropertyKey.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyKey.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/8/11. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef enum { 12 | MJPropertyKeyTypeDictionary = 0, // 字典的key 13 | MJPropertyKeyTypeArray // 数组的key 14 | } MJPropertyKeyType; 15 | 16 | /** 17 | * 属性的key 18 | */ 19 | @interface MJPropertyKey : NSObject 20 | /** key的名字 */ 21 | @property (copy, nonatomic) NSString *name; 22 | /** key的种类,可能是@"10",可能是@"age" */ 23 | @property (assign, nonatomic) MJPropertyKeyType type; 24 | 25 | /** 26 | * 根据当前的key,也就是name,从object(字典或者数组)中取值 27 | */ 28 | - (id)valueInObject:(id)object; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJPropertyKey.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyKey.m 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/8/11. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJPropertyKey.h" 10 | 11 | @implementation MJPropertyKey 12 | 13 | - (id)valueInObject:(id)object 14 | { 15 | if ([object isKindOfClass:[NSDictionary class]] && self.type == MJPropertyKeyTypeDictionary) { 16 | return object[self.name]; 17 | } else if ([object isKindOfClass:[NSArray class]] && self.type == MJPropertyKeyTypeArray) { 18 | NSArray *array = object; 19 | NSUInteger index = self.name.intValue; 20 | if (index < array.count) return array[index]; 21 | return nil; 22 | } 23 | return nil; 24 | } 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/MJPropertyType.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyType.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 包装一种类型 8 | 9 | #import 10 | 11 | /** 12 | * 包装一种类型 13 | */ 14 | @interface MJPropertyType : NSObject 15 | /** 类型标识符 */ 16 | @property (nonatomic, copy) NSString *code; 17 | 18 | /** 是否为id类型 */ 19 | @property (nonatomic, readonly, getter=isIdType) BOOL idType; 20 | 21 | /** 是否为基本数字类型:int、float等 */ 22 | @property (nonatomic, readonly, getter=isNumberType) BOOL numberType; 23 | 24 | /** 是否为BOOL类型 */ 25 | @property (nonatomic, readonly, getter=isBoolType) BOOL boolType; 26 | 27 | /** 对象类型(如果是基本数据类型,此值为nil) */ 28 | @property (nonatomic, readonly) Class typeClass; 29 | 30 | /** 类型是否来自于Foundation框架,比如NSString、NSArray */ 31 | @property (nonatomic, readonly, getter = isFromFoundation) BOOL fromFoundation; 32 | /** 类型是否不支持KVC */ 33 | @property (nonatomic, readonly, getter = isKVCDisabled) BOOL KVCDisabled; 34 | 35 | /** 36 | * 获得缓存的类型对象 37 | */ 38 | + (instancetype)cachedTypeWithCode:(NSString *)code; 39 | @end -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/NSObject+MJCoding.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+MJCoding.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MJExtensionConst.h" 11 | 12 | /** 13 | * Codeing协议 14 | */ 15 | @protocol MJCoding 16 | @optional 17 | /** 18 | * 这个数组中的属性名才会进行归档 19 | */ 20 | + (NSArray *)mj_allowedCodingPropertyNames; 21 | /** 22 | * 这个数组中的属性名将会被忽略:不进行归档 23 | */ 24 | + (NSArray *)mj_ignoredCodingPropertyNames; 25 | @end 26 | 27 | @interface NSObject (MJCoding) 28 | /** 29 | * 解码(从文件中解析对象) 30 | */ 31 | - (void)mj_decode:(NSCoder *)decoder; 32 | /** 33 | * 编码(将对象写入文件中) 34 | */ 35 | - (void)mj_encode:(NSCoder *)encoder; 36 | @end 37 | 38 | /** 39 | 归档的实现 40 | */ 41 | #define MJCodingImplementation \ 42 | - (id)initWithCoder:(NSCoder *)decoder \ 43 | { \ 44 | if (self = [super init]) { \ 45 | [self mj_decode:decoder]; \ 46 | } \ 47 | return self; \ 48 | } \ 49 | \ 50 | - (void)encodeWithCoder:(NSCoder *)encoder \ 51 | { \ 52 | [self mj_encode:encoder]; \ 53 | } 54 | 55 | #define MJExtensionCodingImplementation MJCodingImplementation -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/NSObject+MJCoding.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+MJCoding.m 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "NSObject+MJCoding.h" 10 | #import "NSObject+MJClass.h" 11 | #import "NSObject+MJProperty.h" 12 | #import "MJProperty.h" 13 | 14 | @implementation NSObject (MJCoding) 15 | 16 | - (void)mj_encode:(NSCoder *)encoder 17 | { 18 | Class clazz = [self class]; 19 | 20 | NSArray *allowedCodingPropertyNames = [clazz mj_totalAllowedCodingPropertyNames]; 21 | NSArray *ignoredCodingPropertyNames = [clazz mj_totalIgnoredCodingPropertyNames]; 22 | 23 | [clazz mj_enumerateProperties:^(MJProperty *property, BOOL *stop) { 24 | // 检测是否被忽略 25 | if (allowedCodingPropertyNames.count && ![allowedCodingPropertyNames containsObject:property.name]) return; 26 | if ([ignoredCodingPropertyNames containsObject:property.name]) return; 27 | 28 | id value = [property valueForObject:self]; 29 | if (value == nil) return; 30 | [encoder encodeObject:value forKey:property.name]; 31 | }]; 32 | } 33 | 34 | - (void)mj_decode:(NSCoder *)decoder 35 | { 36 | Class clazz = [self class]; 37 | 38 | NSArray *allowedCodingPropertyNames = [clazz mj_totalAllowedCodingPropertyNames]; 39 | NSArray *ignoredCodingPropertyNames = [clazz mj_totalIgnoredCodingPropertyNames]; 40 | 41 | [clazz mj_enumerateProperties:^(MJProperty *property, BOOL *stop) { 42 | // 检测是否被忽略 43 | if (allowedCodingPropertyNames.count && ![allowedCodingPropertyNames containsObject:property.name]) return; 44 | if ([ignoredCodingPropertyNames containsObject:property.name]) return; 45 | 46 | id value = [decoder decodeObjectForKey:property.name]; 47 | if (value == nil) { // 兼容以前的MJExtension版本 48 | value = [decoder decodeObjectForKey:[@"_" stringByAppendingString:property.name]]; 49 | } 50 | if (value == nil) return; 51 | [property setValue:value forObject:self]; 52 | }]; 53 | } 54 | @end 55 | -------------------------------------------------------------------------------- /Pods/MJExtension/MJExtension/NSString+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+MJExtension.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/6/7. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MJExtensionConst.h" 11 | 12 | @interface NSString (MJExtension) 13 | /** 14 | * 驼峰转下划线(loveYou -> love_you) 15 | */ 16 | - (NSString *)mj_underlineFromCamel; 17 | /** 18 | * 下划线转驼峰(love_you -> loveYou) 19 | */ 20 | - (NSString *)mj_camelFromUnderline; 21 | /** 22 | * 首字母变大写 23 | */ 24 | - (NSString *)mj_firstCharUpper; 25 | /** 26 | * 首字母变小写 27 | */ 28 | - (NSString *)mj_firstCharLower; 29 | 30 | - (BOOL)mj_isPureInt; 31 | 32 | - (NSURL *)mj_url; 33 | @end 34 | 35 | @interface NSString (MJExtensionDeprecated_v_2_5_16) 36 | - (NSString *)underlineFromCamel MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 37 | - (NSString *)camelFromUnderline MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 38 | - (NSString *)firstCharUpper MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 39 | - (NSString *)firstCharLower MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 40 | - (BOOL)isPureInt MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 41 | - (NSURL *)url MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 42 | @end 43 | -------------------------------------------------------------------------------- /Pods/MJRefresh/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshAutoFooter : MJRefreshFooter 12 | /** 是否自动刷新(默认为YES) */ 13 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh; 14 | 15 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 16 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性"); 17 | 18 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 19 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent; 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshBackFooter : MJRefreshFooter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshFooter.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 上拉刷新控件 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshFooter : MJRefreshComponent 13 | /** 创建footer */ 14 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建footer */ 16 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 提示没有更多的数据 */ 19 | - (void)endRefreshingWithNoMoreData; 20 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData"); 21 | 22 | /** 重置没有更多的数据(消除没有更多数据的状态) */ 23 | - (void)resetNoMoreData; 24 | 25 | /** 忽略多少scrollView的contentInset的bottom */ 26 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom; 27 | 28 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */ 29 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden; 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshHeader.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 下拉刷新控件:负责监控用户下拉的状态 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshHeader : MJRefreshComponent 13 | /** 创建header */ 14 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建header */ 16 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 这个key用来存储上一次下拉刷新成功的时间 */ 19 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey; 20 | /** 上一次下拉刷新成功的时间 */ 21 | @property (strong, nonatomic, readonly) NSDate *lastUpdatedTime; 22 | 23 | /** 忽略多少scrollView的contentInset的top */ 24 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop; 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter 12 | /** 菊花的样式 */ 13 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 14 | @end 15 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoNormalFooter.m 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoNormalFooter.h" 10 | 11 | @interface MJRefreshAutoNormalFooter() 12 | @property (weak, nonatomic) UIActivityIndicatorView *loadingView; 13 | @end 14 | 15 | @implementation MJRefreshAutoNormalFooter 16 | #pragma mark - 懒加载子控件 17 | - (UIActivityIndicatorView *)loadingView 18 | { 19 | if (!_loadingView) { 20 | UIActivityIndicatorView *loadingView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:self.activityIndicatorViewStyle]; 21 | loadingView.hidesWhenStopped = YES; 22 | [self addSubview:_loadingView = loadingView]; 23 | } 24 | return _loadingView; 25 | } 26 | 27 | - (void)setActivityIndicatorViewStyle:(UIActivityIndicatorViewStyle)activityIndicatorViewStyle 28 | { 29 | _activityIndicatorViewStyle = activityIndicatorViewStyle; 30 | 31 | self.loadingView = nil; 32 | [self setNeedsLayout]; 33 | } 34 | #pragma mark - 重写父类的方法 35 | - (void)prepare 36 | { 37 | [super prepare]; 38 | 39 | self.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray; 40 | } 41 | 42 | - (void)placeSubviews 43 | { 44 | [super placeSubviews]; 45 | 46 | if (self.loadingView.constraints.count) return; 47 | 48 | // 圈圈 49 | CGFloat loadingCenterX = self.mj_w * 0.5; 50 | if (!self.isRefreshingTitleHidden) { 51 | loadingCenterX -= self.stateLabel.mj_textWith * 0.5 + self.labelLeftInset; 52 | } 53 | CGFloat loadingCenterY = self.mj_h * 0.5; 54 | self.loadingView.center = CGPointMake(loadingCenterX, loadingCenterY); 55 | } 56 | 57 | - (void)setState:(MJRefreshState)state 58 | { 59 | MJRefreshCheckState 60 | 61 | // 根据状态做事情 62 | if (state == MJRefreshStateNoMoreData || state == MJRefreshStateIdle) { 63 | [self.loadingView stopAnimating]; 64 | } else if (state == MJRefreshStateRefreshing) { 65 | [self.loadingView startAnimating]; 66 | } 67 | } 68 | 69 | @end 70 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoFooter.h" 10 | 11 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter 12 | /** 文字距离圈圈、箭头的距离 */ 13 | @property (assign, nonatomic) CGFloat labelLeftInset; 14 | /** 显示刷新状态的label */ 15 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 16 | 17 | /** 设置state状态下的文字 */ 18 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 19 | 20 | /** 隐藏刷新状态的文字 */ 21 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden; 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackFooter.h" 10 | 11 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter 12 | /** 文字距离圈圈、箭头的距离 */ 13 | @property (assign, nonatomic) CGFloat labelLeftInset; 14 | /** 显示刷新状态的label */ 15 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 16 | /** 设置state状态下的文字 */ 17 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 18 | 19 | /** 获取state状态下的title */ 20 | - (NSString *)titleForState:(MJRefreshState)state; 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshGifHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshGifHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshNormalHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshNormalHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshStateHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshHeader.h" 10 | 11 | @interface MJRefreshStateHeader : MJRefreshHeader 12 | #pragma mark - 刷新时间相关 13 | /** 利用这个block来决定显示的更新时间文字 */ 14 | @property (copy, nonatomic) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime); 15 | /** 显示上一次刷新时间的label */ 16 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel; 17 | 18 | #pragma mark - 状态相关 19 | /** 文字距离圈圈、箭头的距离 */ 20 | @property (assign, nonatomic) CGFloat labelLeftInset; 21 | /** 显示刷新状态的label */ 22 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 23 | /** 设置state状态下的文字 */ 24 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hant.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | "MJRefreshHeaderIdleText" = "下拉可以刷新"; 2 | "MJRefreshHeaderPullingText" = "鬆開立即刷新"; 3 | "MJRefreshHeaderRefreshingText" = "正在刷新數據中..."; 4 | 5 | "MJRefreshAutoFooterIdleText" = "點擊或上拉加載更多"; 6 | "MJRefreshAutoFooterRefreshingText" = "正在加載更多的數據..."; 7 | "MJRefreshAutoFooterNoMoreDataText" = "已經全部加載完畢"; 8 | 9 | "MJRefreshBackFooterIdleText" = "上拉可以加載更多"; 10 | "MJRefreshBackFooterPullingText" = "鬆開立即加載更多"; 11 | "MJRefreshBackFooterRefreshingText" = "正在加載更多的數據..."; 12 | "MJRefreshBackFooterNoMoreDataText" = "已經全部加載完畢"; 13 | 14 | "MJRefreshHeaderLastTimeText" = "最後更新:"; 15 | "MJRefreshHeaderDateTodayText" = "今天"; 16 | "MJRefreshHeaderNoneLastDateText" = "無記錄"; 17 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | 4 | #import "UIScrollView+MJRefresh.h" 5 | #import "UIScrollView+MJExtension.h" 6 | #import "UIView+MJExtension.h" 7 | 8 | #import "MJRefreshNormalHeader.h" 9 | #import "MJRefreshGifHeader.h" 10 | 11 | #import "MJRefreshBackNormalFooter.h" 12 | #import "MJRefreshBackGifFooter.h" 13 | #import "MJRefreshAutoNormalFooter.h" 14 | #import "MJRefreshAutoGifFooter.h" -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefreshConst.m: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | #import 4 | 5 | const CGFloat MJRefreshLabelLeftInset = 25; 6 | const CGFloat MJRefreshHeaderHeight = 54.0; 7 | const CGFloat MJRefreshFooterHeight = 44.0; 8 | const CGFloat MJRefreshFastAnimationDuration = 0.25; 9 | const CGFloat MJRefreshSlowAnimationDuration = 0.4; 10 | 11 | NSString *const MJRefreshKeyPathContentOffset = @"contentOffset"; 12 | NSString *const MJRefreshKeyPathContentInset = @"contentInset"; 13 | NSString *const MJRefreshKeyPathContentSize = @"contentSize"; 14 | NSString *const MJRefreshKeyPathPanState = @"state"; 15 | 16 | NSString *const MJRefreshHeaderLastUpdatedTimeKey = @"MJRefreshHeaderLastUpdatedTimeKey"; 17 | 18 | NSString *const MJRefreshHeaderIdleText = @"MJRefreshHeaderIdleText"; 19 | NSString *const MJRefreshHeaderPullingText = @"MJRefreshHeaderPullingText"; 20 | NSString *const MJRefreshHeaderRefreshingText = @"MJRefreshHeaderRefreshingText"; 21 | 22 | NSString *const MJRefreshAutoFooterIdleText = @"MJRefreshAutoFooterIdleText"; 23 | NSString *const MJRefreshAutoFooterRefreshingText = @"MJRefreshAutoFooterRefreshingText"; 24 | NSString *const MJRefreshAutoFooterNoMoreDataText = @"MJRefreshAutoFooterNoMoreDataText"; 25 | 26 | NSString *const MJRefreshBackFooterIdleText = @"MJRefreshBackFooterIdleText"; 27 | NSString *const MJRefreshBackFooterPullingText = @"MJRefreshBackFooterPullingText"; 28 | NSString *const MJRefreshBackFooterRefreshingText = @"MJRefreshBackFooterRefreshingText"; 29 | NSString *const MJRefreshBackFooterNoMoreDataText = @"MJRefreshBackFooterNoMoreDataText"; 30 | 31 | NSString *const MJRefreshHeaderLastTimeText = @"MJRefreshHeaderLastTimeText"; 32 | NSString *const MJRefreshHeaderDateTodayText = @"MJRefreshHeaderDateTodayText"; 33 | NSString *const MJRefreshHeaderNoneLastDateText = @"MJRefreshHeaderNoneLastDateText"; -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+MJRefresh.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 16/6/13. 6 | // Copyright © 2016年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSBundle (MJRefresh) 12 | + (instancetype)mj_refreshBundle; 13 | + (UIImage *)mj_arrowImage; 14 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value; 15 | + (NSString *)mj_localizedStringForKey:(NSString *)key; 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+MJRefresh.m 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 16/6/13. 6 | // Copyright © 2016年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "NSBundle+MJRefresh.h" 10 | #import "MJRefreshComponent.h" 11 | 12 | @implementation NSBundle (MJRefresh) 13 | + (instancetype)mj_refreshBundle 14 | { 15 | static NSBundle *refreshBundle = nil; 16 | if (refreshBundle == nil) { 17 | // 这里不使用mainBundle是为了适配pod 1.x和0.x 18 | refreshBundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[MJRefreshComponent class]] pathForResource:@"MJRefresh" ofType:@"bundle"]]; 19 | } 20 | return refreshBundle; 21 | } 22 | 23 | + (UIImage *)mj_arrowImage 24 | { 25 | static UIImage *arrowImage = nil; 26 | if (arrowImage == nil) { 27 | arrowImage = [[UIImage imageWithContentsOfFile:[[self mj_refreshBundle] pathForResource:@"arrow@2x" ofType:@"png"]] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 28 | } 29 | return arrowImage; 30 | } 31 | 32 | + (NSString *)mj_localizedStringForKey:(NSString *)key 33 | { 34 | return [self mj_localizedStringForKey:key value:nil]; 35 | } 36 | 37 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value 38 | { 39 | static NSBundle *bundle = nil; 40 | if (bundle == nil) { 41 | // (iOS获取的语言字符串比较不稳定)目前框架只处理en、zh-Hans、zh-Hant三种情况,其他按照系统默认处理 42 | NSString *language = [NSLocale preferredLanguages].firstObject; 43 | if ([language hasPrefix:@"en"]) { 44 | language = @"en"; 45 | } else if ([language hasPrefix:@"zh"]) { 46 | if ([language rangeOfString:@"Hans"].location != NSNotFound) { 47 | language = @"zh-Hans"; // 简体中文 48 | } else { // zh-Hant\zh-HK\zh-TW 49 | language = @"zh-Hant"; // 繁體中文 50 | } 51 | } else { 52 | language = @"en"; 53 | } 54 | 55 | // 从MJRefresh.bundle中查找资源 56 | bundle = [NSBundle bundleWithPath:[[NSBundle mj_refreshBundle] pathForResource:language ofType:@"lproj"]]; 57 | } 58 | value = [bundle localizedStringForKey:key value:value table:nil]; 59 | return [[NSBundle mainBundle] localizedStringForKey:key value:value table:nil]; 60 | } 61 | @end 62 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIScrollView (MJExtension) 13 | @property (readonly, nonatomic) UIEdgeInsets mj_inset; 14 | 15 | @property (assign, nonatomic) CGFloat mj_insetT; 16 | @property (assign, nonatomic) CGFloat mj_insetB; 17 | @property (assign, nonatomic) CGFloat mj_insetL; 18 | @property (assign, nonatomic) CGFloat mj_insetR; 19 | 20 | @property (assign, nonatomic) CGFloat mj_offsetX; 21 | @property (assign, nonatomic) CGFloat mj_offsetY; 22 | 23 | @property (assign, nonatomic) CGFloat mj_contentW; 24 | @property (assign, nonatomic) CGFloat mj_contentH; 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+MJRefresh.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 给ScrollView增加下拉刷新、上拉刷新的功能 9 | 10 | #import 11 | #import "MJRefreshConst.h" 12 | 13 | @class MJRefreshHeader, MJRefreshFooter; 14 | 15 | @interface NSObject (MJRefresh) 16 | + (void)exchangeInstanceMethod1:(SEL)method1 method2:(SEL)method2; 17 | + (void)exchangeClassMethod1:(SEL)method1 method2:(SEL)method2; 18 | @end 19 | 20 | @interface UIScrollView (MJRefresh) 21 | /** 下拉刷新控件 */ 22 | @property (strong, nonatomic) MJRefreshHeader *mj_header; 23 | @property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header"); 24 | /** 上拉刷新控件 */ 25 | @property (strong, nonatomic) MJRefreshFooter *mj_footer; 26 | @property (strong, nonatomic) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer"); 27 | 28 | #pragma mark - other 29 | - (NSInteger)mj_totalDataCount; 30 | @property (copy, nonatomic) void (^mj_reloadDataBlock)(NSInteger totalDataCount); 31 | @end 32 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIView (MJExtension) 13 | @property (assign, nonatomic) CGFloat mj_x; 14 | @property (assign, nonatomic) CGFloat mj_y; 15 | @property (assign, nonatomic) CGFloat mj_w; 16 | @property (assign, nonatomic) CGFloat mj_h; 17 | @property (assign, nonatomic) CGSize mj_size; 18 | @property (assign, nonatomic) CGPoint mj_origin; 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/UIView+MJExtension.m: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIView+Extension.m 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import "UIView+MJExtension.h" 11 | 12 | @implementation UIView (MJExtension) 13 | - (void)setMj_x:(CGFloat)mj_x 14 | { 15 | CGRect frame = self.frame; 16 | frame.origin.x = mj_x; 17 | self.frame = frame; 18 | } 19 | 20 | - (CGFloat)mj_x 21 | { 22 | return self.frame.origin.x; 23 | } 24 | 25 | - (void)setMj_y:(CGFloat)mj_y 26 | { 27 | CGRect frame = self.frame; 28 | frame.origin.y = mj_y; 29 | self.frame = frame; 30 | } 31 | 32 | - (CGFloat)mj_y 33 | { 34 | return self.frame.origin.y; 35 | } 36 | 37 | - (void)setMj_w:(CGFloat)mj_w 38 | { 39 | CGRect frame = self.frame; 40 | frame.size.width = mj_w; 41 | self.frame = frame; 42 | } 43 | 44 | - (CGFloat)mj_w 45 | { 46 | return self.frame.size.width; 47 | } 48 | 49 | - (void)setMj_h:(CGFloat)mj_h 50 | { 51 | CGRect frame = self.frame; 52 | frame.size.height = mj_h; 53 | self.frame = frame; 54 | } 55 | 56 | - (CGFloat)mj_h 57 | { 58 | return self.frame.size.height; 59 | } 60 | 61 | - (void)setMj_size:(CGSize)mj_size 62 | { 63 | CGRect frame = self.frame; 64 | frame.size = mj_size; 65 | self.frame = frame; 66 | } 67 | 68 | - (CGSize)mj_size 69 | { 70 | return self.frame.size; 71 | } 72 | 73 | - (void)setMj_origin:(CGPoint)mj_origin 74 | { 75 | CGRect frame = self.frame; 76 | frame.origin = mj_origin; 77 | self.frame = frame; 78 | } 79 | 80 | - (CGPoint)mj_origin 81 | { 82 | return self.frame.origin; 83 | } 84 | @end 85 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - AFNetworking (3.1.0): 3 | - AFNetworking/NSURLSession (= 3.1.0) 4 | - AFNetworking/Reachability (= 3.1.0) 5 | - AFNetworking/Security (= 3.1.0) 6 | - AFNetworking/Serialization (= 3.1.0) 7 | - AFNetworking/UIKit (= 3.1.0) 8 | - AFNetworking/NSURLSession (3.1.0): 9 | - AFNetworking/Reachability 10 | - AFNetworking/Security 11 | - AFNetworking/Serialization 12 | - AFNetworking/Reachability (3.1.0) 13 | - AFNetworking/Security (3.1.0) 14 | - AFNetworking/Serialization (3.1.0) 15 | - AFNetworking/UIKit (3.1.0): 16 | - AFNetworking/NSURLSession 17 | - Masonry (1.1.0) 18 | - MBProgressHUD (1.1.0) 19 | - MJExtension (3.0.13) 20 | - MJRefresh (3.1.15.1) 21 | 22 | DEPENDENCIES: 23 | - AFNetworking (~> 3.0) 24 | - Masonry 25 | - MBProgressHUD 26 | - MJExtension 27 | - MJRefresh 28 | 29 | SPEC CHECKSUMS: 30 | AFNetworking: 5e0e199f73d8626b11e79750991f5d173d1f8b67 31 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 32 | MBProgressHUD: e7baa36a220447d8aeb12769bf0585582f3866d9 33 | MJExtension: 5932755f451458eefa24239358817f8d291240c7 34 | MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6 35 | 36 | PODFILE CHECKSUM: 89d7e9438bc277d90a6edb2ff41b50d66d96bd72 37 | 38 | COCOAPODS: 1.3.1 39 | -------------------------------------------------------------------------------- /Pods/Masonry/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASCompositeConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | #import "MASUtilities.h" 11 | 12 | /** 13 | * A group of MASConstraint objects 14 | */ 15 | @interface MASCompositeConstraint : MASConstraint 16 | 17 | /** 18 | * Creates a composite with a predefined array of children 19 | * 20 | * @param children child MASConstraints 21 | * 22 | * @return a composite constraint 23 | */ 24 | - (id)initWithChildren:(NSArray *)children; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASConstraint+Private.h 3 | // Masonry 4 | // 5 | // Created by Nick Tymchenko on 29/04/14. 6 | // Copyright (c) 2014 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | 11 | @protocol MASConstraintDelegate; 12 | 13 | 14 | @interface MASConstraint () 15 | 16 | /** 17 | * Whether or not to check for an existing constraint instead of adding constraint 18 | */ 19 | @property (nonatomic, assign) BOOL updateExisting; 20 | 21 | /** 22 | * Usually MASConstraintMaker but could be a parent MASConstraint 23 | */ 24 | @property (nonatomic, weak) id delegate; 25 | 26 | /** 27 | * Based on a provided value type, is equal to calling: 28 | * NSNumber - setOffset: 29 | * NSValue with CGPoint - setPointOffset: 30 | * NSValue with CGSize - setSizeOffset: 31 | * NSValue with MASEdgeInsets - setInsets: 32 | */ 33 | - (void)setLayoutConstantWithValue:(NSValue *)value; 34 | 35 | @end 36 | 37 | 38 | @interface MASConstraint (Abstract) 39 | 40 | /** 41 | * Sets the constraint relation to given NSLayoutRelation 42 | * returns a block which accepts one of the following: 43 | * MASViewAttribute, UIView, NSValue, NSArray 44 | * see readme for more details. 45 | */ 46 | - (MASConstraint * (^)(id, NSLayoutRelation))equalToWithRelation; 47 | 48 | /** 49 | * Override to set a custom chaining behaviour 50 | */ 51 | - (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute; 52 | 53 | @end 54 | 55 | 56 | @protocol MASConstraintDelegate 57 | 58 | /** 59 | * Notifies the delegate when the constraint needs to be replaced with another constraint. For example 60 | * A MASViewConstraint may turn into a MASCompositeConstraint when an array is passed to one of the equality blocks 61 | */ 62 | - (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(MASConstraint *)replacementConstraint; 63 | 64 | - (MASConstraint *)constraint:(MASConstraint *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute; 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * When you are debugging or printing the constraints attached to a view this subclass 13 | * makes it easier to identify which constraints have been created via Masonry 14 | */ 15 | @interface MASLayoutConstraint : NSLayoutConstraint 16 | 17 | /** 18 | * a key to associate with this constraint 19 | */ 20 | @property (nonatomic, strong) id mas_key; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASLayoutConstraint.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASLayoutConstraint.h" 10 | 11 | @implementation MASLayoutConstraint 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewAttribute.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * An immutable tuple which stores the view and the related NSLayoutAttribute. 13 | * Describes part of either the left or right hand side of a constraint equation 14 | */ 15 | @interface MASViewAttribute : NSObject 16 | 17 | /** 18 | * The view which the reciever relates to. Can be nil if item is not a view. 19 | */ 20 | @property (nonatomic, weak, readonly) MAS_VIEW *view; 21 | 22 | /** 23 | * The item which the reciever relates to. 24 | */ 25 | @property (nonatomic, weak, readonly) id item; 26 | 27 | /** 28 | * The attribute which the reciever relates to 29 | */ 30 | @property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute; 31 | 32 | /** 33 | * Convenience initializer. 34 | */ 35 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute; 36 | 37 | /** 38 | * The designated initializer. 39 | */ 40 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute; 41 | 42 | /** 43 | * Determine whether the layoutAttribute is a size attribute 44 | * 45 | * @return YES if layoutAttribute is equal to NSLayoutAttributeWidth or NSLayoutAttributeHeight 46 | */ 47 | - (BOOL)isSizeAttribute; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASViewAttribute.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewAttribute.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | 11 | @implementation MASViewAttribute 12 | 13 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute { 14 | self = [self initWithView:view item:view layoutAttribute:layoutAttribute]; 15 | return self; 16 | } 17 | 18 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute { 19 | self = [super init]; 20 | if (!self) return nil; 21 | 22 | _view = view; 23 | _item = item; 24 | _layoutAttribute = layoutAttribute; 25 | 26 | return self; 27 | } 28 | 29 | - (BOOL)isSizeAttribute { 30 | return self.layoutAttribute == NSLayoutAttributeWidth 31 | || self.layoutAttribute == NSLayoutAttributeHeight; 32 | } 33 | 34 | - (BOOL)isEqual:(MASViewAttribute *)viewAttribute { 35 | if ([viewAttribute isKindOfClass:self.class]) { 36 | return self.view == viewAttribute.view 37 | && self.layoutAttribute == viewAttribute.layoutAttribute; 38 | } 39 | return [super isEqual:viewAttribute]; 40 | } 41 | 42 | - (NSUInteger)hash { 43 | return MAS_NSUINTROTATE([self.view hash], MAS_NSUINT_BIT / 2) ^ self.layoutAttribute; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | #import "MASConstraint.h" 11 | #import "MASLayoutConstraint.h" 12 | #import "MASUtilities.h" 13 | 14 | /** 15 | * A single constraint. 16 | * Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view 17 | */ 18 | @interface MASViewConstraint : MASConstraint 19 | 20 | /** 21 | * First item/view and first attribute of the NSLayoutConstraint 22 | */ 23 | @property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute; 24 | 25 | /** 26 | * Second item/view and second attribute of the NSLayoutConstraint 27 | */ 28 | @property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute; 29 | 30 | /** 31 | * initialises the MASViewConstraint with the first part of the equation 32 | * 33 | * @param firstViewAttribute view.mas_left, view.mas_width etc. 34 | * 35 | * @return a new view constraint 36 | */ 37 | - (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute; 38 | 39 | /** 40 | * Returns all MASViewConstraints installed with this view as a first item. 41 | * 42 | * @param view A view to retrieve constraints for. 43 | * 44 | * @return An array of MASViewConstraints. 45 | */ 46 | + (NSArray *)installedConstraintsForView:(MAS_VIEW *)view; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | // 2 | // Masonry.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for Masonry. 12 | FOUNDATION_EXPORT double MasonryVersionNumber; 13 | 14 | //! Project version string for Masonry. 15 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[]; 16 | 17 | #import "MASUtilities.h" 18 | #import "View+MASAdditions.h" 19 | #import "View+MASShorthandAdditions.h" 20 | #import "ViewController+MASAdditions.h" 21 | #import "NSArray+MASAdditions.h" 22 | #import "NSArray+MASShorthandAdditions.h" 23 | #import "MASConstraint.h" 24 | #import "MASCompositeConstraint.h" 25 | #import "MASViewAttribute.h" 26 | #import "MASViewConstraint.h" 27 | #import "MASConstraintMaker.h" 28 | #import "MASLayoutConstraint.h" 29 | #import "NSLayoutConstraint+MASDebugAdditions.h" 30 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+MASShorthandAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 22/07/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "NSArray+MASAdditions.h" 10 | 11 | #ifdef MAS_SHORTHAND 12 | 13 | /** 14 | * Shorthand array additions without the 'mas_' prefixes, 15 | * only enabled if MAS_SHORTHAND is defined 16 | */ 17 | @interface NSArray (MASShorthandAdditions) 18 | 19 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block; 20 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block; 21 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block; 22 | 23 | @end 24 | 25 | @implementation NSArray (MASShorthandAdditions) 26 | 27 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block { 28 | return [self mas_makeConstraints:block]; 29 | } 30 | 31 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block { 32 | return [self mas_updateConstraints:block]; 33 | } 34 | 35 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block { 36 | return [self mas_remakeConstraints:block]; 37 | } 38 | 39 | @end 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+MASDebugAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * makes debug and log output of NSLayoutConstraints more readable 13 | */ 14 | @interface NSLayoutConstraint (MASDebugAdditions) 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.h 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | #ifdef MAS_VIEW_CONTROLLER 14 | 15 | @interface MAS_VIEW_CONTROLLER (MASAdditions) 16 | 17 | /** 18 | * following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute 19 | */ 20 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide; 21 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide; 22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop; 23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom; 24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop; 25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom; 26 | 27 | 28 | @end 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/ViewController+MASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.m 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "ViewController+MASAdditions.h" 10 | 11 | #ifdef MAS_VIEW_CONTROLLER 12 | 13 | @implementation MAS_VIEW_CONTROLLER (MASAdditions) 14 | 15 | - (MASViewAttribute *)mas_topLayoutGuide { 16 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 17 | } 18 | - (MASViewAttribute *)mas_topLayoutGuideTop { 19 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 20 | } 21 | - (MASViewAttribute *)mas_topLayoutGuideBottom { 22 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 23 | } 24 | 25 | - (MASViewAttribute *)mas_bottomLayoutGuide { 26 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 27 | } 28 | - (MASViewAttribute *)mas_bottomLayoutGuideTop { 29 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 30 | } 31 | - (MASViewAttribute *)mas_bottomLayoutGuideBottom { 32 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 33 | } 34 | 35 | 36 | 37 | @end 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/chenling.xcuserdatad/xcschemes/MJExtension.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/chenling.xcuserdatad/xcschemes/MJRefresh.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/chenling.xcuserdatad/xcschemes/Masonry.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/chenling.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | AFNetworking.xcscheme 8 | 9 | isShown 10 | 11 | orderHint 12 | 0 13 | 14 | MBProgressHUD.xcscheme 15 | 16 | isShown 17 | 18 | orderHint 19 | 2 20 | 21 | MJExtension.xcscheme 22 | 23 | isShown 24 | 25 | orderHint 26 | 3 27 | 28 | MJRefresh.xcscheme 29 | 30 | isShown 31 | 32 | orderHint 33 | 4 34 | 35 | Masonry.xcscheme 36 | 37 | isShown 38 | 39 | orderHint 40 | 1 41 | 42 | Pods-SCMusic.xcscheme 43 | 44 | isShown 45 | 46 | orderHint 47 | 5 48 | 49 | 50 | SuppressBuildableAutocreation 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /Pods/Target Support Files/AFNetworking/AFNetworking-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_AFNetworking : NSObject 3 | @end 4 | @implementation PodsDummy_AFNetworking 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #ifndef TARGET_OS_IOS 14 | #define TARGET_OS_IOS TARGET_OS_IPHONE 15 | #endif 16 | 17 | #ifndef TARGET_OS_WATCH 18 | #define TARGET_OS_WATCH 0 19 | #endif 20 | 21 | #ifndef TARGET_OS_TV 22 | #define TARGET_OS_TV 0 23 | #endif 24 | -------------------------------------------------------------------------------- /Pods/Target Support Files/AFNetworking/AFNetworking-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "AFNetworking.h" 14 | #import "AFHTTPSessionManager.h" 15 | #import "AFURLSessionManager.h" 16 | #import "AFNetworkReachabilityManager.h" 17 | #import "AFSecurityPolicy.h" 18 | #import "AFURLRequestSerialization.h" 19 | #import "AFURLResponseSerialization.h" 20 | #import "AFAutoPurgingImageCache.h" 21 | #import "AFImageDownloader.h" 22 | #import "AFNetworkActivityIndicatorManager.h" 23 | #import "UIActivityIndicatorView+AFNetworking.h" 24 | #import "UIButton+AFNetworking.h" 25 | #import "UIImage+AFNetworking.h" 26 | #import "UIImageView+AFNetworking.h" 27 | #import "UIKit+AFNetworking.h" 28 | #import "UIProgressView+AFNetworking.h" 29 | #import "UIRefreshControl+AFNetworking.h" 30 | #import "UIWebView+AFNetworking.h" 31 | 32 | FOUNDATION_EXPORT double AFNetworkingVersionNumber; 33 | FOUNDATION_EXPORT const unsigned char AFNetworkingVersionString[]; 34 | 35 | -------------------------------------------------------------------------------- /Pods/Target Support Files/AFNetworking/AFNetworking.modulemap: -------------------------------------------------------------------------------- 1 | framework module AFNetworking { 2 | umbrella header "AFNetworking-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/AFNetworking 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/AFNetworking 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/AFNetworking/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MBProgressHUD/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MBProgressHUD/MBProgressHUD-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MBProgressHUD : NSObject 3 | @end 4 | @implementation PodsDummy_MBProgressHUD 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MBProgressHUD/MBProgressHUD-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "MBProgressHUD.h" 14 | 15 | FOUNDATION_EXPORT double MBProgressHUDVersionNumber; 16 | FOUNDATION_EXPORT const unsigned char MBProgressHUDVersionString[]; 17 | 18 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MBProgressHUD/MBProgressHUD.modulemap: -------------------------------------------------------------------------------- 1 | framework module MBProgressHUD { 2 | umbrella header "MBProgressHUD-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MBProgressHUD/MBProgressHUD.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MBProgressHUD 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "CoreGraphics" -framework "QuartzCore" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MBProgressHUD 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJExtension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.0.13 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJExtension/MJExtension-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MJExtension : NSObject 3 | @end 4 | @implementation PodsDummy_MJExtension 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJExtension/MJExtension-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJExtension/MJExtension-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "MJExtension.h" 14 | #import "MJExtensionConst.h" 15 | #import "MJFoundation.h" 16 | #import "MJProperty.h" 17 | #import "MJPropertyKey.h" 18 | #import "MJPropertyType.h" 19 | #import "NSObject+MJClass.h" 20 | #import "NSObject+MJCoding.h" 21 | #import "NSObject+MJKeyValue.h" 22 | #import "NSObject+MJProperty.h" 23 | #import "NSString+MJExtension.h" 24 | 25 | FOUNDATION_EXPORT double MJExtensionVersionNumber; 26 | FOUNDATION_EXPORT const unsigned char MJExtensionVersionString[]; 27 | 28 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJExtension/MJExtension.modulemap: -------------------------------------------------------------------------------- 1 | framework module MJExtension { 2 | umbrella header "MJExtension-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJExtension/MJExtension.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MJExtension 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | PODS_BUILD_DIR = $BUILD_DIR 5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJExtension 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.15 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MJRefresh : NSObject 3 | @end 4 | @implementation PodsDummy_MJRefresh 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/MJRefresh-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/MJRefresh-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "MJRefreshAutoFooter.h" 14 | #import "MJRefreshBackFooter.h" 15 | #import "MJRefreshComponent.h" 16 | #import "MJRefreshFooter.h" 17 | #import "MJRefreshHeader.h" 18 | #import "MJRefreshAutoGifFooter.h" 19 | #import "MJRefreshAutoNormalFooter.h" 20 | #import "MJRefreshAutoStateFooter.h" 21 | #import "MJRefreshBackGifFooter.h" 22 | #import "MJRefreshBackNormalFooter.h" 23 | #import "MJRefreshBackStateFooter.h" 24 | #import "MJRefreshGifHeader.h" 25 | #import "MJRefreshNormalHeader.h" 26 | #import "MJRefreshStateHeader.h" 27 | #import "MJRefresh.h" 28 | #import "MJRefreshConst.h" 29 | #import "NSBundle+MJRefresh.h" 30 | #import "UIScrollView+MJExtension.h" 31 | #import "UIScrollView+MJRefresh.h" 32 | #import "UIView+MJExtension.h" 33 | 34 | FOUNDATION_EXPORT double MJRefreshVersionNumber; 35 | FOUNDATION_EXPORT const unsigned char MJRefreshVersionString[]; 36 | 37 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/MJRefresh.modulemap: -------------------------------------------------------------------------------- 1 | framework module MJRefresh { 2 | umbrella header "MJRefresh-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MJRefresh 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | PODS_BUILD_DIR = $BUILD_DIR 5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Masonry-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Masonry : NSObject 3 | @end 4 | @implementation PodsDummy_Masonry 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Masonry-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Masonry-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "MASCompositeConstraint.h" 14 | #import "MASConstraint+Private.h" 15 | #import "MASConstraint.h" 16 | #import "MASConstraintMaker.h" 17 | #import "MASLayoutConstraint.h" 18 | #import "Masonry.h" 19 | #import "MASUtilities.h" 20 | #import "MASViewAttribute.h" 21 | #import "MASViewConstraint.h" 22 | #import "NSArray+MASAdditions.h" 23 | #import "NSArray+MASShorthandAdditions.h" 24 | #import "NSLayoutConstraint+MASDebugAdditions.h" 25 | #import "View+MASAdditions.h" 26 | #import "View+MASShorthandAdditions.h" 27 | #import "ViewController+MASAdditions.h" 28 | 29 | FOUNDATION_EXPORT double MasonryVersionNumber; 30 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[]; 31 | 32 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Masonry.modulemap: -------------------------------------------------------------------------------- 1 | framework module Masonry { 2 | umbrella header "Masonry-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Masonry.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Masonry 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-SCMusic/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-SCMusic/Pods-SCMusic-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_SCMusic : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_SCMusic 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-SCMusic/Pods-SCMusic-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_SCMusicVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_SCMusicVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-SCMusic/Pods-SCMusic.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/MBProgressHUD" "$PODS_CONFIGURATION_BUILD_DIR/MJExtension" "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh" "$PODS_CONFIGURATION_BUILD_DIR/Masonry" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MBProgressHUD/MBProgressHUD.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MJExtension/MJExtension.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh/MJRefresh.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Masonry/Masonry.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-SCMusic/Pods-SCMusic.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_SCMusic { 2 | umbrella header "Pods-SCMusic-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-SCMusic/Pods-SCMusic.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/MBProgressHUD" "$PODS_CONFIGURATION_BUILD_DIR/MJExtension" "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh" "$PODS_CONFIGURATION_BUILD_DIR/Masonry" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking/AFNetworking.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MBProgressHUD/MBProgressHUD.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MJExtension/MJExtension.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/MJRefresh/MJRefresh.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Masonry/Masonry.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SCMusic 2 | 3 | ## 简介: 4 | SCMusic一款网络音乐播放器,数据来源于百度音乐,支持播放、暂停、上一曲、下一曲、3种播放模式、歌词显示、后台播放、锁屏播放、锁屏歌词等。 5 | 6 | ### 详情请看我写的两篇博文: 7 | [iOS开发之网络音乐播放器(SC音乐)(一)](http://blog.csdn.net/u014636932/article/details/77622358)
8 | [iOS开发之网络音乐播放器(SC音乐)(二)](http://blog.csdn.net/u014636932/article/details/77878371)
9 | 10 | 11 | ## Abstract: 12 | SC Music Player is a music player which get the data from the baidu music. SC Music Player support play , pause, next song, previous song,3 kind of play mode(playListRepeat, oneSongRepeat, shuffle), lyrics show, background play, lock screen play. 13 | 14 | ### Here is detail: 15 | [iOS开发之网络音乐播放器(SC音乐)(一)](http://blog.csdn.net/u014636932/article/details/77966940)
16 | [iOS开发之网络音乐播放器(SC音乐)(二)](http://blog.csdn.net/u014636932/article/details/77878371)
17 | 18 | 19 | 20 | ## 2017-12-09更新: 21 | 之前的项目升级到iOS11出现了一些问题,在适配iOS11的同时重写了UI,修复了歌词滚动的bug,歌曲类型增加了Bill、摇滚、爵士、流行、情歌,对于歌曲加载采用了懒加载、上拉刷新和下拉加载更多。tableView的数据过多采用懒加载和滑动结束才加载能显著提升性能。 22 | 23 | App截图: 24 | 25 | 26 | ![SCMusic截图](https://github.com/Mozartisnotmyname/SCMusic/edit/master/SCMusic截图.png)   27 | -------------------------------------------------------------------------------- /SCMusic.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SCMusic.xcodeproj/project.xcworkspace/xcuserdata/chenling.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic.xcodeproj/project.xcworkspace/xcuserdata/chenling.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /SCMusic.xcodeproj/xcuserdata/chenling.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /SCMusic.xcodeproj/xcuserdata/chenling.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | SCMusic.xcscheme 8 | 9 | orderHint 10 | 6 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /SCMusic.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /SCMusic.xcworkspace/xcuserdata/chenling.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic.xcworkspace/xcuserdata/chenling.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /SCMusic.xcworkspace/xcuserdata/chenling.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 20 | 21 | 22 | 24 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /SCMusic/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/.DS_Store -------------------------------------------------------------------------------- /SCMusic/Classes/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Classes/.DS_Store -------------------------------------------------------------------------------- /SCMusic/Classes/Controller/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // BaiduMusic 4 | // 5 | // Created by 凌       陈 on 8/18/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /SCMusic/Classes/Controller/ContentTableViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ContentTableViewController.h 3 | // SCMusic 4 | // 5 | // Created by 凌       陈 on 11/23/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AFNetworking.h" 11 | #import "OMHotSongInfo.h" 12 | #import "OMSongInfo.h" 13 | #import "OMAlbumInfo.h" 14 | #import "OMArtistInfo.h" 15 | #import "MJRefresh.h" 16 | #import "Const.h" 17 | #import "MusicDownloader.h" 18 | #import "DetailControlViewController.h" 19 | 20 | @interface ContentTableViewController : UITableViewController 21 | 22 | @property (nonatomic, strong) NSString *channelTitle; 23 | @property (nonatomic, strong) DetailControlViewController *detailController; 24 | 25 | -(void)reloadData; 26 | -(void)getSelectedSong: (NSString *)songID index: (long)index; 27 | 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /SCMusic/Classes/Controller/DetailControlViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DetailControlViewController.h 3 | // SCNews 4 | // 5 | // Created by 凌       陈 on 11/3/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TopView.h" 11 | #import "MidView.h" 12 | #import "BottomView.h" 13 | #import "OMSongInfo.h" 14 | #import "MusicPlayerManager.h" 15 | #import "OMHotSongInfo.h" 16 | #import "SongListView.h" 17 | #import "Const.h" 18 | 19 | 20 | @interface DetailControlViewController : UIViewController 21 | 22 | // 底部弹出View 23 | @property (nonatomic ,strong) SongListView *songListView; // 底部View 24 | @property (nonatomic ,strong) UIView *shadowView; // 阴影部分 25 | @property(nonatomic, strong) TopView *topView; // SongListView的topView 26 | @property(nonatomic, strong) MidView *midView; 27 | @property(nonatomic, strong) BottomView *bottomView; 28 | @property(nonatomic, strong) UIImageView *backgroundImageView; 29 | 30 | -(void) setBackgroundImage: (UIImage *)image; 31 | -(void) playStateRecover; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /SCMusic/Classes/Controller/NavigationViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // NavigationViewController.h 3 | // QJSlideView 4 | // 5 | // Created by Justin on 16/3/10. 6 | // Copyright © 2016年 Justin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "RootViewController.h" 11 | 12 | @interface NavigationViewController : UINavigationController 13 | 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SCMusic/Classes/Controller/NavigationViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // NavigationViewController.m 3 | // QJSlideView 4 | // 5 | // Created by Justin on 16/3/10. 6 | // Copyright © 2016年 Justin. All rights reserved. 7 | // 8 | 9 | #import "NavigationViewController.h" 10 | 11 | 12 | @implementation NavigationViewController 13 | 14 | #pragma mark - viewDidLoad 15 | - (void)viewDidLoad { 16 | [super viewDidLoad]; 17 | // Do any additional setup after loading the view. 18 | //[self.navigationBar setBarTintColor:UIColorFromRGB(0x5c8aea)]; 19 | 20 | [self navigationBarSettting]; 21 | } 22 | 23 | 24 | - (void)didReceiveMemoryWarning { 25 | [super didReceiveMemoryWarning]; 26 | // Dispose of any resources that can be recreated. 27 | } 28 | 29 | 30 | // ------------------------------------------------------------------------------- 31 | // navigationBarSettting: 32 | // Setting navigationBar 33 | // ------------------------------------------------------------------------------- 34 | -(void) navigationBarSettting { 35 | 36 | [self.navigationBar setBarTintColor:UIColorFromRGB(0xff0000)]; 37 | [self.navigationBar setTranslucent:NO]; 38 | [self.navigationBar setTintColor:[UIColor whiteColor]]; 39 | [self.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName, nil]]; 40 | 41 | // 去掉导航分割线 42 | [self.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; 43 | [self.navigationBar setShadowImage:[[UIImage alloc] init]]; 44 | } 45 | 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /SCMusic/Classes/Controller/RootViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // RootViewController.h 3 | // BaiduMusic 4 | // 5 | // Created by 凌       陈 on 8/18/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AFNetworking.h" 11 | #import "MJExtension.h" 12 | #import "OMHotSongInfo.h" 13 | #import "OMSongInfo.h" 14 | #import "MusicPlayerManager.h" 15 | #import "OMHotSongInfo.h" 16 | #import 17 | #import 18 | #import 19 | #import "SCImageView.h" 20 | #import "DetailControlViewController.h" 21 | #import "Const.h" 22 | #import "TTTopChannelContianerView.h" 23 | #import "ContentTableViewController.h" 24 | #import "Masonry.h" 25 | 26 | @interface RootViewController : UIViewController 27 | 28 | @property (nonatomic, strong) NSMutableArray *currentChannelsArray; 29 | @property (nonatomic, weak) TTTopChannelContianerView *topContianerView; 30 | @property (nonatomic, strong) DetailControlViewController *detailController; 31 | @property (nonatomic, weak) UIScrollView *contentScrollView; 32 | @property (nonatomic, strong) NSArray *arrayLists; 33 | 34 | 35 | //当前歌词所在位置 36 | @property (nonatomic,assign) NSInteger currentRow; 37 | 38 | 39 | //锁屏图片视图,用来绘制带歌词的image 40 | @property (nonatomic, strong) UIImageView * lrcImageView; 41 | @property (nonatomic, strong) UIImage * lastImage;//最后一次锁屏之后的歌词海报 42 | 43 | // playControllerView 控件 44 | @property (nonatomic, strong) UIView *playControllerView; 45 | @property (nonatomic, strong) SCImageView *currentPlaySongImage; 46 | @property (nonatomic, strong) UIButton *playAndPauseButton; 47 | @property (nonatomic, strong) UIButton *nextSongButton; 48 | @property (nonatomic, strong) UISlider *songSlider; 49 | @property (nonatomic, strong) UILabel *songName; 50 | @property (nonatomic, strong) UILabel *singerName; 51 | 52 | @property (nonatomic, strong) id playerTimeObserver; 53 | 54 | @end 55 | 56 | -------------------------------------------------------------------------------- /SCMusic/Classes/Model/Const.h: -------------------------------------------------------------------------------- 1 | // 2 | // Const.h 3 | // SCMusic 4 | // 5 | // Created by 凌       陈 on 11/23/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | // color const 12 | #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] 13 | 14 | // size const 15 | #define ScreenWidth ([UIScreen mainScreen].bounds.size.width) 16 | #define ScreenHeight ([UIScreen mainScreen].bounds.size.height) 17 | 18 | // Music const 19 | #define NEW_SONG_LIST 1 20 | #define HOT_SONG_LIST 2 21 | #define OLD_SONG_LIST 22 22 | #define LOVE_SONG_LIST 23 23 | #define INTERNET_SONG_LIST 25 24 | #define MOVIE_SONG_LIST 24 25 | #define EUROPE_SONG_LIST 21 26 | #define BILLBOARD_MUSIC_LIST 8 27 | #define ROCK_MUSIC_LIST 11 28 | #define JAZZ_MUSIC_LIST 12 29 | #define POP_MUSIC_LIST 16 30 | 31 | @interface Const : NSObject 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /SCMusic/Classes/Model/Const.m: -------------------------------------------------------------------------------- 1 | // 2 | // Const.m 3 | // SCMusic 4 | // 5 | // Created by 凌       陈 on 11/23/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import "Const.h" 10 | 11 | @implementation Const 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SCMusic/Classes/Model/OMAlbumInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // OMAlbumInfo.h 3 | // KEF LS50 4 | // 5 | // Created by sse-jiaoxinlong on 15-9-22. 6 | // Copyright (c) 2015年 GPE. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface OMAlbumInfo : NSObject 12 | @property (nonatomic, strong) NSString *album_id; 13 | @property (nonatomic, strong) NSString *title; 14 | @property (nonatomic, strong) NSString *pic_small; 15 | @property (nonatomic, strong) NSString *pic_big; 16 | @end 17 | -------------------------------------------------------------------------------- /SCMusic/Classes/Model/OMAlbumInfo.m: -------------------------------------------------------------------------------- 1 | // 2 | // OMAlbumInfo.m 3 | // KEF LS50 4 | // 5 | // Created by sse-jiaoxinlong on 15-9-22. 6 | // Copyright (c) 2015年 GPE. All rights reserved. 7 | // 8 | 9 | #import "OMAlbumInfo.h" 10 | 11 | @implementation OMAlbumInfo 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SCMusic/Classes/Model/OMArtistInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // OMArtistInfo.h 3 | // KEF LS50 4 | // 5 | // Created by sse-jiaoxinlong on 15-9-22. 6 | // Copyright (c) 2015年 GPE. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface OMArtistInfo : NSObject 12 | @property (nonatomic,strong) NSString *ting_uid; 13 | @property (nonatomic,strong) NSString *name; 14 | @property (nonatomic,strong) NSString *avatar_big; 15 | @property (nonatomic,strong) NSString *avatar_middle; 16 | @end 17 | -------------------------------------------------------------------------------- /SCMusic/Classes/Model/OMArtistInfo.m: -------------------------------------------------------------------------------- 1 | // 2 | // OMArtistInfo.m 3 | // KEF LS50 4 | // 5 | // Created by sse-jiaoxinlong on 15-9-22. 6 | // Copyright (c) 2015年 GPE. All rights reserved. 7 | // 8 | 9 | #import "OMArtistInfo.h" 10 | 11 | @implementation OMArtistInfo 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SCMusic/Classes/Model/OMHotSongInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // OMSongInfo.h 3 | // KEF LS50 4 | // 5 | // Created by sse-jiaoxinlong on 15-9-22. 6 | // Copyright (c) 2015年 GPE. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface OMHotSongInfo : NSObject 13 | @property (nonatomic,strong) UIImage *albumImage_big; 14 | @property (nonatomic,strong) UIImage *albumImage_small; 15 | @property (nonatomic,strong) NSString *pic_big; 16 | @property (nonatomic,strong) NSString *lrclink; 17 | @property (nonatomic,strong) NSString *pic_small; 18 | @property (nonatomic,strong) NSString *song_id; 19 | @property (nonatomic,strong) NSString *title; 20 | @property (nonatomic,strong) NSString *author; 21 | @property (nonatomic,strong) NSString *album_title; 22 | @property (nonatomic,strong) NSString *file_duration; 23 | 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /SCMusic/Classes/Model/OMHotSongInfo.m: -------------------------------------------------------------------------------- 1 | // 2 | // OMSongInfo.m 3 | // KEF LS50 4 | // 5 | // Created by sse-jiaoxinlong on 15-9-22. 6 | // Copyright (c) 2015年 GPE. All rights reserved. 7 | // 8 | 9 | #import "OMHotSongInfo.h" 10 | 11 | @implementation OMHotSongInfo 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SCMusic/Classes/Model/OMSongInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // OMSongInfo.h 3 | // BaiduMusic 4 | // 5 | // Created by 凌       陈 on 8/21/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "AFNetworking.h" 12 | #import "MJExtension.h" 13 | #import "OMHotSongInfo.h" 14 | 15 | 16 | @interface OMSongInfo : NSObject 17 | + (OMSongInfo *)sharedManager; 18 | @property (nonatomic,strong) UIImage *pic_big; 19 | @property (nonatomic,strong) UIImage *pic_small; 20 | @property (nonatomic,strong) NSString *song_id; 21 | @property (nonatomic,strong) NSString *title; 22 | @property (nonatomic,strong) NSString *author; 23 | @property (nonatomic,strong) NSString *album_title; 24 | @property (nonatomic,strong) NSString *file_duration; 25 | @property (nonatomic,strong) NSString *file_link; 26 | @property (nonatomic,strong) NSString *file_size; 27 | @property (nonatomic,strong) NSString *lrclink; 28 | @property (nonatomic,assign) BOOL isLrcExistFlg; 29 | @property (nonatomic,strong) NSString *lrcString; 30 | @property (nonatomic,strong) NSMutableDictionary *mLRCDictinary; 31 | @property (nonatomic,strong) NSMutableArray *mTimeArray; 32 | @property (nonatomic,assign) int lrcIndex; 33 | @property (nonatomic,assign) long playSongIndex; 34 | @property (nonatomic,assign) BOOL isDataRequestFinish; 35 | @property (nonatomic,strong) NSArray *OMSongs; 36 | 37 | 38 | - (void)loadNewSongs: (UITableView *)songListTableView; 39 | - (void)loadHotSongs: (UITableView *)songListTableView; 40 | - (void)loadHotArtists: (UITableView *)songListTableView; 41 | - (void)loadClassicOldSongs: (UITableView *)songListTableView; 42 | - (void)loadLoveSongs: (UITableView *)songListTableView; 43 | - (void)loadMovieSongs: (UITableView *)songListTableView; 44 | - (void)loadEuropeAndTheUnitedStatesSongs: (UITableView *)songListTableView; 45 | 46 | -(void)getSelectedSong: (NSString *)songID index: (long)index; 47 | -(void) setSongInfo: (OMHotSongInfo *)info; 48 | -(NSString *)intToString: (int)needTransformInteger; 49 | -(int) stringToInt: (NSString *)timeString; 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /SCMusic/Classes/MusicDownloader/MusicDownloader.h: -------------------------------------------------------------------------------- 1 | // 2 | // DownloadTool.h 3 | // LazyLoadingTableView 4 | // 5 | // Created by 凌       陈 on 10/19/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "AFNetworking.h" 12 | #import "MJExtension.h" 13 | #import "OMHotSongInfo.h" 14 | #import "OMSongInfo.h" 15 | 16 | @interface MusicDownloader : NSObject 17 | 18 | @property (nonatomic, assign) BOOL isDataRequestFinish; 19 | 20 | @property (nonatomic, strong) OMHotSongInfo *hotSonginfo; 21 | 22 | @property (nonatomic, copy) void (^completionHandler)(void); 23 | 24 | @property (nonatomic, strong) OMSongInfo *songInfo; 25 | 26 | -(void) requestData: (NSString *)urlString ; 27 | - (void)startDownload; 28 | - (void)cancelDownload; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /SCMusic/Classes/MusicPlayerManager/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Classes/MusicPlayerManager/.DS_Store -------------------------------------------------------------------------------- /SCMusic/Classes/MusicPlayerManager/MusicPlayerManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // MusicPlayerManager.h 3 | // BaiduMusic 4 | // 5 | // Created by 凌       陈 on 8/21/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface MusicPlayerManager : NSObject 13 | 14 | typedef enum : NSUInteger { 15 | RepeatPlayMode, 16 | RepeatOnlyOnePlayMode, 17 | ShufflePlayMode, 18 | } ShuffleAndRepeatState; 19 | 20 | @property (nonatomic,strong) AVPlayer *play; 21 | @property (nonatomic,strong) AVPlayerItem *playItem; 22 | @property (nonatomic,assign) ShuffleAndRepeatState shuffleAndRepeatState; 23 | @property (nonatomic,assign) NSInteger playingIndex; 24 | 25 | + (MusicPlayerManager *)sharedManager; 26 | -(void) setPlayItem: (NSString *)songURL; 27 | -(void) setPlay; 28 | -(void) startPlay; 29 | -(void) stopPlay; 30 | -(void) play: (NSString *)songURL; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /SCMusic/Classes/MusicPlayerManager/MusicPlayerManager.m: -------------------------------------------------------------------------------- 1 | // 2 | // MusicPlayerManager.m 3 | // BaiduMusic 4 | // 5 | // Created by 凌       陈 on 8/21/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import "MusicPlayerManager.h" 10 | 11 | 12 | @implementation MusicPlayerManager 13 | 14 | static MusicPlayerManager *_sharedManager = nil; 15 | 16 | +(MusicPlayerManager *)sharedManager { 17 | @synchronized( [MusicPlayerManager class] ){ 18 | if(!_sharedManager) 19 | _sharedManager = [[self alloc] init]; 20 | return _sharedManager; 21 | } 22 | return nil; 23 | } 24 | 25 | 26 | -(void) setPlayItem: (NSString *)songURL { 27 | NSURL * url = [NSURL URLWithString:songURL]; 28 | _playItem = [[AVPlayerItem alloc] initWithURL:url]; 29 | } 30 | 31 | -(void) setPlay { 32 | _play = [[AVPlayer alloc] initWithPlayerItem:_playItem]; 33 | } 34 | 35 | -(void) startPlay { 36 | [_play play]; 37 | } 38 | 39 | -(void) stopPlay { 40 | [_play pause]; 41 | } 42 | 43 | -(void) play: (NSString *)songURL { 44 | [self setPlayItem:songURL]; 45 | [self setPlay]; 46 | [self startPlay]; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Classes/View/.DS_Store -------------------------------------------------------------------------------- /SCMusic/Classes/View/DetailControlView/BottomView/BottomView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BottomView.h 3 | // UIViewClickedAction 4 | // 5 | // Created by 凌       陈 on 8/22/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface BottomView : UIView 13 | 14 | @property (nonatomic, strong) UIButton *preSongButtton; 15 | @property (nonatomic, strong) UIButton *nextSongButton; 16 | @property (nonatomic, strong) UIButton *playOrPauseButton; 17 | @property (nonatomic, strong) UIButton *playModeButton; 18 | @property (nonatomic, strong) UIButton *songListButton; 19 | @property (nonatomic, strong) UISlider *songSlider; 20 | @property (nonatomic, strong) UILabel *currentTimeLabel; 21 | @property (nonatomic, strong) UILabel *durationTimeLabel; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/DetailControlView/MidView/MidView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MidView.h 3 | // UIViewClickedAction 4 | // 5 | // Created by 凌       陈 on 8/22/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SCIconView.h" 11 | #import "SCLrcTableView.h" 12 | 13 | 14 | @interface MidView : UIScrollView 15 | 16 | @property (nonatomic, strong) SCIconView* midIconView; 17 | @property (nonatomic, strong) SCLrcTableView *midLrcView; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/DetailControlView/MidView/MidView.m: -------------------------------------------------------------------------------- 1 | // 2 | // MidView.m 3 | // UIViewClickedAction 4 | // 5 | // Created by 凌       陈 on 8/22/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import "MidView.h" 10 | 11 | #define Screen_Width ([UIScreen mainScreen].bounds.size.width) 12 | #define Screen_Height ([UIScreen mainScreen].bounds.size.height) 13 | 14 | @implementation MidView 15 | 16 | -(instancetype)initWithFrame:(CGRect)frame { 17 | self = [super initWithFrame:frame]; 18 | self.delegate = self; 19 | 20 | self.showsHorizontalScrollIndicator = false; 21 | 22 | self.pagingEnabled = true; 23 | 24 | self.contentSize = CGSizeMake(Screen_Width * 2, 0); 25 | 26 | // 专辑图片视图配置 27 | _midIconView = [[SCIconView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, frame.size.height)]; 28 | [self addSubview:_midIconView]; 29 | 30 | // 歌词视图配置 31 | _midLrcView = [[SCLrcTableView alloc] initWithStyle:UITableViewStylePlain]; 32 | [_midLrcView SC_SetUpLrcTableViewFrame:CGRectMake(Screen_Width, 0, frame.size.width, frame.size.height)]; 33 | _midLrcView.tableView.allowsSelection = false; 34 | _midLrcView.tableView.backgroundColor = [UIColor clearColor]; 35 | _midLrcView.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 36 | _midLrcView.tableView.showsVerticalScrollIndicator = false; 37 | _midLrcView.tableView.contentInset = UIEdgeInsetsMake(frame.size.height / 2, 0, frame.size.height / 2, 0); 38 | [self addSubview:_midLrcView.view]; 39 | 40 | return self; 41 | } 42 | 43 | - (instancetype)initWithCoder:(NSCoder *)coder 44 | { 45 | self = [super initWithCoder:coder]; 46 | if (self) { 47 | 48 | } 49 | return self; 50 | } 51 | 52 | -(void) scrollViewDidScroll: (UIScrollView *)scrollView { 53 | 54 | double spread = self.contentOffset.x / Screen_Width; 55 | 56 | _midIconView.alpha = 1.0 - spread; 57 | 58 | _midLrcView.tableView.alpha = spread; 59 | 60 | } 61 | 62 | @end 63 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/DetailControlView/MidView/SCIconView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCIconView.h 3 | // UIViewClickedAction 4 | // 5 | // Created by 凌       陈 on 8/22/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SCImageView.h" 11 | 12 | @interface SCIconView : UIView 13 | 14 | @property(nonatomic, strong) SCImageView *imageView; 15 | 16 | - (instancetype)initWithFrame:(CGRect)frame; 17 | -(void) setAlbumImage: (UIImage *)image; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/DetailControlView/MidView/SCIconView.m: -------------------------------------------------------------------------------- 1 | // 2 | // SCIconView.m 3 | // UIViewClickedAction 4 | // 5 | // Created by 凌       陈 on 8/22/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import "SCIconView.h" 10 | 11 | 12 | @implementation SCIconView 13 | 14 | - (instancetype)initWithFrame:(CGRect)frame 15 | { 16 | self = [super initWithFrame:frame]; 17 | if (self) { 18 | 19 | } 20 | return self; 21 | } 22 | 23 | - (instancetype)initWithCoder:(NSCoder *)coder 24 | { 25 | self = [super initWithCoder:coder]; 26 | return self; 27 | } 28 | 29 | -(void) setAlbumImage: (UIImage *)image { 30 | _imageView = [[SCImageView alloc] initWithFrame:CGRectMake(self.frame.size.width * 0.1, self.frame.size.height / 2 - self.frame.size.width * 0.4 , self.frame.size.width * 0.8, self.frame.size.width * 0.8)]; 31 | _imageView.image = image; 32 | _imageView.clipsToBounds = true; 33 | _imageView.layer.cornerRadius = self.frame.size.width * 0.4; 34 | [self addSubview:_imageView]; 35 | } 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/DetailControlView/MidView/SCLrcTableView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCLrcTableView.h 3 | // UIViewClickedAction 4 | // 5 | // Created by 凌       陈 on 8/22/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SCLrcTableViewCell.h" 11 | #import "OMSongInfo.h" 12 | 13 | @interface SCLrcTableView : UITableViewController 14 | @property (nonatomic, assign) int Lrc_Index; 15 | @property (nonatomic, assign) SCLrcTableViewCell *currentCell; 16 | @property (nonatomic, assign) SCLrcTableViewCell *lrcOldCell; 17 | 18 | //用来显示锁屏歌词 19 | @property (nonatomic, strong) UITableView * lockScreenTableView; 20 | @property (nonatomic, assign) SCLrcTableViewCell *lockCurrentCell; 21 | @property (nonatomic, assign) SCLrcTableViewCell *loackLrcOldCell; 22 | @property (nonatomic,assign) NSInteger currentRow; 23 | @property (nonatomic, assign) BOOL isDragging; 24 | 25 | @property (nonatomic, assign) int old_Index; 26 | @property (nonatomic, assign) int mLineNumber; 27 | @property (nonatomic, assign) BOOL mIsLRCPrepared; 28 | 29 | -(instancetype)initWithStyle:(UITableViewStyle)style; 30 | -(void) SC_SetUpLrcTableViewFrame: (CGRect)frame; 31 | -(void) setLrc_Index: (int)lrc_index; 32 | -(void) AnalysisLRC: (NSString *)lrcPath; 33 | -(UIImage *)getBlurredImage:(UIImage *)image; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/DetailControlView/MidView/SCLrcTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCLrcTableViewCell.h 3 | // UIViewClickedAction 4 | // 5 | // Created by 凌       陈 on 8/22/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SCLrcTableViewCell : UITableViewCell 12 | 13 | typedef enum SC_AnimationType { 14 | translation, 15 | scale, 16 | rotation, 17 | scaleAlways, 18 | scaleNormal, 19 | }AnimationType; 20 | 21 | 22 | +(SCLrcTableViewCell *) SC_CellForRowWithTableVieW: (UITableView *) tableView; 23 | -(void)addAnimation: (AnimationType)animationType; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/DetailControlView/TopView/TopView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TopView.h 3 | // BaiduMusic 4 | // 5 | // Created by 凌       陈 on 8/24/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TopView : UIView 12 | 13 | @property (nonatomic, strong) UIButton *backBtn; 14 | @property (nonatomic, strong) UILabel *songTitleLabel; 15 | @property (nonatomic, strong) UILabel *singerNameLabel; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/DetailControlView/TopView/TopView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TopView.m 3 | // BaiduMusic 4 | // 5 | // Created by 凌       陈 on 8/24/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import "TopView.h" 10 | 11 | @implementation TopView 12 | 13 | -(instancetype)initWithFrame:(CGRect)frame { 14 | self = [super initWithFrame:frame]; 15 | 16 | _backBtn = [[UIButton alloc] initWithFrame:CGRectMake(10, 30, 40, 40)]; 17 | [_backBtn setImage:[UIImage imageNamed:@"cm2_live_btn_back"] forState:UIControlStateNormal]; 18 | [_backBtn setImage:[UIImage imageNamed:@"cm2_live_btn_back_prs"] forState:UIControlStateHighlighted]; 19 | [self addSubview:_backBtn]; 20 | 21 | _songTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, frame.size.width - 20, frame.size.height / 2)]; 22 | [_songTitleLabel setFont:[UIFont systemFontOfSize:20.0]]; 23 | [_songTitleLabel setTextColor:[UIColor whiteColor]]; 24 | [_songTitleLabel setText:@""]; 25 | _songTitleLabel.textAlignment = NSTextAlignmentCenter; 26 | [self addSubview: _songTitleLabel]; 27 | 28 | _singerNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, frame.size.height / 2 - 20, frame.size.width - 20, frame.size.height / 2 - 30)]; 29 | [_singerNameLabel setFont:[UIFont systemFontOfSize:17.0]]; 30 | [_singerNameLabel setTextColor:[UIColor whiteColor]]; 31 | [_singerNameLabel setText:@""]; 32 | _singerNameLabel.textAlignment = NSTextAlignmentCenter; 33 | [self addSubview: _singerNameLabel]; 34 | 35 | return self; 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/SCImageView/SCImageView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCImageView.h 3 | // BaiduMusic 4 | // 5 | // Created by 凌       陈 on 8/22/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SCImageView : UIImageView 12 | 13 | -(void) startRotating; 14 | -(void) stopRotating; 15 | -(void) resumeRotate; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/SCImageView/SCImageView.m: -------------------------------------------------------------------------------- 1 | // 2 | // SCImageView.m 3 | // BaiduMusic 4 | // 5 | // Created by 凌       陈 on 8/22/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import "SCImageView.h" 10 | 11 | @implementation SCImageView 12 | 13 | // 开始旋转 14 | -(void) startRotating { 15 | CABasicAnimation* rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 16 | rotateAnimation.fromValue = [NSNumber numberWithFloat:0.0]; 17 | rotateAnimation.toValue = [NSNumber numberWithFloat:M_PI * 2]; // 旋转一周 18 | rotateAnimation.duration = 20.0; // 旋转时间20秒 19 | rotateAnimation.repeatCount = MAXFLOAT; // 重复次数,这里用最大次数 20 | 21 | [self.layer addAnimation:rotateAnimation forKey:nil]; 22 | 23 | } 24 | 25 | // 停止旋转 26 | -(void) stopRotating { 27 | 28 | CFTimeInterval pausedTime = [self.layer convertTime:CACurrentMediaTime() fromLayer:nil]; 29 | self.layer.speed = 0.0; // 停止旋转 30 | self.layer.timeOffset = pausedTime; // 保存时间,恢复旋转需要用到 31 | } 32 | 33 | // 恢复旋转 34 | -(void) resumeRotate { 35 | 36 | if (self.layer.timeOffset == 0) { 37 | [self startRotating]; 38 | return; 39 | } 40 | 41 | CFTimeInterval pausedTime = self.layer.timeOffset; 42 | self.layer.speed = 1.0; // 开始旋转 43 | self.layer.timeOffset = 0.0; 44 | self.layer.beginTime = 0.0; 45 | CFTimeInterval timeSincePause = [self.layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime; // 恢复时间 46 | self.layer.beginTime = timeSincePause; // 从暂停的时间点开始旋转 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/SimpleControlView/SimpleControlView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SimpleControlView.h 3 | // SCNews 4 | // 5 | // Created by 凌       陈 on 11/3/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #define ScreenWidth UIScreen.mainScreen.bounds.size.width 12 | #define ScreenHeight UIScreen.mainScreen.bounds.size.height 13 | 14 | @interface SimpleControlView : UIView 15 | 16 | @property (nonatomic, strong) UIImageView *albumImage; 17 | @property (nonatomic, strong) UILabel *songName; 18 | @property (nonatomic, strong) UILabel *singerName; 19 | @property (nonatomic, strong) UIButton *playOrPauseBtn; 20 | @property (nonatomic, strong) UIButton *nextBtn; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/SongListView/SongListTableView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SongListTableView.h 3 | // SCNews 4 | // 5 | // Created by 凌       陈 on 11/9/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SongListTableView : UITableView 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/SongListView/SongListTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SongListTableViewCell.h 3 | // SCNews 4 | // 5 | // Created by 凌       陈 on 11/9/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "Masonry.h" 11 | 12 | @interface SongListTableViewCell : UITableViewCell 13 | 14 | @property (nonatomic, strong) UILabel *songNumber; 15 | @property (nonatomic, strong) UILabel *songName; 16 | @property (nonatomic, strong) UILabel *singerName; 17 | @property (nonatomic, strong) UIButton *playOrPauseBtn; 18 | @property (nonatomic, strong) UIButton *nextBtn; 19 | @property (nonatomic, strong) UIButton *detailControllerBtn; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/SongListView/SongListTopView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SongListTopView.h 3 | // SCNews 4 | // 5 | // Created by 凌       陈 on 11/9/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SongListTopView : UIView 12 | 13 | @property (nonatomic, strong) UIButton *playMode; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/SongListView/SongListTopView.m: -------------------------------------------------------------------------------- 1 | // 2 | // SongListTopView.m 3 | // SCNews 4 | // 5 | // Created by 凌       陈 on 11/9/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import "SongListTopView.h" 10 | 11 | @implementation SongListTopView 12 | 13 | -(instancetype) initWithFrame:(CGRect)frame { 14 | self = [super initWithFrame:frame]; 15 | if (self) { 16 | 17 | // 播放模式按键初始化 18 | _playMode = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width / 2.5, self.frame.size.height)]; 19 | [self addSubview:_playMode]; 20 | 21 | } 22 | return self; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/SongListView/SongListView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SongListView.h 3 | // SCNews 4 | // 5 | // Created by 凌       陈 on 11/9/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "OMSongInfo.h" 11 | #import "MusicPlayerManager.h" 12 | #import "SongListTopView.h" 13 | #import "SongListTableView.h" 14 | #import "Const.h" 15 | #import "MBProgressHUD.h" 16 | 17 | @interface SongListView : UIView 18 | 19 | @property (nonatomic, strong) SongListTopView *topView; 20 | @property (nonatomic, strong) SongListTableView *tableView; 21 | 22 | -(void) setPlayModeButtonState; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /SCMusic/Classes/View/TTTopChannelContianerView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TTTopChannelContianerView.h 3 | // TTNews 4 | // 5 | // Created by 瑞文戴尔 on 16/4/29. 6 | // Copyright © 2016年 瑞文戴尔. All rights reserved. 7 | //这是新闻首页上方的新闻频道选择的scrollview 8 | 9 | #import 10 | 11 | @protocol TTTopChannelContianerViewDelegate 12 | 13 | @optional 14 | 15 | - (void)showOrHiddenAddChannelsCollectionView:(UIButton *)button; 16 | - (void)chooseChannelWithIndex:(NSInteger)index; 17 | 18 | @end 19 | 20 | @interface TTTopChannelContianerView : UIView 21 | 22 | - (instancetype)initWithFrame:(CGRect)frame; 23 | - (void)addAChannelButtonWithChannelName:(NSString *)channelName; 24 | - (void)selectChannelButtonWithIndex:(NSInteger)index; 25 | - (void)deleteChannelButtonWithIndex:(NSInteger)index; 26 | 27 | //- (void)didShowEditChannelView:(BOOL)value; 28 | 29 | @property (nonatomic, strong) NSArray *channelNameArray; 30 | @property (nonatomic, weak) UIScrollView *scrollView; 31 | //@property (nonatomic, weak) UIButton *addButton; 32 | @property (nonatomic, weak) id delegate; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /SCMusic/Resources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/.DS_Store -------------------------------------------------------------------------------- /SCMusic/Resources/309769.lrc: -------------------------------------------------------------------------------- 1 | [ti:一千年以后] 2 | [ar:林俊杰] 3 | [al:《编号89757》 ] 4 | 5 | [00:00.00] 6 | [00:02.00]一千年以后 7 | [00:04.00]作词:李瑞洵 作曲:林俊杰 8 | [00:06.00]演唱:林俊杰 9 | [00:12.00] 10 | [00:15.58]心 跳乱了节奏 11 | [00:19.76]梦也不自由 12 | [00:23.48]爱 是个绝对承诺 不说 13 | [00:29.48]撑到一千年以后 14 | [00:31.54]放任无奈 淹没尘埃 15 | [00:35.38]我在废墟之中守着你走来 Ho 16 | [00:39.34]我的泪光 承载不了 Ho 17 | [00:45.16]所有一切你要的爱 18 | [00:49.19] 19 | [00:49.65]因为在 一千年以后 20 | [00:54.46]世界早已没有我 21 | [00:58.46]无法深情挽着你的手 22 | [01:02.53]浅吻着你额头 23 | [01:05.67]别等到 一千年以后 24 | [01:10.04]所有人都遗忘了我 25 | [01:14.08]那时红色黄昏的沙漠 26 | [01:17.94]能有谁 解开缠绕千年的寂寞 27 | [01:25.04] 28 | [01:41.03]放任无奈 淹没尘埃 29 | [01:45.93]我在废墟之中守着你走来 Ho 30 | [01:50.12]我的泪光 承载不了 Ho 31 | [01:55.67]所有一切你需要的爱 32 | [02:00.46] 33 | [02:00.53]因为在 一千年以后 34 | [02:05.57]世界早已没有我 35 | [02:09.58]无法深情挽着你的手 36 | [02:13.71]浅吻着你额头 37 | [02:16.85]别等到 一千年以后 38 | [02:21.29]所有人都遗忘了我 39 | [02:25.13]那时红色黄昏的沙漠 40 | [02:29.11]能有谁 解开缠绕千年的寂寞 41 | [02:35.92] 42 | [02:48.58]无法深情挽着你的手 43 | [02:52.73]浅吻着你额头 44 | [02:55.87]别等到 一千年以后 45 | [03:00.33]所有人都遗忘了我 46 | [03:04.29]那时红色黄昏的沙漠 47 | [03:08.23]能有谁 解开缠绕千年的 寂寞 48 | [03:15.77]Ho 缠绕千年的寂寞 49 | [03:26.83] -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/.DS_Store -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon29x29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon29x29.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon57x57.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon57x57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon57x57@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/Placeholder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "Placeholder.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "Placeholder@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/Placeholder.imageset/Placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/Placeholder.imageset/Placeholder.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/Placeholder.imageset/Placeholder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/Placeholder.imageset/Placeholder@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/album_default.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "png.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/album_default.imageset/png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/album_default.imageset/png.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/backgroundImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "邓紫棋1.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/backgroundImage.imageset/邓紫棋1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/backgroundImage.imageset/邓紫棋1.jpg -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/backgroundImage1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "backgroundImage1.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/backgroundImage1.imageset/backgroundImage1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/backgroundImage1.imageset/backgroundImage1.jpg -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/backgroundImage2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "backgroundImage2.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/backgroundImage2.imageset/backgroundImage2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/backgroundImage2.imageset/backgroundImage2.jpg -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/backgroundImage3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "backgroundImage3.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/backgroundImage3.imageset/backgroundImage3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/backgroundImage3.imageset/backgroundImage3.jpg -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_detail_knob_nomal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_detail_knob_nomal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_detail_knob_nomal@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_detail_knob_nomal@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_detail_knob_nomal.imageset/cm2_detail_knob_nomal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_detail_knob_nomal.imageset/cm2_detail_knob_nomal.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_detail_knob_nomal.imageset/cm2_detail_knob_nomal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_detail_knob_nomal.imageset/cm2_detail_knob_nomal@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_detail_knob_nomal.imageset/cm2_detail_knob_nomal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_detail_knob_nomal.imageset/cm2_detail_knob_nomal@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_detail_knob_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_detail_knob_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_detail_knob_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_detail_knob_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_detail_knob_prs.imageset/cm2_detail_knob_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_detail_knob_prs.imageset/cm2_detail_knob_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_detail_knob_prs.imageset/cm2_detail_knob_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_detail_knob_prs.imageset/cm2_detail_knob_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_detail_knob_prs.imageset/cm2_detail_knob_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_detail_knob_prs.imageset/cm2_detail_knob_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_efc_knob_trough_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_efc_knob_trough_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_efc_knob_trough_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_efc_knob_trough_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_efc_knob_trough_prs.imageset/cm2_efc_knob_trough_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_efc_knob_trough_prs.imageset/cm2_efc_knob_trough_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_efc_knob_trough_prs.imageset/cm2_efc_knob_trough_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_efc_knob_trough_prs.imageset/cm2_efc_knob_trough_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_efc_knob_trough_prs.imageset/cm2_efc_knob_trough_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_efc_knob_trough_prs.imageset/cm2_efc_knob_trough_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_love.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_love@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_love@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love.imageset/cm2_fm_btn_love.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love.imageset/cm2_fm_btn_love.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love.imageset/cm2_fm_btn_love@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love.imageset/cm2_fm_btn_love@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love.imageset/cm2_fm_btn_love@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love.imageset/cm2_fm_btn_love@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_love_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_love_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_love_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love_prs.imageset/cm2_fm_btn_love_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love_prs.imageset/cm2_fm_btn_love_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love_prs.imageset/cm2_fm_btn_love_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love_prs.imageset/cm2_fm_btn_love_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love_prs.imageset/cm2_fm_btn_love_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_love_prs.imageset/cm2_fm_btn_love_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_loved.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_loved@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_loved@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved.imageset/cm2_fm_btn_loved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved.imageset/cm2_fm_btn_loved.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved.imageset/cm2_fm_btn_loved@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved.imageset/cm2_fm_btn_loved@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved.imageset/cm2_fm_btn_loved@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved.imageset/cm2_fm_btn_loved@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_loved_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_loved_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_loved_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved_prs.imageset/cm2_fm_btn_loved_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved_prs.imageset/cm2_fm_btn_loved_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved_prs.imageset/cm2_fm_btn_loved_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved_prs.imageset/cm2_fm_btn_loved_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved_prs.imageset/cm2_fm_btn_loved_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_loved_prs.imageset/cm2_fm_btn_loved_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_next.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_next@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_next@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next.imageset/cm2_fm_btn_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next.imageset/cm2_fm_btn_next.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next.imageset/cm2_fm_btn_next@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next.imageset/cm2_fm_btn_next@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next.imageset/cm2_fm_btn_next@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next.imageset/cm2_fm_btn_next@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_next_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_next_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_next_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next_prs.imageset/cm2_fm_btn_next_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next_prs.imageset/cm2_fm_btn_next_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next_prs.imageset/cm2_fm_btn_next_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next_prs.imageset/cm2_fm_btn_next_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next_prs.imageset/cm2_fm_btn_next_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_next_prs.imageset/cm2_fm_btn_next_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_play.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_play@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_play@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause.imageset/cm2_fm_btn_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause.imageset/cm2_fm_btn_play.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause.imageset/cm2_fm_btn_play@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause.imageset/cm2_fm_btn_play@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause.imageset/cm2_fm_btn_play@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause.imageset/cm2_fm_btn_play@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_play_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_play_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_play_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause_prs.imageset/cm2_fm_btn_play_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause_prs.imageset/cm2_fm_btn_play_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause_prs.imageset/cm2_fm_btn_play_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause_prs.imageset/cm2_fm_btn_play_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause_prs.imageset/cm2_fm_btn_play_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pause_prs.imageset/cm2_fm_btn_play_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_pause.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_pause@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_pause@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play.imageset/cm2_fm_btn_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play.imageset/cm2_fm_btn_pause.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play.imageset/cm2_fm_btn_pause@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play.imageset/cm2_fm_btn_pause@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play.imageset/cm2_fm_btn_pause@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play.imageset/cm2_fm_btn_pause@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_pause_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_pause_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_pause_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play_prs.imageset/cm2_fm_btn_pause_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play_prs.imageset/cm2_fm_btn_pause_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play_prs.imageset/cm2_fm_btn_pause_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play_prs.imageset/cm2_fm_btn_pause_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play_prs.imageset/cm2_fm_btn_pause_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_play_prs.imageset/cm2_fm_btn_pause_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_pre.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_pre@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_pre@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre.imageset/cm2_fm_btn_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre.imageset/cm2_fm_btn_pre.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre.imageset/cm2_fm_btn_pre@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre.imageset/cm2_fm_btn_pre@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre.imageset/cm2_fm_btn_pre@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre.imageset/cm2_fm_btn_pre@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_fm_btn_pre_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_fm_btn_pre_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_fm_btn_pre_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre_prs.imageset/cm2_fm_btn_pre_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre_prs.imageset/cm2_fm_btn_pre_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre_prs.imageset/cm2_fm_btn_pre_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre_prs.imageset/cm2_fm_btn_pre_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre_prs.imageset/cm2_fm_btn_pre_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_fm_btn_pre_prs.imageset/cm2_fm_btn_pre_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_list.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_icn_list.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_icn_list@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_icn_list@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_list.imageset/cm2_icn_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_list.imageset/cm2_icn_list.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_list.imageset/cm2_icn_list@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_list.imageset/cm2_icn_list@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_list.imageset/cm2_icn_list@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_list.imageset/cm2_icn_list@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_list_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_icn_list_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_icn_list_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_icn_list_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_list_prs.imageset/cm2_icn_list_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_list_prs.imageset/cm2_icn_list_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_list_prs.imageset/cm2_icn_list_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_list_prs.imageset/cm2_icn_list_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_list_prs.imageset/cm2_icn_list_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_list_prs.imageset/cm2_icn_list_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_loop.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_icn_loop.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_icn_loop@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_icn_loop@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_loop.imageset/cm2_icn_loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_loop.imageset/cm2_icn_loop.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_loop.imageset/cm2_icn_loop@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_loop.imageset/cm2_icn_loop@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_loop.imageset/cm2_icn_loop@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_loop.imageset/cm2_icn_loop@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_loop_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_icn_loop_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_icn_loop_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_icn_loop_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_loop_prs.imageset/cm2_icn_loop_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_loop_prs.imageset/cm2_icn_loop_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_loop_prs.imageset/cm2_icn_loop_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_loop_prs.imageset/cm2_icn_loop_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_loop_prs.imageset/cm2_icn_loop_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_loop_prs.imageset/cm2_icn_loop_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_next.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_icn_next.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_icn_next@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_icn_next@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_next.imageset/cm2_icn_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_next.imageset/cm2_icn_next.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_next.imageset/cm2_icn_next@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_next.imageset/cm2_icn_next@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_next.imageset/cm2_icn_next@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_next.imageset/cm2_icn_next@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_one.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_icn_one.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_icn_one@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_icn_one@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_one.imageset/cm2_icn_one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_one.imageset/cm2_icn_one.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_one.imageset/cm2_icn_one@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_one.imageset/cm2_icn_one@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_one.imageset/cm2_icn_one@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_one.imageset/cm2_icn_one@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_one_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_icn_one_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_icn_one_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_icn_one_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_one_prs.imageset/cm2_icn_one_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_one_prs.imageset/cm2_icn_one_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_one_prs.imageset/cm2_icn_one_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_one_prs.imageset/cm2_icn_one_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_one_prs.imageset/cm2_icn_one_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_one_prs.imageset/cm2_icn_one_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_icn_shuffle.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_icn_shuffle@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_icn_shuffle@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle.imageset/cm2_icn_shuffle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle.imageset/cm2_icn_shuffle.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle.imageset/cm2_icn_shuffle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle.imageset/cm2_icn_shuffle@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle.imageset/cm2_icn_shuffle@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle.imageset/cm2_icn_shuffle@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_icn_shuffle_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_icn_shuffle_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_icn_shuffle_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle_prs.imageset/cm2_icn_shuffle_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle_prs.imageset/cm2_icn_shuffle_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle_prs.imageset/cm2_icn_shuffle_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle_prs.imageset/cm2_icn_shuffle_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle_prs.imageset/cm2_icn_shuffle_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_icn_shuffle_prs.imageset/cm2_icn_shuffle_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_live_btn_back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_live_btn_back.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_live_btn_back@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_live_btn_back@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_live_btn_back.imageset/cm2_live_btn_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_live_btn_back.imageset/cm2_live_btn_back.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_live_btn_back.imageset/cm2_live_btn_back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_live_btn_back.imageset/cm2_live_btn_back@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_live_btn_back.imageset/cm2_live_btn_back@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_live_btn_back.imageset/cm2_live_btn_back@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_live_btn_back_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_live_btn_back_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_live_btn_back_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_live_btn_back_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_live_btn_back_prs.imageset/cm2_live_btn_back_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_live_btn_back_prs.imageset/cm2_live_btn_back_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_live_btn_back_prs.imageset/cm2_live_btn_back_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_live_btn_back_prs.imageset/cm2_live_btn_back_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_live_btn_back_prs.imageset/cm2_live_btn_back_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_live_btn_back_prs.imageset/cm2_live_btn_back_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_defaut_album_image.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_simple_defaut_album_image.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_simple_defaut_album_image@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_simple_defaut_album_image@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_defaut_album_image.imageset/cm2_simple_defaut_album_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_defaut_album_image.imageset/cm2_simple_defaut_album_image.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_defaut_album_image.imageset/cm2_simple_defaut_album_image@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_defaut_album_image.imageset/cm2_simple_defaut_album_image@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_defaut_album_image.imageset/cm2_simple_defaut_album_image@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_defaut_album_image.imageset/cm2_simple_defaut_album_image@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_knob_nomal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_simple_knob_trough_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_simple_knob_trough_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_simple_knob_trough_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_knob_nomal.imageset/cm2_simple_knob_trough_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_knob_nomal.imageset/cm2_simple_knob_trough_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_knob_nomal.imageset/cm2_simple_knob_trough_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_knob_nomal.imageset/cm2_simple_knob_trough_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_knob_nomal.imageset/cm2_simple_knob_trough_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_knob_nomal.imageset/cm2_simple_knob_trough_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_knob_prs.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_simple_live_color_1_prs.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_simple_live_color_1_prs@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_simple_live_color_1_prs@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_knob_prs.imageset/cm2_simple_live_color_1_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_knob_prs.imageset/cm2_simple_live_color_1_prs.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_knob_prs.imageset/cm2_simple_live_color_1_prs@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_knob_prs.imageset/cm2_simple_live_color_1_prs@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_knob_prs.imageset/cm2_simple_live_color_1_prs@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_knob_prs.imageset/cm2_simple_live_color_1_prs@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_live_color_1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_simple_live_color_1.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_simple_live_color_1@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_simple_live_color_1@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_live_color_1.imageset/cm2_simple_live_color_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_live_color_1.imageset/cm2_simple_live_color_1.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_live_color_1.imageset/cm2_simple_live_color_1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_live_color_1.imageset/cm2_simple_live_color_1@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/cm2_simple_live_color_1.imageset/cm2_simple_live_color_1@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/cm2_simple_live_color_1.imageset/cm2_simple_live_color_1@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/launchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "launchImage.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/launchImage.imageset/launchImage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/launchImage.imageset/launchImage.jpg -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/picture1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "u=2264471419,3598996476&fm=23&gp=0.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/picture1.imageset/u=2264471419,3598996476&fm=23&gp=0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/picture1.imageset/u=2264471419,3598996476&fm=23&gp=0.jpg -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/player_cm2_play_disc.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "cm2_play_disc.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "cm2_play_disc@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "cm2_play_disc@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/player_cm2_play_disc.imageset/cm2_play_disc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/player_cm2_play_disc.imageset/cm2_play_disc.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/player_cm2_play_disc.imageset/cm2_play_disc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/player_cm2_play_disc.imageset/cm2_play_disc@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/player_cm2_play_disc.imageset/cm2_play_disc@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/player_cm2_play_disc.imageset/cm2_play_disc@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/player_cm2_play_needle_play-ip6.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "cm2_play_needle_play-ip6@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "cm2_play_needle_play@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/player_cm2_play_needle_play-ip6.imageset/cm2_play_needle_play-ip6@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/player_cm2_play_needle_play-ip6.imageset/cm2_play_needle_play-ip6@2x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Assets.xcassets/player_cm2_play_needle_play-ip6.imageset/cm2_play_needle_play@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic/Resources/Assets.xcassets/player_cm2_play_needle_play-ip6.imageset/cm2_play_needle_play@3x.png -------------------------------------------------------------------------------- /SCMusic/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | NSAppTransportSecurity 24 | 25 | NSAllowsArbitraryLoads 26 | 27 | 28 | UIBackgroundModes 29 | 30 | audio 31 | 32 | UILaunchStoryboardName 33 | LaunchScreen 34 | UIRequiredDeviceCapabilities 35 | 36 | armv7 37 | 38 | UISupportedInterfaceOrientations 39 | 40 | UIInterfaceOrientationPortrait 41 | 42 | UISupportedInterfaceOrientations~ipad 43 | 44 | UIInterfaceOrientationPortrait 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /SCMusic/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // BaiduMusic 4 | // 5 | // Created by 凌       陈 on 8/18/17. 6 | // Copyright © 2017 凌       陈. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /SCMusic截图.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic截图.gif -------------------------------------------------------------------------------- /SCMusic截图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SCMusic截图.png -------------------------------------------------------------------------------- /SC音乐软件更改说明.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mozartisnotmyname/SCMusic/614b9bc1dc6361860e3161ad13853635279ac559/SC音乐软件更改说明.txt --------------------------------------------------------------------------------