├── BaiduFM WatchKit App ├── Base.lproj │ └── Interface.storyboard ├── Images.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── btn_next.imageset │ │ ├── Contents.json │ │ └── player_btn_next_normal@2x.png │ ├── btn_pause.imageset │ │ ├── Contents.json │ │ └── player_btn_pause_normal@2x.png │ ├── btn_play.imageset │ │ ├── Contents.json │ │ └── player_btn_play_normal@2x.png │ ├── btn_pre.imageset │ │ ├── Contents.json │ │ └── player_btn_pre_normal@2x.png │ ├── channel_list.imageset │ │ ├── Contents.json │ │ └── musiccircle_myfollow_icon@2x.png │ └── music_list.imageset │ │ ├── Contents.json │ │ └── discover_icon_music_circle@2x.png └── Info.plist ├── BaiduFM WatchKit Extension ├── ChannelListInterfaceController.swift ├── ChannelTableRow.swift ├── DataManager.swift ├── GlanceController.swift ├── Images.xcassets │ ├── README__ignoredByTemplate__ │ ├── btn_pause.imageset │ │ ├── Contents.json │ │ └── player_btn_pause_normal@2x.png │ └── btn_play.imageset │ │ ├── Contents.json │ │ └── player_btn_play_normal@2x.png ├── Info.plist ├── InterfaceController.swift ├── MusicTableRow.swift ├── NotificationController.swift ├── PushNotificationPayload.apns └── SongListInterfaceController.swift ├── BaiduFM.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── BaiduFM.xccheckout │ └── xcuserdata │ │ └── lumeng.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── lumeng.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ ├── BaiduFM WatchKit App.xcscheme │ ├── BaiduFM.xcscheme │ ├── Glance - BaiduFM WatchKit App.xcscheme │ ├── Notification - BaiduFM WatchKit App.xcscheme │ └── xcschememanagement.plist ├── BaiduFM.xcworkspace ├── contents.xcworkspacedata ├── xcshareddata │ └── BaiduFM.xccheckout └── xcuserdata │ └── lumeng.xcuserdatad │ ├── UserInterfaceState.xcuserstate │ └── xcdebugger │ └── Breakpoints_v2.xcbkptlist ├── BaiduFM ├── AppDelegate.swift ├── BaiduFM-Bridging-Header.h ├── Base.lproj │ ├── LaunchScreen.xib │ └── Main.storyboard ├── Common │ ├── Common.swift │ ├── Const.swift │ ├── HttpRequest.swift │ └── Utils.swift ├── DataBase │ ├── BaseDb.swift │ └── SongList.swift ├── Images.xcassets │ ├── AppIcon.appiconset │ │ ├── AppIcon29x29.png │ │ ├── AppIcon29x29@2x-1.png │ │ ├── AppIcon29x29@2x.png │ │ ├── AppIcon29x29@3x.png │ │ ├── AppIcon40x40@2x-1.png │ │ ├── AppIcon40x40@2x.png │ │ ├── AppIcon40x40@3x.png │ │ ├── AppIcon60x60@2x.png │ │ ├── AppIcon60x60@3x.png │ │ ├── Contents.json │ │ └── Icon-152.png │ ├── Download.imageset │ │ ├── Contents.json │ │ └── actionIconDownload@2x.png │ ├── Downloaded.imageset │ │ ├── Contents.json │ │ └── actionIconDownloaded@2x.png │ ├── Like.imageset │ │ ├── Contents.json │ │ └── actionIconLike@2x.png │ ├── Unlike.imageset │ │ ├── Contents.json │ │ └── actionIconUnlike@2x.png │ ├── mymusic_icon_download_normal.imageset │ │ ├── Contents.json │ │ └── mymusic_icon_download_normal@2x.png │ ├── player_btn_next_normal.imageset │ │ ├── Contents.json │ │ └── player_btn_next_normal@2x.png │ ├── player_btn_pause_normal.imageset │ │ ├── Contents.json │ │ └── player_btn_pause_normal@2x.png │ ├── player_btn_play_normal.imageset │ │ ├── Contents.json │ │ └── player_btn_play_normal@2x.png │ └── player_btn_pre_normal.imageset │ │ ├── Contents.json │ │ └── player_btn_pre_normal@2x.png ├── Info.plist ├── Libs │ └── fmdb │ │ ├── FMDB.h │ │ ├── FMDatabase.h │ │ ├── FMDatabase.m │ │ ├── FMDatabaseAdditions.h │ │ ├── FMDatabaseAdditions.m │ │ ├── FMDatabasePool.h │ │ ├── FMDatabasePool.m │ │ ├── FMDatabaseQueue.h │ │ ├── FMDatabaseQueue.m │ │ ├── FMResultSet.h │ │ └── FMResultSet.m ├── Model │ ├── Channel.swift │ ├── DataCenter.swift │ └── Song.swift ├── MyPlayground.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── timeline.xctimeline └── Views │ ├── ChannelTableViewController.swift │ ├── DownloadTableViewController.swift │ ├── LikeTableViewController.swift │ ├── MusicListTableViewController.swift │ ├── RecentTableViewController.swift │ ├── RoundImageView.swift │ └── ViewController.swift ├── BaiduFMTests ├── BaiduFMTests.swift └── Info.plist ├── LICENSE.txt ├── Podfile ├── Podfile.lock ├── Pods ├── Alamofire │ ├── LICENSE │ ├── README.md │ └── Source │ │ └── Alamofire.swift ├── Async │ ├── Async.swift │ ├── LICENSE.txt │ └── README.md ├── Headers │ ├── Private │ │ ├── LTMorphingLabel │ │ │ └── LTMorphingLabel.h │ │ └── MJRefresh │ │ │ ├── MJRefresh.h │ │ │ ├── MJRefreshComponent.h │ │ │ ├── MJRefreshConst.h │ │ │ ├── MJRefreshFooter.h │ │ │ ├── MJRefreshGifFooter.h │ │ │ ├── MJRefreshGifHeader.h │ │ │ ├── MJRefreshHeader.h │ │ │ ├── MJRefreshLegendFooter.h │ │ │ ├── MJRefreshLegendHeader.h │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ └── UIView+MJExtension.h │ └── Public │ │ ├── LTMorphingLabel │ │ └── LTMorphingLabel.h │ │ └── MJRefresh │ │ ├── MJRefresh.h │ │ ├── MJRefreshComponent.h │ │ ├── MJRefreshConst.h │ │ ├── MJRefreshFooter.h │ │ ├── MJRefreshGifFooter.h │ │ ├── MJRefreshGifHeader.h │ │ ├── MJRefreshHeader.h │ │ ├── MJRefreshLegendFooter.h │ │ ├── MJRefreshLegendHeader.h │ │ ├── UIScrollView+MJExtension.h │ │ ├── UIScrollView+MJRefresh.h │ │ └── UIView+MJExtension.h ├── Kingfisher │ ├── Kingfisher │ │ ├── ImageCache.swift │ │ ├── ImageDownloader.swift │ │ ├── KingfisherManager.swift │ │ ├── KingfisherOptions.swift │ │ ├── KingfisherOptionsInfo.swift │ │ ├── String+MD5.swift │ │ ├── UIButton+Kingfisher.swift │ │ ├── UIImage+Decode.swift │ │ └── UIImageView+Kingfisher.swift │ ├── LICENSE │ └── README.md ├── LTMorphingLabel │ ├── LICENSE │ ├── LTMorphingLabel │ │ ├── LTCharacterLimbo.swift │ │ ├── LTEasing.swift │ │ ├── LTEmitterView.swift │ │ ├── LTMorphingEffect.swift │ │ ├── LTMorphingLabel+Anvil.swift │ │ ├── LTMorphingLabel+Burn.swift │ │ ├── LTMorphingLabel+Evaporate.swift │ │ ├── LTMorphingLabel+Fall.swift │ │ ├── LTMorphingLabel+Pixelate.swift │ │ ├── LTMorphingLabel+Sparkle.swift │ │ ├── LTMorphingLabel.h │ │ ├── LTMorphingLabel.swift │ │ ├── NSString+LTMorphingLabel.swift │ │ └── Particles │ │ │ ├── Fire.png │ │ │ ├── Fragment.png │ │ │ ├── Smoke.png │ │ │ └── Sparkle.png │ └── README.md ├── Local Podspecs │ └── Async.podspec.json ├── MJRefresh │ ├── LICENSE │ ├── MJRefreshExample │ │ └── MJRefreshExample │ │ │ └── MJRefresh │ │ │ ├── MJRefresh.bundle │ │ │ └── arrow@2x.png │ │ │ ├── MJRefresh.h │ │ │ ├── MJRefreshComponent.h │ │ │ ├── MJRefreshComponent.m │ │ │ ├── MJRefreshConst.h │ │ │ ├── MJRefreshConst.m │ │ │ ├── MJRefreshFooter.h │ │ │ ├── MJRefreshFooter.m │ │ │ ├── MJRefreshGifFooter.h │ │ │ ├── MJRefreshGifFooter.m │ │ │ ├── MJRefreshGifHeader.h │ │ │ ├── MJRefreshGifHeader.m │ │ │ ├── MJRefreshHeader.h │ │ │ ├── MJRefreshHeader.m │ │ │ ├── MJRefreshLegendFooter.h │ │ │ ├── MJRefreshLegendFooter.m │ │ │ ├── MJRefreshLegendHeader.h │ │ │ ├── MJRefreshLegendHeader.m │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJExtension.m │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ ├── UIScrollView+MJRefresh.m │ │ │ ├── UIView+MJExtension.h │ │ │ └── UIView+MJExtension.m │ └── README.md ├── Manifest.lock ├── Pods.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ └── lumeng.xcuserdatad │ │ └── xcschemes │ │ ├── Pods-BaiduFM WatchKit Extension-Alamofire.xcscheme │ │ ├── Pods-BaiduFM WatchKit Extension-Async.xcscheme │ │ ├── Pods-BaiduFM WatchKit Extension-SwiftyJSON.xcscheme │ │ ├── Pods-BaiduFM WatchKit Extension.xcscheme │ │ ├── Pods-BaiduFM-Alamofire.xcscheme │ │ ├── Pods-BaiduFM-Async.xcscheme │ │ ├── Pods-BaiduFM-Kingfisher.xcscheme │ │ ├── Pods-BaiduFM-LTMorphingLabel.xcscheme │ │ ├── Pods-BaiduFM-MJRefresh.xcscheme │ │ ├── Pods-BaiduFM-SwiftyJSON.xcscheme │ │ ├── Pods-BaiduFM.xcscheme │ │ └── xcschememanagement.plist ├── SwiftyJSON │ ├── LICENSE │ ├── README.md │ └── Source │ │ └── SwiftyJSON.swift └── Target Support Files │ ├── Pods-BaiduFM WatchKit Extension-Alamofire │ ├── Info.plist │ ├── Pods-BaiduFM WatchKit Extension-Alamofire-Private.xcconfig │ ├── Pods-BaiduFM WatchKit Extension-Alamofire-dummy.m │ ├── Pods-BaiduFM WatchKit Extension-Alamofire-prefix.pch │ ├── Pods-BaiduFM WatchKit Extension-Alamofire-umbrella.h │ ├── Pods-BaiduFM WatchKit Extension-Alamofire.modulemap │ └── Pods-BaiduFM WatchKit Extension-Alamofire.xcconfig │ ├── Pods-BaiduFM WatchKit Extension-Async │ ├── Info.plist │ ├── Pods-BaiduFM WatchKit Extension-Async-Private.xcconfig │ ├── Pods-BaiduFM WatchKit Extension-Async-dummy.m │ ├── Pods-BaiduFM WatchKit Extension-Async-prefix.pch │ ├── Pods-BaiduFM WatchKit Extension-Async-umbrella.h │ ├── Pods-BaiduFM WatchKit Extension-Async.modulemap │ └── Pods-BaiduFM WatchKit Extension-Async.xcconfig │ ├── Pods-BaiduFM WatchKit Extension-SwiftyJSON │ ├── Info.plist │ ├── Pods-BaiduFM WatchKit Extension-SwiftyJSON-Private.xcconfig │ ├── Pods-BaiduFM WatchKit Extension-SwiftyJSON-dummy.m │ ├── Pods-BaiduFM WatchKit Extension-SwiftyJSON-prefix.pch │ ├── Pods-BaiduFM WatchKit Extension-SwiftyJSON-umbrella.h │ ├── Pods-BaiduFM WatchKit Extension-SwiftyJSON.modulemap │ └── Pods-BaiduFM WatchKit Extension-SwiftyJSON.xcconfig │ ├── Pods-BaiduFM WatchKit Extension │ ├── Info.plist │ ├── Pods-BaiduFM WatchKit Extension-acknowledgements.markdown │ ├── Pods-BaiduFM WatchKit Extension-acknowledgements.plist │ ├── Pods-BaiduFM WatchKit Extension-dummy.m │ ├── Pods-BaiduFM WatchKit Extension-environment.h │ ├── Pods-BaiduFM WatchKit Extension-frameworks.sh │ ├── Pods-BaiduFM WatchKit Extension-resources.sh │ ├── Pods-BaiduFM WatchKit Extension-umbrella.h │ ├── Pods-BaiduFM WatchKit Extension.debug.xcconfig │ ├── Pods-BaiduFM WatchKit Extension.modulemap │ └── Pods-BaiduFM WatchKit Extension.release.xcconfig │ ├── Pods-BaiduFM-Alamofire │ ├── Info.plist │ ├── Pods-BaiduFM-Alamofire-Private.xcconfig │ ├── Pods-BaiduFM-Alamofire-dummy.m │ ├── Pods-BaiduFM-Alamofire-prefix.pch │ ├── Pods-BaiduFM-Alamofire-umbrella.h │ ├── Pods-BaiduFM-Alamofire.modulemap │ └── Pods-BaiduFM-Alamofire.xcconfig │ ├── Pods-BaiduFM-Async │ ├── Info.plist │ ├── Pods-BaiduFM-Async-Private.xcconfig │ ├── Pods-BaiduFM-Async-dummy.m │ ├── Pods-BaiduFM-Async-prefix.pch │ ├── Pods-BaiduFM-Async-umbrella.h │ ├── Pods-BaiduFM-Async.modulemap │ └── Pods-BaiduFM-Async.xcconfig │ ├── Pods-BaiduFM-Kingfisher │ ├── Info.plist │ ├── Pods-BaiduFM-Kingfisher-Private.xcconfig │ ├── Pods-BaiduFM-Kingfisher-dummy.m │ ├── Pods-BaiduFM-Kingfisher-prefix.pch │ ├── Pods-BaiduFM-Kingfisher-umbrella.h │ ├── Pods-BaiduFM-Kingfisher.modulemap │ └── Pods-BaiduFM-Kingfisher.xcconfig │ ├── Pods-BaiduFM-LTMorphingLabel │ ├── Info.plist │ ├── Pods-BaiduFM-LTMorphingLabel-Private.xcconfig │ ├── Pods-BaiduFM-LTMorphingLabel-dummy.m │ ├── Pods-BaiduFM-LTMorphingLabel-prefix.pch │ ├── Pods-BaiduFM-LTMorphingLabel-umbrella.h │ ├── Pods-BaiduFM-LTMorphingLabel.modulemap │ └── Pods-BaiduFM-LTMorphingLabel.xcconfig │ ├── Pods-BaiduFM-MJRefresh │ ├── Info.plist │ ├── Pods-BaiduFM-MJRefresh-Private.xcconfig │ ├── Pods-BaiduFM-MJRefresh-dummy.m │ ├── Pods-BaiduFM-MJRefresh-prefix.pch │ ├── Pods-BaiduFM-MJRefresh-umbrella.h │ ├── Pods-BaiduFM-MJRefresh.modulemap │ └── Pods-BaiduFM-MJRefresh.xcconfig │ ├── Pods-BaiduFM-SwiftyJSON │ ├── Info.plist │ ├── Pods-BaiduFM-SwiftyJSON-Private.xcconfig │ ├── Pods-BaiduFM-SwiftyJSON-dummy.m │ ├── Pods-BaiduFM-SwiftyJSON-prefix.pch │ ├── Pods-BaiduFM-SwiftyJSON-umbrella.h │ ├── Pods-BaiduFM-SwiftyJSON.modulemap │ └── Pods-BaiduFM-SwiftyJSON.xcconfig │ └── Pods-BaiduFM │ ├── Info.plist │ ├── Pods-BaiduFM-acknowledgements.markdown │ ├── Pods-BaiduFM-acknowledgements.plist │ ├── Pods-BaiduFM-dummy.m │ ├── Pods-BaiduFM-environment.h │ ├── Pods-BaiduFM-frameworks.sh │ ├── Pods-BaiduFM-resources.sh │ ├── Pods-BaiduFM-umbrella.h │ ├── Pods-BaiduFM.debug.xcconfig │ ├── Pods-BaiduFM.modulemap │ └── Pods-BaiduFM.release.xcconfig ├── README.md └── ScreenShot ├── BaiduFM-Swift_00.png ├── BaiduFM-Swift_01.png ├── BaiduFM-Swift_02.png ├── BaiduFM-Swift_03.png ├── BaiduFM-Swift_AppleWatch_00.png ├── BaiduFM-Swift_AppleWatch_01.png ├── BaiduFM-Swift_AppleWatch_02.png └── BaiduFM-Swift_AppleWatch_03.png /BaiduFM WatchKit App/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "24x24", 5 | "idiom" : "watch", 6 | "scale" : "2x", 7 | "role" : "notificationCenter", 8 | "subtype" : "38mm" 9 | }, 10 | { 11 | "size" : "27.5x27.5", 12 | "idiom" : "watch", 13 | "scale" : "2x", 14 | "role" : "notificationCenter", 15 | "subtype" : "42mm" 16 | }, 17 | { 18 | "size" : "29x29", 19 | "idiom" : "watch", 20 | "role" : "companionSettings", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "size" : "29x29", 25 | "idiom" : "watch", 26 | "role" : "companionSettings", 27 | "scale" : "3x" 28 | }, 29 | { 30 | "size" : "40x40", 31 | "idiom" : "watch", 32 | "scale" : "2x", 33 | "role" : "appLauncher", 34 | "subtype" : "38mm" 35 | }, 36 | { 37 | "size" : "44x44", 38 | "idiom" : "watch", 39 | "scale" : "2x", 40 | "role" : "longLook", 41 | "subtype" : "42mm" 42 | }, 43 | { 44 | "size" : "86x86", 45 | "idiom" : "watch", 46 | "scale" : "2x", 47 | "role" : "quickLook", 48 | "subtype" : "38mm" 49 | }, 50 | { 51 | "size" : "98x98", 52 | "idiom" : "watch", 53 | "scale" : "2x", 54 | "role" : "quickLook", 55 | "subtype" : "42mm" 56 | } 57 | ], 58 | "info" : { 59 | "version" : 1, 60 | "author" : "xcode" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/btn_next.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "player_btn_next_normal@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/btn_next.imageset/player_btn_next_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM WatchKit App/Images.xcassets/btn_next.imageset/player_btn_next_normal@2x.png -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/btn_pause.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "player_btn_pause_normal@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/btn_pause.imageset/player_btn_pause_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM WatchKit App/Images.xcassets/btn_pause.imageset/player_btn_pause_normal@2x.png -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/btn_play.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "player_btn_play_normal@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/btn_play.imageset/player_btn_play_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM WatchKit App/Images.xcassets/btn_play.imageset/player_btn_play_normal@2x.png -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/btn_pre.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "player_btn_pre_normal@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/btn_pre.imageset/player_btn_pre_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM WatchKit App/Images.xcassets/btn_pre.imageset/player_btn_pre_normal@2x.png -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/channel_list.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "musiccircle_myfollow_icon@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/channel_list.imageset/musiccircle_myfollow_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM WatchKit App/Images.xcassets/channel_list.imageset/musiccircle_myfollow_icon@2x.png -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/music_list.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "discover_icon_music_circle@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Images.xcassets/music_list.imageset/discover_icon_music_circle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM WatchKit App/Images.xcassets/music_list.imageset/discover_icon_music_circle@2x.png -------------------------------------------------------------------------------- /BaiduFM WatchKit App/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | BaiduFM 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | com.belmeng.BaiduFM.watchkitapp 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | UISupportedInterfaceOrientations 26 | 27 | UIInterfaceOrientationPortrait 28 | UIInterfaceOrientationPortraitUpsideDown 29 | 30 | WKCompanionAppBundleIdentifier 31 | com.belmeng.BaiduFM 32 | WKWatchKitApp 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/ChannelListInterfaceController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ChannelListInterfaceController.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/26. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import WatchKit 10 | import Foundation 11 | 12 | 13 | class ChannelListInterfaceController: WKInterfaceController { 14 | 15 | @IBOutlet weak var table: WKInterfaceTable! 16 | 17 | override func awakeWithContext(context: AnyObject?) { 18 | super.awakeWithContext(context) 19 | 20 | if DataManager.shareDataManager.chList.count == 0 { 21 | HttpRequest.getChannelList({(list:[Channel]?) -> Void in 22 | if let chlist = list { 23 | DataManager.shareDataManager.chList = chlist 24 | self.loadTable() 25 | } 26 | }) 27 | }else{ 28 | self.loadTable() 29 | } 30 | 31 | // Configure interface objects here. 32 | } 33 | 34 | func loadTable(){ 35 | 36 | self.table.setNumberOfRows(DataManager.shareDataManager.chList.count, withRowType: "tableRow") 37 | 38 | for i:Int in 0.. Void in 22 | Static.instance = DataManager() 23 | } 24 | return Static.instance! 25 | } 26 | 27 | var mp:MPMoviePlayerController = MPMoviePlayerController() 28 | var curPlayStatus = 0 //0初始 1播放 2暂时 3停止 29 | 30 | var chid = "public_tuijian_rege"{ 31 | didSet{ 32 | NSUserDefaults.standardUserDefaults().setValue(self.chid, forKey: "LAST_PLAY_CHANNEL_ID") 33 | NSUserDefaults.standardUserDefaults().synchronize() 34 | } 35 | } 36 | var chList:[Channel] = [] //类型列表 37 | var allSongIdList:[String] = [] //当前类别所有歌曲ID,包括没加载 info信息的 38 | var songInfoList:[SongInfo] = []//当前类别加载info信息的歌曲列表 39 | 40 | var curIndex = 0 { 41 | didSet{ 42 | 43 | if curIndex >= self.songInfoList.count { 44 | curIndex = self.songInfoList.count-1 45 | } 46 | 47 | if curIndex < 0 { 48 | curIndex = 0 49 | } 50 | 51 | self.curSongInfo = self.songInfoList[self.curIndex] 52 | } 53 | } 54 | var curSongInfo:SongInfo? = nil 55 | var curSongLink:SongLink? = nil 56 | 57 | var curLrcInfo:[(lrc:String,time:Int)] = [] 58 | 59 | //当前分类最新20首歌曲 60 | class func getTop20SongInfoList(finish:()->Void){ 61 | HttpRequest.getSongList(DataManager.shareDataManager.chid, callback: {(list:[String]?) -> Void in 62 | if let songIdList = list { 63 | DataManager.shareDataManager.allSongIdList = songIdList 64 | //获取歌曲info信息 65 | var songlist20 = [] + songIdList[0..<20] 66 | HttpRequest.getSongInfoList(songlist20, callback:{ (infolist:[SongInfo]?) -> Void in 67 | if let sInfoList = infolist { 68 | println("getTop20SongInfoList") 69 | DataManager.shareDataManager.songInfoList = sInfoList 70 | DataManager.shareDataManager.curIndex = 0 71 | finish() 72 | } 73 | }) 74 | } 75 | }) 76 | } 77 | } -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/GlanceController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GlanceController.swift 3 | // BaiduFM WatchKit Extension 4 | // 5 | // Created by lumeng on 15/4/26. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import WatchKit 10 | import Foundation 11 | 12 | 13 | class GlanceController: WKInterfaceController { 14 | 15 | override func awakeWithContext(context: AnyObject?) { 16 | super.awakeWithContext(context) 17 | 18 | // Configure interface objects here. 19 | } 20 | 21 | override func willActivate() { 22 | // This method is called when watch view controller is about to be visible to user 23 | super.willActivate() 24 | } 25 | 26 | override func didDeactivate() { 27 | // This method is called when watch view controller is no longer visible 28 | super.didDeactivate() 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/Images.xcassets/README__ignoredByTemplate__: -------------------------------------------------------------------------------- 1 | Did you know that git does not support storing empty directories? 2 | -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/Images.xcassets/btn_pause.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "player_btn_pause_normal@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/Images.xcassets/btn_pause.imageset/player_btn_pause_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM WatchKit Extension/Images.xcassets/btn_pause.imageset/player_btn_pause_normal@2x.png -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/Images.xcassets/btn_play.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "player_btn_play_normal@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/Images.xcassets/btn_play.imageset/player_btn_play_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM WatchKit Extension/Images.xcassets/btn_play.imageset/player_btn_play_normal@2x.png -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | BaiduFM WatchKit Extension 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | com.belmeng.BaiduFM.watchkitextension 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | NSExtension 26 | 27 | NSExtensionAttributes 28 | 29 | WKAppBundleIdentifier 30 | com.belmeng.BaiduFM.watchkitapp 31 | 32 | NSExtensionPointIdentifier 33 | com.apple.watchkit 34 | 35 | RemoteInterfacePrincipalClass 36 | $(PRODUCT_MODULE_NAME).InterfaceController 37 | 38 | 39 | -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/MusicTableRow.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TableRow.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/26. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import WatchKit 11 | 12 | class MusicTableRow: NSObject { 13 | 14 | @IBOutlet weak var image: WKInterfaceImage! 15 | 16 | @IBOutlet weak var nameLabel: WKInterfaceLabel! 17 | 18 | @IBOutlet weak var artistLabel: WKInterfaceLabel! 19 | 20 | } 21 | -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/NotificationController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NotificationController.swift 3 | // BaiduFM WatchKit Extension 4 | // 5 | // Created by lumeng on 15/4/26. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import WatchKit 10 | import Foundation 11 | 12 | 13 | class NotificationController: WKUserNotificationInterfaceController { 14 | 15 | override init() { 16 | // Initialize variables here. 17 | super.init() 18 | 19 | // Configure interface objects here. 20 | } 21 | 22 | override func willActivate() { 23 | // This method is called when watch view controller is about to be visible to user 24 | super.willActivate() 25 | } 26 | 27 | override func didDeactivate() { 28 | // This method is called when watch view controller is no longer visible 29 | super.didDeactivate() 30 | } 31 | 32 | /* 33 | override func didReceiveLocalNotification(localNotification: UILocalNotification, withCompletion completionHandler: ((WKUserNotificationInterfaceType) -> Void)) { 34 | // This method is called when a local notification needs to be presented. 35 | // Implement it if you use a dynamic notification interface. 36 | // Populate your dynamic notification interface as quickly as possible. 37 | // 38 | // After populating your dynamic notification interface call the completion block. 39 | completionHandler(.Custom) 40 | } 41 | */ 42 | 43 | /* 44 | override func didReceiveRemoteNotification(remoteNotification: [NSObject : AnyObject], withCompletion completionHandler: ((WKUserNotificationInterfaceType) -> Void)) { 45 | // This method is called when a remote notification needs to be presented. 46 | // Implement it if you use a dynamic notification interface. 47 | // Populate your dynamic notification interface as quickly as possible. 48 | // 49 | // After populating your dynamic notification interface call the completion block. 50 | completionHandler(.Custom) 51 | } 52 | */ 53 | } 54 | -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/PushNotificationPayload.apns: -------------------------------------------------------------------------------- 1 | { 2 | "aps": { 3 | "alert": { 4 | "body": "Test message", 5 | "title": "Optional title" 6 | }, 7 | "category": "myCategory" 8 | }, 9 | 10 | "WatchKit Simulator Actions": [ 11 | { 12 | "title": "First Button", 13 | "identifier": "firstButtonAction" 14 | } 15 | ], 16 | 17 | "customKey": "Use this file to define a testing payload for your notifications. The aps dictionary specifies the category, alert text and title. The WatchKit Simulator Actions array can provide info for one or more action buttons in addition to the standard Dismiss button. Any other top level keys are custom payload. If you have multiple such JSON files in your project, you'll be able to select them when choosing to debug the notification interface of your Watch App." 18 | } 19 | -------------------------------------------------------------------------------- /BaiduFM WatchKit Extension/SongListInterfaceController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SongListInterfaceController.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/26. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import WatchKit 10 | import Foundation 11 | 12 | 13 | class SongListInterfaceController: WKInterfaceController { 14 | 15 | @IBOutlet weak var table: WKInterfaceTable! 16 | 17 | override func awakeWithContext(context: AnyObject?) { 18 | super.awakeWithContext(context) 19 | 20 | if context != nil { 21 | //分类列表点击过来 22 | DataManager.getTop20SongInfoList { () -> Void in 23 | self.loadTable() 24 | } 25 | }else{ 26 | //首页菜单点击过来 27 | self.loadTable() 28 | } 29 | } 30 | 31 | func loadTable(){ 32 | 33 | self.table.setNumberOfRows(DataManager.shareDataManager.songInfoList.count, withRowType: "tableRow") 34 | 35 | for i:Int in 0.. 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /BaiduFM.xcodeproj/project.xcworkspace/xcshareddata/BaiduFM.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | E8E99C13-91D9-408B-A954-40F395F7A403 9 | IDESourceControlProjectName 10 | BaiduFM 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | E377873BE7F2CED237EF08505F12BD14670B444A 14 | github.com:belm/BaiduFM-Swift.git 15 | 16 | IDESourceControlProjectPath 17 | BaiduFM.xcodeproj 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | E377873BE7F2CED237EF08505F12BD14670B444A 21 | ../.. 22 | 23 | IDESourceControlProjectURL 24 | github.com:belm/BaiduFM-Swift.git 25 | IDESourceControlProjectVersion 26 | 111 27 | IDESourceControlProjectWCCIdentifier 28 | E377873BE7F2CED237EF08505F12BD14670B444A 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | E377873BE7F2CED237EF08505F12BD14670B444A 36 | IDESourceControlWCCName 37 | BaiduFM-Swift 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /BaiduFM.xcodeproj/project.xcworkspace/xcuserdata/lumeng.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM.xcodeproj/project.xcworkspace/xcuserdata/lumeng.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /BaiduFM.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /BaiduFM.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | BaiduFM WatchKit App.xcscheme 8 | 9 | orderHint 10 | 12 11 | 12 | BaiduFM.xcscheme 13 | 14 | orderHint 15 | 0 16 | 17 | BaiduFm.xcscheme 18 | 19 | orderHint 20 | 11 21 | 22 | BaiduFmKit.xcscheme 23 | 24 | orderHint 25 | 4 26 | 27 | Glance - BaiduFM WatchKit App.xcscheme 28 | 29 | orderHint 30 | 14 31 | 32 | Notification - BaiduFM WatchKit App.xcscheme 33 | 34 | orderHint 35 | 13 36 | 37 | 38 | SuppressBuildableAutocreation 39 | 40 | 67806C871AEA8C70002D94D1 41 | 42 | primary 43 | 44 | 45 | 6780CE9D1AEC66C1000BAA67 46 | 47 | primary 48 | 49 | 50 | 6797967F1AEC542700FF780F 51 | 52 | primary 53 | 54 | 55 | 679796891AEC542800FF780F 56 | 57 | primary 58 | 59 | 60 | 679796E01AEC59AF00FF780F 61 | 62 | primary 63 | 64 | 65 | 679797271AEC5AA200FF780F 66 | 67 | primary 68 | 69 | 70 | 67B9C2BD1AEBF18900107696 71 | 72 | primary 73 | 74 | 75 | 67B9C2C71AEBF18900107696 76 | 77 | primary 78 | 79 | 80 | 67B9C2E51AEBF43300107696 81 | 82 | primary 83 | 84 | 85 | 67B9C2EF1AEBF43300107696 86 | 87 | primary 88 | 89 | 90 | 67F0AEB81AD9FF8C000CB588 91 | 92 | primary 93 | 94 | 95 | 67F0AECD1AD9FF8C000CB588 96 | 97 | primary 98 | 99 | 100 | 67F0C85D1AEC5B8D00937970 101 | 102 | primary 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /BaiduFM.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /BaiduFM.xcworkspace/xcshareddata/BaiduFM.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | 8D593AB7-0CCB-4967-B9B1-B6D7733566F0 9 | IDESourceControlProjectName 10 | BaiduFM 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | E377873BE7F2CED237EF08505F12BD14670B444A 14 | github.com:belm/BaiduFM-Swift.git 15 | 16 | IDESourceControlProjectPath 17 | BaiduFM.xcworkspace 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | E377873BE7F2CED237EF08505F12BD14670B444A 21 | .. 22 | 23 | IDESourceControlProjectURL 24 | github.com:belm/BaiduFM-Swift.git 25 | IDESourceControlProjectVersion 26 | 111 27 | IDESourceControlProjectWCCIdentifier 28 | E377873BE7F2CED237EF08505F12BD14670B444A 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | E377873BE7F2CED237EF08505F12BD14670B444A 36 | IDESourceControlWCCName 37 | BaiduFM-Swift 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /BaiduFM.xcworkspace/xcuserdata/lumeng.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM.xcworkspace/xcuserdata/lumeng.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /BaiduFM.xcworkspace/xcuserdata/lumeng.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /BaiduFM/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/12. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import AVFoundation 11 | import Kingfisher 12 | 13 | @UIApplicationMain 14 | class AppDelegate: UIResponder, UIApplicationDelegate { 15 | 16 | var window: UIWindow? 17 | 18 | 19 | func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 20 | // Override point for customization after application launch. 21 | 22 | //后台播放音乐 23 | AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) 24 | AVAudioSession.sharedInstance().setActive(true, error: nil) 25 | UIApplication.sharedApplication().beginReceivingRemoteControlEvents() 26 | 27 | var db = BaseDb() 28 | 29 | //初始化图片缓存库配置 Kingfisher 30 | let downloader = KingfisherManager.sharedManager.downloader 31 | downloader.downloadTimeout = 5 32 | 33 | let cache = KingfisherManager.sharedManager.cache 34 | cache.maxDiskCacheSize = 100 * 1024 * 1024 //defalut is no limit 35 | cache.maxCachePeriodInSecond = 60 * 60 * 24 * 10 //default is 7days 36 | 37 | return true 38 | } 39 | 40 | func applicationWillResignActive(application: UIApplication) { 41 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 42 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 43 | } 44 | 45 | func applicationDidEnterBackground(application: UIApplication) { 46 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 47 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 48 | } 49 | 50 | func applicationWillEnterForeground(application: UIApplication) { 51 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 52 | } 53 | 54 | func applicationDidBecomeActive(application: UIApplication) { 55 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 56 | } 57 | 58 | func applicationWillTerminate(application: UIApplication) { 59 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 60 | } 61 | 62 | 63 | } 64 | 65 | -------------------------------------------------------------------------------- /BaiduFM/BaiduFM-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | #import "FMDB.h" -------------------------------------------------------------------------------- /BaiduFM/Common/Const.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Const.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/23. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | // MARK: - 通知 12 | let CHANNEL_MUSIC_LIST_CLICK_NOTIFICATION = "CHANNEL_MUSIC_LIST_CLICK_NOTIFICATION" //某类别歌曲列表点击通知 13 | 14 | let OTHER_MUSIC_LIST_CLICK_NOTIFICATION = "OTHER_MUSIC_LIST_CLICK_NOTIFICATION" //下载,喜欢,最近播放列表点击通知 15 | 16 | // MARK: - 常量 17 | 18 | //获取歌曲分类列表 19 | let http_channel_list_url = "http://fm.baidu.com/dev/api/?tn=channellist&hashcode=310d03041bffd10803bc3ee8913e2726&_=1428801468750" 20 | 21 | //获取某个分类歌曲类别 http_song_list_url + "分类名" 22 | let http_song_list_url = "http://fm.baidu.com/dev/api/?tn=playlist&hashcode=310d03041bffd10803bc3ee8913e2726&_=1428917601565&id=" 23 | 24 | //获取歌曲info信息 25 | let http_song_info = "http://fm.baidu.com/data/music/songinfo" 26 | 27 | //获取歌曲link信息 28 | let http_song_link = "http://fm.baidu.com/data/music/songlink" 29 | 30 | //获取歌词 http://fm.baidu.com/data2/lrc/14881153/14881153.lrc 31 | let http_song_lrc = "http://fm.baidu.com" 32 | 33 | -------------------------------------------------------------------------------- /BaiduFM/Common/Utils.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Utils.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/18. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Utils { 12 | 13 | /** 14 | 获取文档路径 15 | 16 | :returns: 文档路径 17 | */ 18 | class func documentPath() -> String{ 19 | 20 | return NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as! String 21 | } 22 | } -------------------------------------------------------------------------------- /BaiduFM/DataBase/BaseDb.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BaseDb.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/18. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class BaseDb { 12 | 13 | var dbPath: String 14 | var db:FMDatabase 15 | 16 | init(){ 17 | 18 | println("basedb init") 19 | var dbDirectory = Utils.documentPath().stringByAppendingPathComponent("database") 20 | 21 | if !NSFileManager.defaultManager().fileExistsAtPath(dbDirectory){ 22 | NSFileManager.defaultManager().createDirectoryAtPath(dbDirectory, withIntermediateDirectories: false, attributes: nil, error: nil) 23 | } 24 | 25 | self.dbPath = dbDirectory.stringByAppendingPathComponent("baidufm.sqlite") 26 | 27 | self.db = FMDatabase(path: self.dbPath) 28 | //println(dbPath) 29 | 30 | //db文件不存在则创建 31 | if !NSFileManager.defaultManager().fileExistsAtPath(self.dbPath){ 32 | if self.open() { 33 | var sql = "CREATE TABLE tbl_song_list (id INTEGER PRIMARY KEY AUTOINCREMENT,sid TEXT UNIQUE,name TEXT,artist TEXT,album TEXT,song_url TEXT,pic_url TEXT,lrc_url TEXT,time INTEGER,is_dl INTEGER DEFAULT 0,dl_file TEXT,is_like INTEGER DEFAULT 0,is_recent INTEGER DEFAULT 1,format TEXT)" 34 | if !self.db.executeUpdate(sql, withArgumentsInArray: nil){ 35 | println("db创建失败") 36 | }else{ 37 | println("db创建成功") 38 | } 39 | }else{ 40 | println("open error") 41 | } 42 | } 43 | } 44 | 45 | deinit{ 46 | self.close() 47 | } 48 | 49 | func open()->Bool{ 50 | return self.db.open() 51 | } 52 | 53 | func close()->Bool{ 54 | return self.db.close() 55 | } 56 | } -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon29x29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon29x29.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon29x29@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon29x29@2x-1.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon40x40@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon40x40@2x-1.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "29x29", 5 | "idiom" : "iphone", 6 | "filename" : "AppIcon29x29@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "29x29", 11 | "idiom" : "iphone", 12 | "filename" : "AppIcon29x29@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "40x40", 17 | "idiom" : "iphone", 18 | "filename" : "AppIcon40x40@2x.png", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "size" : "40x40", 23 | "idiom" : "iphone", 24 | "filename" : "AppIcon40x40@3x.png", 25 | "scale" : "3x" 26 | }, 27 | { 28 | "size" : "60x60", 29 | "idiom" : "iphone", 30 | "filename" : "AppIcon60x60@2x.png", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "size" : "60x60", 35 | "idiom" : "iphone", 36 | "filename" : "AppIcon60x60@3x.png", 37 | "scale" : "3x" 38 | }, 39 | { 40 | "size" : "29x29", 41 | "idiom" : "ipad", 42 | "filename" : "AppIcon29x29.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "29x29", 47 | "idiom" : "ipad", 48 | "filename" : "AppIcon29x29@2x-1.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "idiom" : "ipad", 53 | "size" : "40x40", 54 | "scale" : "1x" 55 | }, 56 | { 57 | "size" : "40x40", 58 | "idiom" : "ipad", 59 | "filename" : "AppIcon40x40@2x-1.png", 60 | "scale" : "2x" 61 | }, 62 | { 63 | "idiom" : "ipad", 64 | "size" : "76x76", 65 | "scale" : "1x" 66 | }, 67 | { 68 | "size" : "76x76", 69 | "idiom" : "ipad", 70 | "filename" : "Icon-152.png", 71 | "scale" : "2x" 72 | } 73 | ], 74 | "info" : { 75 | "version" : 1, 76 | "author" : "xcode" 77 | } 78 | } -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/AppIcon.appiconset/Icon-152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/AppIcon.appiconset/Icon-152.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/Download.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "actionIconDownload@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/Download.imageset/actionIconDownload@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/Download.imageset/actionIconDownload@2x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/Downloaded.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "actionIconDownloaded@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/Downloaded.imageset/actionIconDownloaded@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/Downloaded.imageset/actionIconDownloaded@2x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/Like.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "actionIconLike@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/Like.imageset/actionIconLike@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/Like.imageset/actionIconLike@2x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/Unlike.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "actionIconUnlike@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/Unlike.imageset/actionIconUnlike@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/Unlike.imageset/actionIconUnlike@2x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/mymusic_icon_download_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "mymusic_icon_download_normal@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/mymusic_icon_download_normal.imageset/mymusic_icon_download_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/mymusic_icon_download_normal.imageset/mymusic_icon_download_normal@2x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/player_btn_next_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "player_btn_next_normal@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/player_btn_next_normal.imageset/player_btn_next_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/player_btn_next_normal.imageset/player_btn_next_normal@2x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/player_btn_pause_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "player_btn_pause_normal@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/player_btn_pause_normal.imageset/player_btn_pause_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/player_btn_pause_normal.imageset/player_btn_pause_normal@2x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/player_btn_play_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "player_btn_play_normal@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/player_btn_play_normal.imageset/player_btn_play_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/player_btn_play_normal.imageset/player_btn_play_normal@2x.png -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/player_btn_pre_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "player_btn_pre_normal@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /BaiduFM/Images.xcassets/player_btn_pre_normal.imageset/player_btn_pre_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/BaiduFM/Images.xcassets/player_btn_pre_normal.imageset/player_btn_pre_normal@2x.png -------------------------------------------------------------------------------- /BaiduFM/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | com.belmeng.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | BaiduFM 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UIBackgroundModes 26 | 27 | audio 28 | 29 | UILaunchStoryboardName 30 | LaunchScreen 31 | UIMainStoryboardFile 32 | Main 33 | UIRequiredDeviceCapabilities 34 | 35 | armv7 36 | 37 | UIStatusBarHidden 38 | 39 | UIStatusBarStyle 40 | UIStatusBarStyleDefault 41 | UISupportedInterfaceOrientations 42 | 43 | UIInterfaceOrientationPortrait 44 | 45 | UISupportedInterfaceOrientations~ipad 46 | 47 | UIInterfaceOrientationPortrait 48 | UIInterfaceOrientationPortraitUpsideDown 49 | UIInterfaceOrientationLandscapeLeft 50 | UIInterfaceOrientationLandscapeRight 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /BaiduFM/Libs/fmdb/FMDB.h: -------------------------------------------------------------------------------- 1 | #import "FMDatabase.h" 2 | #import "FMResultSet.h" 3 | #import "FMDatabaseAdditions.h" 4 | #import "FMDatabaseQueue.h" 5 | #import "FMDatabasePool.h" 6 | -------------------------------------------------------------------------------- /BaiduFM/Model/Channel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Channel.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/12. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | struct Channel { 12 | var id:String 13 | var name:String 14 | var order:Int 15 | var cate_id:String 16 | var cate:String 17 | var cate_order:Int 18 | var pv_order:Int 19 | } -------------------------------------------------------------------------------- /BaiduFM/Model/DataCenter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DataCenter.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/14. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import MediaPlayer 11 | 12 | class DataCenter { 13 | 14 | //单例 15 | class var shareDataCenter:DataCenter{ 16 | struct Static { 17 | static var onceToken : dispatch_once_t = 0 18 | static var instance: DataCenter? = nil 19 | } 20 | 21 | dispatch_once(&Static.onceToken) { () -> Void in 22 | Static.instance = DataCenter() 23 | } 24 | return Static.instance! 25 | } 26 | 27 | var mp:MPMoviePlayerController = MPMoviePlayerController() 28 | 29 | //歌曲分类列表信息 30 | var channelListInfo:[Channel] = [] 31 | 32 | //当前分类 33 | var currentChannel: String = "public_tuijian_zhongguohaoshengyin" { 34 | didSet{ 35 | NSUserDefaults.standardUserDefaults().setValue(self.currentChannel, forKey: "LAST_PLAY_CHANNEL_ID") 36 | NSUserDefaults.standardUserDefaults().synchronize() 37 | } 38 | } 39 | 40 | var currentChannelName: String = "中国好声音" { 41 | didSet{ 42 | NSUserDefaults.standardUserDefaults().setValue(self.currentChannelName, forKey: "LAST_PLAY_CHANNEL_NAME") 43 | NSUserDefaults.standardUserDefaults().synchronize() 44 | } 45 | } 46 | 47 | //当前分类所有歌曲ID 48 | var currentAllSongId:[String] = [] 49 | 50 | var curShowStartIndex = 0 51 | 52 | var curShowEndIndex = 20 53 | 54 | //当前显示歌曲列表 55 | var curShowAllSongId:[String]{ 56 | get { 57 | if curShowEndIndex > self.currentAllSongId.count { 58 | curShowEndIndex = self.currentAllSongId.count 59 | curShowStartIndex = curShowEndIndex - 20 60 | } 61 | 62 | curShowStartIndex = curShowStartIndex < 0 ? 0 :curShowStartIndex 63 | 64 | 65 | return [] + currentAllSongId[curShowStartIndex ..< curShowEndIndex] 66 | } 67 | } 68 | 69 | //当前显示歌曲列表info信息 70 | var curShowAllSongInfo:[SongInfo] = [] 71 | 72 | //当前显示歌曲列表link信息 73 | var curShowAllSongLink:[SongLink] = [] 74 | 75 | //当前播放的歌曲index 76 | var curPlayIndex:Int = 0{ 77 | didSet{ 78 | if curPlayIndex < curShowAllSongInfo.count { 79 | curPlaySongInfo = curShowAllSongInfo[curPlayIndex] 80 | } 81 | 82 | if curPlayIndex < curShowAllSongLink.count{ 83 | curPlaySongLink = curShowAllSongLink[curPlayIndex] 84 | } 85 | } 86 | } 87 | 88 | //当前播放歌曲的info信息 89 | var curPlaySongInfo:SongInfo? = nil 90 | 91 | //当前播放歌曲的info信息 92 | var curPlaySongLink:SongLink? = nil 93 | 94 | var curSong:Song? = nil 95 | 96 | var curPlayStatus = 0 //0初始 1播放 2暂时 3停止 97 | 98 | //db操作 99 | var dbSongList:SongList = SongList() 100 | } -------------------------------------------------------------------------------- /BaiduFM/Model/Song.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Song.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/12. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Song:NSObject{ 12 | var sid:String 13 | var name:String 14 | var artist:String 15 | var album:String 16 | var song_url:String 17 | var pic_url:String 18 | var lrc_url:String 19 | var time:Int 20 | var is_dl:Int 21 | var dl_file:String 22 | var is_like:Int 23 | var is_recent:Int 24 | var format:String 25 | 26 | init(sid:String,name:String,artist:String,album:String,song_url:String,pic_url:String,lrc_url:String,time:Int,is_dl:Int,dl_file:String,is_like:Int,is_recent:Int,format:String) { 27 | 28 | self.sid = sid 29 | self.name = name 30 | self.artist = artist 31 | self.album = album 32 | self.song_url = song_url 33 | self.pic_url = pic_url 34 | self.lrc_url = lrc_url 35 | self.time = time 36 | self.is_dl = is_dl 37 | self.dl_file = dl_file 38 | self.is_like = is_like 39 | self.is_recent = is_recent 40 | self.format = format 41 | 42 | super.init() 43 | } 44 | } 45 | 46 | struct SongInfo { 47 | var id:String 48 | var name:String 49 | var artistId:String 50 | var artistName:String 51 | var albumId:Int 52 | var albumName:String 53 | var songPicSmall:String 54 | var songPicBig:String 55 | var songPicRadio:String 56 | var allRate:String 57 | } 58 | 59 | struct SongLink { 60 | var id:String 61 | var name:String 62 | var lrcLink:String 63 | var linkCode:Int 64 | var songLink:String 65 | var format:String 66 | var time:Int 67 | var size:Int 68 | var rate:Int 69 | } -------------------------------------------------------------------------------- /BaiduFM/MyPlayground.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | //: Playground - noun: a place where people can play 2 | 3 | import UIKit 4 | var str:String = "Hello, playground" 5 | 6 | //xcode6.3 & swift1.2 7 | 8 | //1. 可选绑定if let的语法优化 9 | //2. 类型转化as用法的变化 10 | //3. 新增原生set(集合)类型 11 | //4. 常量延迟初始化 12 | //5. 与OC的互动和桥接 13 | //6. 迁移助手 Edit=>Convert=>To Latest Swift Syntax 14 | 15 | //1.可选绑定if let的语法优化 16 | var wea:String? = "rain" 17 | var sh:String? = "sun" 18 | var tmp:Int? = 20 19 | 20 | if let weather = wea where "rain".isEmpty, let shanghai = sh, let temp=tmp{ 21 | //update ui 22 | println("update UI") 23 | } 24 | 25 | //2. 类型转化as用法的变化 NSObject=>UIView=>UITableView 26 | 27 | // 向上转换 UITableView=> NSObject 直接as 28 | // 向下转换 NSObject=>UITableView 确定 as!(强制转换) 不确定as?(安全转换) 29 | 30 | //3. 新增原生set(集合)类型 31 | 32 | var people:Set = ["头发","鼻子","耳朵","头发"] 33 | var dog:Set = ["鼻子","耳朵","尾巴"] 34 | 35 | //插入元素 36 | people.insert("脚") 37 | 38 | //删除元素 39 | people.remove("脚") 40 | 41 | people 42 | 43 | //交集 44 | people.intersect(dog) 45 | 46 | //差集 47 | people.subtract(dog) 48 | 49 | //并集 50 | people.union(dog) 51 | 52 | //补集 53 | people.exclusiveOr(dog) 54 | 55 | //4. 常量延迟初始化 only for class or struct 56 | struct Point{ 57 | var x:Int 58 | var y:Int 59 | } 60 | //lazy var players:Point = Point(x: 10, y: 5) 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /BaiduFM/MyPlayground.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- 1 | // 2 | // This file (and all other Swift source files in the Sources directory of this playground) will be precompiled into a framework which is automatically made available to MyPlayground.playground. 3 | // 4 | -------------------------------------------------------------------------------- /BaiduFM/MyPlayground.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /BaiduFM/MyPlayground.playground/timeline.xctimeline: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /BaiduFM/Views/ChannelTableViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ChannelTableViewController.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/13. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ChannelTableViewController: UITableViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | if DataCenter.shareDataCenter.channelListInfo.count == 0 { 17 | HttpRequest.getChannelList { (list) -> Void in 18 | if list == nil { 19 | return 20 | } 21 | DataCenter.shareDataCenter.channelListInfo = list! 22 | self.tableView.reloadData() 23 | } 24 | } 25 | } 26 | 27 | override func didReceiveMemoryWarning() { 28 | super.didReceiveMemoryWarning() 29 | // Dispose of any resources that can be recreated. 30 | } 31 | 32 | // MARK: - Table view data source 33 | 34 | override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 35 | // #warning Potentially incomplete method implementation. 36 | // Return the number of sections. 37 | return 1 38 | } 39 | 40 | override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 41 | // #warning Incomplete method implementation. 42 | // Return the number of rows in the section. 43 | return DataCenter.shareDataCenter.channelListInfo.count 44 | } 45 | 46 | override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 47 | let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell 48 | 49 | // Configure the cell... 50 | cell.textLabel?.text = DataCenter.shareDataCenter.channelListInfo[indexPath.row].name 51 | 52 | return cell 53 | } 54 | 55 | override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){ 56 | 57 | var channel = DataCenter.shareDataCenter.channelListInfo[indexPath.row] 58 | DataCenter.shareDataCenter.currentChannel = channel.id 59 | DataCenter.shareDataCenter.currentChannelName = channel.name 60 | DataCenter.shareDataCenter.curShowStartIndex = 0 61 | DataCenter.shareDataCenter.curShowEndIndex = 20 62 | } 63 | 64 | override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 65 | cell.layer.transform = CATransform3DMakeScale(0.1, 0.1, 1) 66 | UIView.animateWithDuration(0.25, animations: { () -> Void in 67 | cell.layer.transform = CATransform3DMakeScale(1, 1, 1) 68 | }) 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /BaiduFM/Views/RoundImageView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RoundImageView.swift 3 | // BaiduFM 4 | // 5 | // Created by lumeng on 15/4/21. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class RoundImageView: UIImageView { 12 | 13 | /* 14 | // Only override drawRect: if you perform custom drawing. 15 | // An empty implementation adversely affects performance during animation. 16 | override func drawRect(rect: CGRect) { 17 | // Drawing code 18 | } 19 | */ 20 | 21 | required init(coder aDecoder: NSCoder) { 22 | super.init(coder: aDecoder) 23 | 24 | //设置圆角 25 | self.clipsToBounds = true 26 | self.layer.cornerRadius = self.frame.size.width/2 27 | 28 | //边框 29 | self.layer.borderWidth = 4 30 | self.layer.borderColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 0.7).CGColor 31 | } 32 | 33 | func rotation(){ 34 | 35 | var animation = CABasicAnimation(keyPath: "transform.rotation") 36 | animation.fromValue = 0.0 37 | animation.toValue = M_PI*2.0 38 | animation.duration = 20 39 | animation.repeatCount = 1000 40 | self.layer.addAnimation(animation, forKey: nil) 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /BaiduFMTests/BaiduFMTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BaiduFmTests.swift 3 | // BaiduFmTests 4 | // 5 | // Created by lumeng on 15/4/26. 6 | // Copyright (c) 2015年 lumeng. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import XCTest 11 | 12 | class BaiduFmTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | XCTAssert(true, "Pass") 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measureBlock() { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /BaiduFMTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | com.belmeng.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | source 'https://github.com/CocoaPods/Specs.git' 3 | platform :ios, '8.0' 4 | use_frameworks! 5 | 6 | target 'BaiduFM' do 7 | pod 'Alamofire', '~> 1.2' 8 | pod "SwiftyJSON", '>= 2.2' 9 | pod 'Async', :git => 'https://github.com/duemunk/Async.git' 10 | pod 'MJRefresh' 11 | pod 'LTMorphingLabel', '~> 0.0.6' 12 | pod 'Kingfisher', '~> 1.2' 13 | end 14 | 15 | target 'BaiduFM WatchKit Extension' do 16 | pod 'Alamofire', '~> 1.2' 17 | pod "SwiftyJSON", '>= 2.2' 18 | pod 'Async', :git => 'https://github.com/duemunk/Async.git' 19 | end -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Alamofire (1.2.1) 3 | - Async (1.2.0) 4 | - Kingfisher (1.2.0) 5 | - LTMorphingLabel (0.0.7) 6 | - MJRefresh (1.4.5) 7 | - SwiftyJSON (2.2.0) 8 | 9 | DEPENDENCIES: 10 | - Alamofire (~> 1.2) 11 | - Async (from `https://github.com/duemunk/Async.git`) 12 | - Kingfisher (~> 1.2) 13 | - LTMorphingLabel (~> 0.0.6) 14 | - MJRefresh 15 | - SwiftyJSON (>= 2.2) 16 | 17 | EXTERNAL SOURCES: 18 | Async: 19 | :git: https://github.com/duemunk/Async.git 20 | 21 | CHECKOUT OPTIONS: 22 | Async: 23 | :commit: ceb4051b248787cc860dd0e7169b1386e29345cf 24 | :git: https://github.com/duemunk/Async.git 25 | 26 | SPEC CHECKSUMS: 27 | Alamofire: 1acfdf179aff68b41a48dff70c1ac7fa263e2bcb 28 | Async: aba7b48a4cd05dae27d1affce2f48f2ed61e75f9 29 | Kingfisher: 17f76083d055d1f15f36cfe2cf8b7b39a3893e05 30 | LTMorphingLabel: aef64d2adb1c659869a8fe22cf2dc7bbad2e28e5 31 | MJRefresh: 4b24394e577ea399fbc926e5b6072317aae2c152 32 | SwiftyJSON: 0b3e6c07af17ff745e77e8e9984097b55c956e5c 33 | 34 | COCOAPODS: 0.37.0.rc.1 35 | -------------------------------------------------------------------------------- /Pods/Alamofire/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 Alamofire (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/Async/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Tobias Due Munk 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | 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, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /Pods/Headers/Private/LTMorphingLabel/LTMorphingLabel.h: -------------------------------------------------------------------------------- 1 | ../../../LTMorphingLabel/LTMorphingLabel/LTMorphingLabel.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshComponent.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshComponent.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshConst.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshGifFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshGifHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshLegendFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshLegendFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshLegendHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshLegendHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/UIScrollView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/UIScrollView+MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/UIView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Public/LTMorphingLabel/LTMorphingLabel.h: -------------------------------------------------------------------------------- 1 | ../../../LTMorphingLabel/LTMorphingLabel/LTMorphingLabel.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshComponent.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshComponent.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshConst.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshGifFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshGifHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshLegendFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshLegendFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshLegendHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshLegendHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/UIScrollView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/UIScrollView+MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/UIView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Kingfisher/Kingfisher/KingfisherOptions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KingfisherOptions.swift 3 | // Kingfisher 4 | // 5 | // Created by Wei Wang on 15/4/6. 6 | // 7 | // Copyright (c) 2015 Wei Wang 8 | // 9 | // Permission is hereby granted, free of charge, to any person obtaining a copy 10 | // of this software and associated documentation files (the "Software"), to deal 11 | // in the Software without restriction, including without limitation the rights 12 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | // copies of the Software, and to permit persons to whom the Software is 14 | // furnished to do so, subject to the following conditions: 15 | // 16 | // The above copyright notice and this permission notice shall be included in 17 | // all copies or substantial portions of the Software. 18 | // 19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | // THE SOFTWARE. 26 | 27 | import Foundation 28 | 29 | /** 30 | * Options to control Kingfisher behaviors. 31 | */ 32 | public struct KingfisherOptions : RawOptionSetType { 33 | typealias RawValue = UInt 34 | private var value: UInt = 0 35 | init(_ value: UInt) { self.value = value } 36 | public init(rawValue value: UInt) { self.value = value } 37 | public init(nilLiteral: ()) { self.value = 0 } 38 | public static var allZeros: KingfisherOptions { return self(0) } 39 | static func fromMask(raw: UInt) -> KingfisherOptions { return self(raw) } 40 | public var rawValue: UInt { return self.value } 41 | 42 | /// None options. Kingfisher will keep its default behavior. 43 | public static var None: KingfisherOptions { return self(0) } 44 | 45 | /// Download in a low priority. 46 | public static var LowPriority: KingfisherOptions { return KingfisherOptions(1 << 0) } 47 | 48 | /// Ignore cache. Always download the image and cache it again. 49 | public static var ForceRefresh: KingfisherOptions { return KingfisherOptions(1 << 1) } 50 | 51 | /// Only cache downloaded image to memory, not cache in disk. 52 | public static var CacheMemoryOnly: KingfisherOptions { return KingfisherOptions(1 << 2) } 53 | 54 | /// Decode the image in background thread before using. 55 | public static var BackgroundDecode: KingfisherOptions { return KingfisherOptions(1 << 3) } 56 | } 57 | -------------------------------------------------------------------------------- /Pods/Kingfisher/Kingfisher/KingfisherOptionsInfo.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KingfisherOptionsInfo.swift 3 | // Kingfisher 4 | // 5 | // Created by Wei Wang on 15/4/23. 6 | // 7 | // Copyright (c) 2015 Wei Wang 8 | // 9 | // Permission is hereby granted, free of charge, to any person obtaining a copy 10 | // of this software and associated documentation files (the "Software"), to deal 11 | // in the Software without restriction, including without limitation the rights 12 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | // copies of the Software, and to permit persons to whom the Software is 14 | // furnished to do so, subject to the following conditions: 15 | // 16 | // The above copyright notice and this permission notice shall be included in 17 | // all copies or substantial portions of the Software. 18 | // 19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | // THE SOFTWARE. 26 | 27 | import Foundation 28 | 29 | /** 30 | * KingfisherOptionsInfo is a typealias for [KingfisherOptionsInfoKey: Any]. You can use the key-value pairs to control some behaviors of Kingfisher. 31 | */ 32 | public typealias KingfisherOptionsInfo = [KingfisherOptionsInfoKey: Any] 33 | 34 | /** 35 | Key for KingfisherOptionsInfo 36 | 37 | - Options: Key for options. The value for this key should be a KingfisherOptions. 38 | - TargetCache: Key for target cache. The value for this key should be an ImageCache object.Kingfisher will use this cache when handling the related operation, including trying to retrieve the cached images and store the downloaded image to it. 39 | - Downloader: Key for downloader to use. The value for this key should be an ImageDownloader object. Kingfisher will use this downloader to download the images. 40 | */ 41 | public enum KingfisherOptionsInfoKey { 42 | case Options 43 | case TargetCache 44 | case Downloader 45 | } 46 | -------------------------------------------------------------------------------- /Pods/Kingfisher/Kingfisher/UIImage+Decode.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Decode.swift 3 | // Kingfisher 4 | // 5 | // Created by Wei Wang on 15/4/7. 6 | // 7 | // Copyright (c) 2015 Wei Wang 8 | // 9 | // Permission is hereby granted, free of charge, to any person obtaining a copy 10 | // of this software and associated documentation files (the "Software"), to deal 11 | // in the Software without restriction, including without limitation the rights 12 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | // copies of the Software, and to permit persons to whom the Software is 14 | // furnished to do so, subject to the following conditions: 15 | // 16 | // The above copyright notice and this permission notice shall be included in 17 | // all copies or substantial portions of the Software. 18 | // 19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | // THE SOFTWARE. 26 | 27 | import Foundation 28 | 29 | extension UIImage { 30 | func kf_decodedImage() -> UIImage? { 31 | let imageRef = self.CGImage 32 | let colorSpace = CGColorSpaceCreateDeviceRGB() 33 | let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue) 34 | let context = CGBitmapContextCreate(nil, CGImageGetWidth(imageRef), CGImageGetHeight(imageRef), 8, 0, colorSpace, bitmapInfo) 35 | if let context = context { 36 | let rect = CGRectMake(0, 0, CGFloat(CGImageGetWidth(imageRef)), CGFloat(CGImageGetHeight(imageRef))) 37 | CGContextDrawImage(context, rect, imageRef) 38 | let decompressedImageRef = CGBitmapContextCreateImage(context) 39 | return UIImage(CGImage: decompressedImageRef) 40 | } else { 41 | return nil 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Pods/Kingfisher/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Wei Wang 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 all 13 | 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 THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Pods/LTMorphingLabel/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright © 2015 Lex Tang, http://LexTang.com 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 | -------------------------------------------------------------------------------- /Pods/LTMorphingLabel/LTMorphingLabel/LTCharacterLimbo.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LTCharacterLimbo.swift 3 | // LTMorphingLabelDemo 4 | // 5 | // Created by Lex on 3/15/15. 6 | // Copyright (c) 2015 LexTang.com. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | 12 | public struct LTCharacterLimbo: DebugPrintable { 13 | 14 | public let char: Character 15 | public var rect: CGRect 16 | public var alpha: CGFloat 17 | public var size: CGFloat 18 | public var drawingProgress: CGFloat = 0.0 19 | 20 | public var debugDescription: String { 21 | get { 22 | return "Character: '\(char)'" 23 | + "drawIn (\(rect.origin.x), \(rect.origin.y), " 24 | + "\(rect.size.width)x\(rect.size.height) " 25 | + "with alpha \(alpha) " 26 | + "and \(size)pt font." 27 | } 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /Pods/LTMorphingLabel/LTMorphingLabel/LTEasing.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LTEasing.swift 3 | // LTMorphingLabelDemo 4 | // 5 | // Created by Lex on 7/1/14. 6 | // Copyright (c) 2015 LexTang.com. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | // http://gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js 12 | // t = currentTime 13 | // b = beginning 14 | // c = change 15 | // d = duration 16 | 17 | public class LTEasing { 18 | 19 | public class func easeOutQuint(t: Float, _ b: Float, _ c: Float, _ d: Float = 1.0) -> Float { 20 | return { 21 | return c * ($0 * $0 * $0 * $0 * $0 + 1.0) + b 22 | }(t / d - 1.0) 23 | } 24 | 25 | public class func easeInQuint(t: Float, _ b: Float, _ c: Float, _ d: Float = 1.0) -> Float { 26 | return { 27 | return c * $0 * $0 * $0 * $0 * $0 + b 28 | }(t / d) 29 | } 30 | 31 | public class func easeOutBack(t: Float, _ b: Float, _ c: Float, _ d: Float = 1.0) -> Float { 32 | let s: Float = 2.70158 33 | let t2: Float = t / d - 1.0 34 | return Float(c * (t2 * t2 * ((s + 1.0) * t2 + s) + 1.0)) + b 35 | } 36 | 37 | public class func easeOutBounce(t: Float, _ b: Float, _ c: Float, _ d: Float = 1.0) -> Float { 38 | return { 39 | if $0 < 1 / 2.75 { 40 | return c * 7.5625 * $0 * $0 + b 41 | } else if $0 < 2 / 2.75 { 42 | let t = $0 - 1.5 / 2.75 43 | return c * (7.5625 * t * t + 0.75) + b 44 | } else if $0 < 2.5 / 2.75 { 45 | let t = $0 - 2.25 / 2.75 46 | return c * (7.5625 * t * t + 0.9375) + b 47 | } else { 48 | let t = $0 - 2.625 / 2.75 49 | return c * (7.5625 * t * t + 0.984375) + b 50 | } 51 | }(t / d) 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Pods/LTMorphingLabel/LTMorphingLabel/LTMorphingEffect.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LTMorphingEffect.swift 3 | // LTMorphingLabelDemo 4 | // 5 | // Created by Lex on 3/15/15. 6 | // Copyright (c) 2015 LexTang.com. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | 12 | @objc public enum LTMorphingEffect: Int, Printable { 13 | case Scale = 0 14 | case Evaporate 15 | case Fall 16 | case Pixelate 17 | case Sparkle 18 | case Burn 19 | case Anvil 20 | 21 | static let allValues = ["Scale", "Evaporate", "Fall", "Pixelate", "Sparkle", "Burn", "Anvil"] 22 | 23 | public var description: String { 24 | get { 25 | switch self { 26 | case .Evaporate: 27 | return "Evaporate" 28 | case .Fall: 29 | return "Fall" 30 | case .Pixelate: 31 | return "Pixelate" 32 | case .Sparkle: 33 | return "Sparkle" 34 | case .Burn: 35 | return "Burn" 36 | case .Anvil: 37 | return "Anvil" 38 | default: 39 | return "Scale" 40 | } 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /Pods/LTMorphingLabel/LTMorphingLabel/LTMorphingLabel+Evaporate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LTMorphingLabel+Evaporate.swift 3 | // https://github.com/lexrus/LTMorphingLabel 4 | // 5 | // The MIT License (MIT) 6 | // Copyright (c) 2015 Lex Tang, http://LexTang.com 7 | // 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the “Software”), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | // 26 | 27 | import UIKit 28 | 29 | 30 | extension LTMorphingLabel { 31 | 32 | func EvaporateLoad() { 33 | 34 | progressClosures["Evaporate\(LTMorphingPhaseManipulateProgress)"] = { 35 | (index: Int, progress: Float, isNewChar: Bool) in 36 | let j: Int = Int(round(cos(Double(index)) * 1.2)) 37 | let delay = isNewChar ? self.morphingCharacterDelay * -1.0 : self.morphingCharacterDelay 38 | return min(1.0, max(0.0, self.morphingProgress + delay * Float(j))) 39 | } 40 | 41 | effectClosures["Evaporate\(LTMorphingPhaseDisappear)"] = { 42 | (char:Character, index: Int, progress: Float) in 43 | 44 | let newProgress = LTEasing.easeOutQuint(progress, 0.0, 1.0, 1.0) 45 | let yOffset: CGFloat = -0.8 * CGFloat(self.font.pointSize) * CGFloat(newProgress) 46 | let currentRect = CGRectOffset(self.previousRects[index], 0, yOffset) 47 | let currentAlpha = CGFloat(1.0 - newProgress) 48 | 49 | return LTCharacterLimbo( 50 | char: char, 51 | rect: currentRect, 52 | alpha: currentAlpha, 53 | size: self.font.pointSize, 54 | drawingProgress: 0.0) 55 | } 56 | 57 | effectClosures["Evaporate\(LTMorphingPhaseAppear)"] = { 58 | (char:Character, index: Int, progress: Float) in 59 | 60 | let newProgress = 1.0 - LTEasing.easeOutQuint(progress, 0.0, 1.0) 61 | let yOffset = CGFloat(self.font.pointSize) * CGFloat(newProgress) * 1.2 62 | 63 | return LTCharacterLimbo( 64 | char: char, 65 | rect: CGRectOffset(self.newRects[index], 0.0, yOffset), 66 | alpha: CGFloat(self.morphingProgress), 67 | size: self.font.pointSize, 68 | drawingProgress: 0.0 69 | ) 70 | } 71 | } 72 | 73 | } 74 | -------------------------------------------------------------------------------- /Pods/LTMorphingLabel/LTMorphingLabel/LTMorphingLabel.h: -------------------------------------------------------------------------------- 1 | // 2 | // LTMorphingLabel.h 3 | // LTMorphingLabel 4 | // 5 | // Created by Lex Tang on 1/8/15. 6 | // Copyright (c) 2015 LexTang.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for LTMorphingLabel. 12 | FOUNDATION_EXPORT double LTMorphingLabelVersionNumber; 13 | 14 | //! Project version string for LTMorphingLabel. 15 | FOUNDATION_EXPORT const unsigned char LTMorphingLabelVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /Pods/LTMorphingLabel/LTMorphingLabel/Particles/Fire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/LTMorphingLabel/LTMorphingLabel/Particles/Fire.png -------------------------------------------------------------------------------- /Pods/LTMorphingLabel/LTMorphingLabel/Particles/Fragment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/LTMorphingLabel/LTMorphingLabel/Particles/Fragment.png -------------------------------------------------------------------------------- /Pods/LTMorphingLabel/LTMorphingLabel/Particles/Smoke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/LTMorphingLabel/LTMorphingLabel/Particles/Smoke.png -------------------------------------------------------------------------------- /Pods/LTMorphingLabel/LTMorphingLabel/Particles/Sparkle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/LTMorphingLabel/LTMorphingLabel/Particles/Sparkle.png -------------------------------------------------------------------------------- /Pods/Local Podspecs/Async.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Async", 3 | "version": "1.2.0", 4 | "summary": "Syntactic sugar in Swift for asynchronous dispatches in Grand Central Dispatch", 5 | "homepage": "https://github.com/duemunk/Async", 6 | "license": { 7 | "type": "MIT" 8 | }, 9 | "authors": { 10 | "Tobias Due Munk": "tobias@developmunk.dk" 11 | }, 12 | "platforms": { 13 | "osx": "10.10", 14 | "ios": "8.0" 15 | }, 16 | "source": { 17 | "git": "https://github.com/duemunk/Async.git", 18 | "tag": "1.2.0" 19 | }, 20 | "source_files": "Async.{h,swift}", 21 | "requires_arc": true 22 | } 23 | -------------------------------------------------------------------------------- /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/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/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 "MJRefreshGifHeader.h" 6 | #import "MJRefreshLegendHeader.h" 7 | #import "MJRefreshGifFooter.h" 8 | #import "MJRefreshLegendFooter.h" 9 | #import "MJRefreshConst.h" -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshComponent.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 | // MJRefreshComponent.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 itcast. All rights reserved. 8 | // 刷新组件:基本的开始刷新和结束刷新行为 9 | 10 | #import 11 | 12 | @interface MJRefreshComponent : UIView 13 | { 14 | UIEdgeInsets _scrollViewOriginalInset; 15 | __weak UIScrollView *_scrollView; 16 | } 17 | 18 | #pragma mark - 文字处理 19 | /** 文字颜色 */ 20 | @property (strong, nonatomic) UIColor *textColor; 21 | /** 字体大小 */ 22 | @property (strong, nonatomic) UIFont *font; 23 | 24 | #pragma mark - 刷新处理 25 | /** 正在刷新的回调 */ 26 | @property (copy, nonatomic) void (^refreshingBlock)(); 27 | /** 设置回调对象和回调方法 */ 28 | - (void)setRefreshingTarget:(id)target refreshingAction:(SEL)action; 29 | @property (weak, nonatomic) id refreshingTarget; 30 | @property (assign, nonatomic) SEL refreshingAction; 31 | /** 进入刷新状态 */ 32 | - (void)beginRefreshing; 33 | /** 结束刷新状态 */ 34 | - (void)endRefreshing; 35 | /** 是否正在刷新 */ 36 | - (BOOL)isRefreshing; 37 | @end 38 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshComponent.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 | // MJRefreshComponent.m 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 itcast. All rights reserved. 8 | // 9 | 10 | #import "MJRefreshComponent.h" 11 | #import "MJRefreshConst.h" 12 | #import "UIView+MJExtension.h" 13 | 14 | @interface MJRefreshComponent() 15 | /** 记录scrollView刚开始的inset */ 16 | @property (assign, nonatomic) UIEdgeInsets scrollViewOriginalInset; 17 | /** 父控件 */ 18 | @property (weak, nonatomic) UIScrollView *scrollView; 19 | @end 20 | 21 | @implementation MJRefreshComponent 22 | #pragma mark - 初始化 23 | - (instancetype)initWithFrame:(CGRect)frame 24 | { 25 | if (self = [super initWithFrame:frame]) { 26 | // 基本属性 27 | self.autoresizingMask = UIViewAutoresizingFlexibleWidth; 28 | self.backgroundColor = [UIColor clearColor]; 29 | 30 | // 默认文字颜色和字体大小 31 | self.textColor = MJRefreshLabelTextColor; 32 | self.font = MJRefreshLabelFont; 33 | } 34 | return self; 35 | } 36 | 37 | - (void)willMoveToSuperview:(UIView *)newSuperview 38 | { 39 | [super willMoveToSuperview:newSuperview]; 40 | 41 | // 旧的父控件 42 | [self.superview removeObserver:self forKeyPath:MJRefreshContentOffset context:nil]; 43 | 44 | if (newSuperview) { // 新的父控件 45 | [newSuperview addObserver:self forKeyPath:MJRefreshContentOffset options:NSKeyValueObservingOptionNew context:nil]; 46 | 47 | // 设置宽度 48 | self.mj_w = newSuperview.mj_w; 49 | // 设置位置 50 | self.mj_x = 0; 51 | 52 | // 记录UIScrollView 53 | self.scrollView = (UIScrollView *)newSuperview; 54 | // 设置永远支持垂直弹簧效果 55 | self.scrollView.alwaysBounceVertical = YES; 56 | // 记录UIScrollView最开始的contentInset 57 | self.scrollViewOriginalInset = self.scrollView.contentInset; 58 | } 59 | } 60 | 61 | #pragma mark - 公共方法 62 | - (void)setRefreshingTarget:(id)target refreshingAction:(SEL)action 63 | { 64 | self.refreshingTarget = target; 65 | self.refreshingAction = action; 66 | } 67 | 68 | - (void)beginRefreshing 69 | { 70 | 71 | } 72 | 73 | - (void)endRefreshing 74 | { 75 | 76 | } 77 | 78 | - (BOOL)isRefreshing { 79 | return NO; 80 | } 81 | @end 82 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshConst.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 | #import 4 | 5 | // 日志输出 6 | #ifdef DEBUG 7 | #define MJLog(...) NSLog(__VA_ARGS__) 8 | #else 9 | #define MJLog(...) 10 | #endif 11 | 12 | // 过期提醒 13 | #define MJDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead) 14 | 15 | // 运行时objc_msgSend 16 | #define msgSend(...) ((void (*)(void *, SEL, UIView *))objc_msgSend)(__VA_ARGS__) 17 | #define msgTarget(target) (__bridge void *)(target) 18 | 19 | // RGB颜色 20 | #define MJColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0] 21 | 22 | // 文字颜色 23 | #define MJRefreshLabelTextColor MJColor(100, 100, 100) 24 | 25 | // 字体大小 26 | #define MJRefreshLabelFont [UIFont boldSystemFontOfSize:13] 27 | 28 | // 图片路径 29 | #define MJRefreshSrcName(file) [@"MJRefresh.bundle" stringByAppendingPathComponent:file] 30 | 31 | // 常量 32 | UIKIT_EXTERN const CGFloat MJRefreshHeaderHeight; 33 | UIKIT_EXTERN const CGFloat MJRefreshFooterHeight; 34 | UIKIT_EXTERN const CGFloat MJRefreshFastAnimationDuration; 35 | UIKIT_EXTERN const CGFloat MJRefreshSlowAnimationDuration; 36 | 37 | UIKIT_EXTERN NSString *const MJRefreshHeaderUpdatedTimeKey; 38 | UIKIT_EXTERN NSString *const MJRefreshContentOffset; 39 | UIKIT_EXTERN NSString *const MJRefreshContentSize; 40 | UIKIT_EXTERN NSString *const MJRefreshPanState; 41 | 42 | UIKIT_EXTERN NSString *const MJRefreshHeaderStateIdleText; 43 | UIKIT_EXTERN NSString *const MJRefreshHeaderStatePullingText; 44 | UIKIT_EXTERN NSString *const MJRefreshHeaderStateRefreshingText; 45 | 46 | UIKIT_EXTERN NSString *const MJRefreshFooterStateIdleText; 47 | UIKIT_EXTERN NSString *const MJRefreshFooterStateRefreshingText; 48 | UIKIT_EXTERN NSString *const MJRefreshFooterStateNoMoreDataText; -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/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 MJRefreshHeaderHeight = 54.0; 6 | const CGFloat MJRefreshFooterHeight = 44.0; 7 | const CGFloat MJRefreshFastAnimationDuration = 0.25; 8 | const CGFloat MJRefreshSlowAnimationDuration = 0.4; 9 | 10 | NSString *const MJRefreshHeaderUpdatedTimeKey = @"MJRefreshHeaderUpdatedTimeKey"; 11 | NSString *const MJRefreshContentOffset = @"contentOffset"; 12 | NSString *const MJRefreshContentSize = @"contentSize"; 13 | NSString *const MJRefreshPanState = @"pan.state"; 14 | 15 | NSString *const MJRefreshHeaderStateIdleText = @"下拉可以刷新"; 16 | NSString *const MJRefreshHeaderStatePullingText = @"松开立即刷新"; 17 | NSString *const MJRefreshHeaderStateRefreshingText = @"正在刷新数据中..."; 18 | 19 | NSString *const MJRefreshFooterStateIdleText = @"点击加载更多"; 20 | NSString *const MJRefreshFooterStateRefreshingText = @"正在加载更多的数据..."; 21 | NSString *const MJRefreshFooterStateNoMoreDataText = @"已经全部加载完毕"; -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/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年 itcast. All rights reserved. 8 | // 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | typedef enum { 13 | MJRefreshFooterStateIdle = 1, // 普通闲置状态 14 | MJRefreshFooterStateRefreshing, // 正在刷新中的状态 15 | MJRefreshFooterStateNoMoreData // 所有数据加载完毕,没有更多的数据了 16 | } MJRefreshFooterState; 17 | 18 | @interface MJRefreshFooter : MJRefreshComponent 19 | /** 提示没有更多的数据 */ 20 | - (void)noticeNoMoreData; 21 | /** 重置没有更多的数据(消除没有更多数据的状态) */ 22 | - (void)resetNoMoreData; 23 | 24 | /** 刷新控件的状态(交给子类重写) */ 25 | @property (assign, nonatomic) MJRefreshFooterState state; 26 | 27 | /** 是否隐藏状态标签 */ 28 | @property (assign, nonatomic, getter=isStateHidden) BOOL stateHidden; 29 | 30 | /** 31 | * 设置state状态下的状态文字内容title 32 | */ 33 | - (void)setTitle:(NSString *)title forState:(MJRefreshFooterState)state; 34 | 35 | /** 是否自动刷新(默认为YES) */ 36 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh; 37 | 38 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 39 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh; 40 | @end 41 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshGifFooter.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 | // MJRefreshGifFooter.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 itcast. All rights reserved. 8 | // 9 | 10 | #import "MJRefreshFooter.h" 11 | 12 | @interface MJRefreshGifFooter : MJRefreshFooter 13 | /** 正在刷新时的动画图片 */ 14 | @property (strong, nonatomic) NSArray *refreshingImages; 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshGifFooter.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 | // MJRefreshGifFooter.m 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 itcast. All rights reserved. 8 | // 9 | 10 | #import "MJRefreshGifFooter.h" 11 | #import "MJRefreshConst.h" 12 | #import "UIView+MJExtension.h" 13 | #import "UIScrollView+MJExtension.h" 14 | 15 | @interface MJRefreshGifFooter() 16 | /** 播放动画图片的控件 */ 17 | @property (weak, nonatomic) UIImageView *gifView; 18 | @end 19 | 20 | @implementation MJRefreshGifFooter 21 | #pragma mark - 懒加载 22 | - (UIImageView *)gifView 23 | { 24 | if (!_gifView) { 25 | UIImageView *gifView = [[UIImageView alloc] init]; 26 | [self addSubview:_gifView = gifView]; 27 | } 28 | return _gifView; 29 | } 30 | 31 | #pragma mark - 初始化方法 32 | - (void)layoutSubviews 33 | { 34 | [super layoutSubviews]; 35 | 36 | // 指示器 37 | self.gifView.frame = self.bounds; 38 | if (self.stateHidden) { 39 | self.gifView.contentMode = UIViewContentModeCenter; 40 | } else { 41 | self.gifView.contentMode = UIViewContentModeRight; 42 | self.gifView.mj_w = self.mj_w * 0.5 - 90; 43 | } 44 | } 45 | 46 | #pragma mark - 公共方法 47 | - (void)setState:(MJRefreshFooterState)state 48 | { 49 | if (self.state == state) return; 50 | 51 | switch (state) { 52 | case MJRefreshFooterStateIdle: 53 | self.gifView.hidden = YES; 54 | [self.gifView stopAnimating]; 55 | break; 56 | 57 | case MJRefreshFooterStateRefreshing: 58 | self.gifView.hidden = NO; 59 | [self.gifView startAnimating]; 60 | break; 61 | 62 | case MJRefreshFooterStateNoMoreData: 63 | self.gifView.hidden = YES; 64 | [self.gifView stopAnimating]; 65 | break; 66 | 67 | default: 68 | break; 69 | } 70 | 71 | // super里面有回调,应该在最后面调用 72 | [super setState:state]; 73 | } 74 | 75 | - (void)setRefreshingImages:(NSArray *)refreshingImages 76 | { 77 | _refreshingImages = refreshingImages; 78 | 79 | self.gifView.animationImages = refreshingImages; 80 | self.gifView.animationDuration = refreshingImages.count * 0.1; 81 | 82 | // 根据图片设置控件的高度 83 | UIImage *image = [refreshingImages firstObject]; 84 | if (image.size.height > self.mj_h) { 85 | _scrollView.mj_insetB -= self.mj_h; 86 | self.mj_h = image.size.height; 87 | _scrollView.mj_insetB += self.mj_h; 88 | } 89 | } 90 | @end 91 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshGifHeader.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 | // MJRefreshGifHeader.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 itcast. All rights reserved. 8 | // 带有gif图片功能的下拉刷新控件 9 | 10 | #import "MJRefreshHeader.h" 11 | 12 | @interface MJRefreshGifHeader : MJRefreshHeader 13 | /** 设置state状态下的动画图片images */ 14 | - (void)setImages:(NSArray *)images forState:(MJRefreshHeaderState)state; 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/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年 itcast. All rights reserved. 8 | // 下拉刷新控件:负责监控用户下拉的状态 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | // 下拉刷新控件的状态 13 | typedef enum { 14 | /** 普通闲置状态 */ 15 | MJRefreshHeaderStateIdle = 1, 16 | /** 松开就可以进行刷新的状态 */ 17 | MJRefreshHeaderStatePulling, 18 | /** 正在刷新中的状态 */ 19 | MJRefreshHeaderStateRefreshing, 20 | /** 即将刷新的状态 */ 21 | MJRefreshHeaderStateWillRefresh 22 | } MJRefreshHeaderState; 23 | 24 | @interface MJRefreshHeader : MJRefreshComponent 25 | /** 利用这个key来保存上次的刷新时间(不同界面的刷新控件应该用不同的dateKey,以区分不同界面的刷新时间) */ 26 | @property (copy, nonatomic) NSString *dateKey; 27 | 28 | /** 利用这个block来决定显示的更新时间 */ 29 | @property (copy, nonatomic) NSString *(^updatedTimeTitle)(NSDate *updatedTime); 30 | 31 | /** 32 | * 设置state状态下的状态文字内容title(别直接拿stateLabel修改文字) 33 | */ 34 | - (void)setTitle:(NSString *)title forState:(MJRefreshHeaderState)state; 35 | /** 刷新控件的状态 */ 36 | @property (assign, nonatomic) MJRefreshHeaderState state; 37 | 38 | #pragma mark - 文字控件的可见性处理 39 | /** 是否隐藏状态标签 */ 40 | @property (assign, nonatomic, getter=isStateHidden) BOOL stateHidden; 41 | /** 是否隐藏刷新时间标签 */ 42 | @property (assign, nonatomic, getter=isUpdatedTimeHidden) BOOL updatedTimeHidden; 43 | 44 | #pragma mark - 交给子类重写 45 | /** 下拉的百分比(交给子类重写) */ 46 | @property (assign, nonatomic) CGFloat pullingPercent; 47 | @end 48 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshLegendFooter.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 | // MJRefreshLegendFooter.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 itcast. All rights reserved. 8 | // 9 | 10 | #import "MJRefreshFooter.h" 11 | 12 | @interface MJRefreshLegendFooter : MJRefreshFooter 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshLegendFooter.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 | // MJRefreshLegendFooter.m 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 itcast. All rights reserved. 8 | // 9 | 10 | #import "MJRefreshLegendFooter.h" 11 | #import "MJRefreshConst.h" 12 | #import "UIView+MJExtension.h" 13 | #import "UIScrollView+MJExtension.h" 14 | 15 | @interface MJRefreshLegendFooter() 16 | @property (nonatomic, weak) UIActivityIndicatorView *activityView; 17 | @end 18 | 19 | @implementation MJRefreshLegendFooter 20 | #pragma mark - 懒加载 21 | - (UIActivityIndicatorView *)activityView 22 | { 23 | if (!_activityView) { 24 | UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 25 | [self addSubview:_activityView = activityView]; 26 | } 27 | return _activityView; 28 | } 29 | 30 | #pragma mark - 初始化方法 31 | - (void)layoutSubviews 32 | { 33 | [super layoutSubviews]; 34 | 35 | // 指示器 36 | if (self.stateHidden) { 37 | self.activityView.center = CGPointMake(self.mj_w * 0.5, self.mj_h * 0.5); 38 | } else { 39 | self.activityView.center = CGPointMake(self.mj_w * 0.5 - 100, self.mj_h * 0.5); 40 | } 41 | } 42 | 43 | #pragma mark - 公共方法 44 | - (void)setState:(MJRefreshFooterState)state 45 | { 46 | if (self.state == state) return; 47 | 48 | switch (state) { 49 | case MJRefreshFooterStateIdle: 50 | [self.activityView stopAnimating]; 51 | break; 52 | 53 | case MJRefreshFooterStateRefreshing: 54 | [self.activityView startAnimating]; 55 | break; 56 | 57 | case MJRefreshFooterStateNoMoreData: 58 | [self.activityView stopAnimating]; 59 | break; 60 | 61 | default: 62 | break; 63 | } 64 | 65 | // super里面有回调,应该在最后面调用 66 | [super setState:state]; 67 | } 68 | @end 69 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/MJRefreshLegendHeader.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 | // MJRefreshLegendHeader.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 itcast. All rights reserved. 8 | // 传统的下拉刷新控件:箭头 + 圈圈 9 | 10 | #import "MJRefreshHeader.h" 11 | 12 | @interface MJRefreshLegendHeader : MJRefreshHeader 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/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年 itcast. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIScrollView (MJExtension) 13 | @property (assign, nonatomic) CGFloat mj_insetT; 14 | @property (assign, nonatomic) CGFloat mj_insetB; 15 | @property (assign, nonatomic) CGFloat mj_insetL; 16 | @property (assign, nonatomic) CGFloat mj_insetR; 17 | 18 | @property (assign, nonatomic) CGFloat mj_offsetX; 19 | @property (assign, nonatomic) CGFloat mj_offsetY; 20 | 21 | @property (assign, nonatomic) CGFloat mj_contentSizeW; 22 | @property (assign, nonatomic) CGFloat mj_contentSizeH; 23 | @end 24 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/MJRefresh/UIScrollView+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 | // UIScrollView+Extension.m 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 itcast. All rights reserved. 8 | // 9 | 10 | #import "UIScrollView+MJExtension.h" 11 | 12 | @implementation UIScrollView (MJExtension) 13 | - (void)setMj_insetT:(CGFloat)mj_insetT 14 | { 15 | UIEdgeInsets inset = self.contentInset; 16 | inset.top = mj_insetT; 17 | self.contentInset = inset; 18 | } 19 | 20 | - (CGFloat)mj_insetT 21 | { 22 | return self.contentInset.top; 23 | } 24 | 25 | - (void)setMj_insetB:(CGFloat)mj_insetB 26 | { 27 | UIEdgeInsets inset = self.contentInset; 28 | inset.bottom = mj_insetB; 29 | self.contentInset = inset; 30 | } 31 | 32 | - (CGFloat)mj_insetB 33 | { 34 | return self.contentInset.bottom; 35 | } 36 | 37 | - (void)setMj_insetL:(CGFloat)mj_insetL 38 | { 39 | UIEdgeInsets inset = self.contentInset; 40 | inset.left = mj_insetL; 41 | self.contentInset = inset; 42 | } 43 | 44 | - (CGFloat)mj_insetL 45 | { 46 | return self.contentInset.left; 47 | } 48 | 49 | - (void)setMj_insetR:(CGFloat)mj_insetR 50 | { 51 | UIEdgeInsets inset = self.contentInset; 52 | inset.right = mj_insetR; 53 | self.contentInset = inset; 54 | } 55 | 56 | - (CGFloat)mj_insetR 57 | { 58 | return self.contentInset.right; 59 | } 60 | 61 | - (void)setMj_offsetX:(CGFloat)mj_offsetX 62 | { 63 | CGPoint offset = self.contentOffset; 64 | offset.x = mj_offsetX; 65 | self.contentOffset = offset; 66 | } 67 | 68 | - (CGFloat)mj_offsetX 69 | { 70 | return self.contentOffset.x; 71 | } 72 | 73 | - (void)setMj_offsetY:(CGFloat)mj_offsetY 74 | { 75 | CGPoint offset = self.contentOffset; 76 | offset.y = mj_offsetY; 77 | self.contentOffset = offset; 78 | } 79 | 80 | - (CGFloat)mj_offsetY 81 | { 82 | return self.contentOffset.y; 83 | } 84 | 85 | - (void)setMj_contentSizeW:(CGFloat)mj_contentSizeW 86 | { 87 | CGSize size = self.contentSize; 88 | size.width = mj_contentSizeW; 89 | self.contentSize = size; 90 | } 91 | 92 | - (CGFloat)mj_contentSizeW 93 | { 94 | return self.contentSize.width; 95 | } 96 | 97 | - (void)setMj_contentSizeH:(CGFloat)mj_contentSizeH 98 | { 99 | CGSize size = self.contentSize; 100 | size.height = mj_contentSizeH; 101 | self.contentSize = size; 102 | } 103 | 104 | - (CGFloat)mj_contentSizeH 105 | { 106 | return self.contentSize.height; 107 | } 108 | @end 109 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefreshExample/MJRefreshExample/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年 itcast. 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/MJRefreshExample/MJRefreshExample/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年 itcast. 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 | - Alamofire (1.2.1) 3 | - Async (1.2.0) 4 | - Kingfisher (1.2.0) 5 | - LTMorphingLabel (0.0.7) 6 | - MJRefresh (1.4.5) 7 | - SwiftyJSON (2.2.0) 8 | 9 | DEPENDENCIES: 10 | - Alamofire (~> 1.2) 11 | - Async (from `https://github.com/duemunk/Async.git`) 12 | - Kingfisher (~> 1.2) 13 | - LTMorphingLabel (~> 0.0.6) 14 | - MJRefresh 15 | - SwiftyJSON (>= 2.2) 16 | 17 | EXTERNAL SOURCES: 18 | Async: 19 | :git: https://github.com/duemunk/Async.git 20 | 21 | CHECKOUT OPTIONS: 22 | Async: 23 | :commit: ceb4051b248787cc860dd0e7169b1386e29345cf 24 | :git: https://github.com/duemunk/Async.git 25 | 26 | SPEC CHECKSUMS: 27 | Alamofire: 1acfdf179aff68b41a48dff70c1ac7fa263e2bcb 28 | Async: aba7b48a4cd05dae27d1affce2f48f2ed61e75f9 29 | Kingfisher: 17f76083d055d1f15f36cfe2cf8b7b39a3893e05 30 | LTMorphingLabel: aef64d2adb1c659869a8fe22cf2dc7bbad2e28e5 31 | MJRefresh: 4b24394e577ea399fbc926e5b6072317aae2c152 32 | SwiftyJSON: 0b3e6c07af17ff745e77e8e9984097b55c956e5c 33 | 34 | COCOAPODS: 0.37.0.rc.1 35 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/Pods-BaiduFM WatchKit Extension-Alamofire.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/Pods-BaiduFM WatchKit Extension-Async.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/Pods-BaiduFM WatchKit Extension-SwiftyJSON.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/Pods-BaiduFM WatchKit Extension.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/Pods-BaiduFM-Alamofire.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/Pods-BaiduFM-Async.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/Pods-BaiduFM-Kingfisher.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/Pods-BaiduFM-LTMorphingLabel.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/Pods-BaiduFM-MJRefresh.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/Pods-BaiduFM-SwiftyJSON.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/Pods-BaiduFM.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/lumeng.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Pods-BaiduFM WatchKit Extension-Alamofire.xcscheme 8 | 9 | isShown 10 | 11 | 12 | Pods-BaiduFM WatchKit Extension-Async.xcscheme 13 | 14 | isShown 15 | 16 | 17 | Pods-BaiduFM WatchKit Extension-SwiftyJSON.xcscheme 18 | 19 | isShown 20 | 21 | 22 | Pods-BaiduFM WatchKit Extension.xcscheme 23 | 24 | isShown 25 | 26 | 27 | Pods-BaiduFM-Alamofire.xcscheme 28 | 29 | isShown 30 | 31 | 32 | Pods-BaiduFM-Async.xcscheme 33 | 34 | isShown 35 | 36 | 37 | Pods-BaiduFM-Kingfisher.xcscheme 38 | 39 | isShown 40 | 41 | 42 | Pods-BaiduFM-LTMorphingLabel.xcscheme 43 | 44 | isShown 45 | 46 | 47 | Pods-BaiduFM-MJRefresh.xcscheme 48 | 49 | isShown 50 | 51 | 52 | Pods-BaiduFM-SwiftyJSON.xcscheme 53 | 54 | isShown 55 | 56 | 57 | Pods-BaiduFM.xcscheme 58 | 59 | isShown 60 | 61 | 62 | 63 | SuppressBuildableAutocreation 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /Pods/SwiftyJSON/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Ruoyu Fu 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 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Alamofire/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.2.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Alamofire/Pods-BaiduFM WatchKit Extension-Alamofire-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-BaiduFM WatchKit Extension-Alamofire.xcconfig" 2 | CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH 3 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Alamofire" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Alamofire" "${PODS_ROOT}/Headers/Public/Async" "${PODS_ROOT}/Headers/Public/Kingfisher" "${PODS_ROOT}/Headers/Public/LTMorphingLabel" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SwiftyJSON" 6 | OTHER_LDFLAGS = -ObjC 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM WatchKit Extension 9 | PODS_ROOT = ${SRCROOT} 10 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Alamofire/Pods-BaiduFM WatchKit Extension-Alamofire-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_BaiduFM_WatchKit_Extension_Alamofire : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_BaiduFM_WatchKit_Extension_Alamofire 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Alamofire/Pods-BaiduFM WatchKit Extension-Alamofire-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-BaiduFM WatchKit Extension-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Alamofire/Pods-BaiduFM WatchKit Extension-Alamofire-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double AlamofireVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Alamofire/Pods-BaiduFM WatchKit Extension-Alamofire.modulemap: -------------------------------------------------------------------------------- 1 | framework module Alamofire { 2 | umbrella header "Pods-BaiduFM WatchKit Extension-Alamofire-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Alamofire/Pods-BaiduFM WatchKit Extension-Alamofire.xcconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Alamofire/Pods-BaiduFM WatchKit Extension-Alamofire.xcconfig -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Async/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.2.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Async/Pods-BaiduFM WatchKit Extension-Async-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-BaiduFM WatchKit Extension-Async.xcconfig" 2 | CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH 3 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Async" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Alamofire" "${PODS_ROOT}/Headers/Public/Async" "${PODS_ROOT}/Headers/Public/Kingfisher" "${PODS_ROOT}/Headers/Public/LTMorphingLabel" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SwiftyJSON" 6 | OTHER_LDFLAGS = -ObjC 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM WatchKit Extension 9 | PODS_ROOT = ${SRCROOT} 10 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Async/Pods-BaiduFM WatchKit Extension-Async-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_BaiduFM_WatchKit_Extension_Async : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_BaiduFM_WatchKit_Extension_Async 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Async/Pods-BaiduFM WatchKit Extension-Async-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-BaiduFM WatchKit Extension-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Async/Pods-BaiduFM WatchKit Extension-Async-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double AsyncVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char AsyncVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Async/Pods-BaiduFM WatchKit Extension-Async.modulemap: -------------------------------------------------------------------------------- 1 | framework module Async { 2 | umbrella header "Pods-BaiduFM WatchKit Extension-Async-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Async/Pods-BaiduFM WatchKit Extension-Async.xcconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-Async/Pods-BaiduFM WatchKit Extension-Async.xcconfig -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-SwiftyJSON/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.2.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-SwiftyJSON/Pods-BaiduFM WatchKit Extension-SwiftyJSON-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-BaiduFM WatchKit Extension-SwiftyJSON.xcconfig" 2 | CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH 3 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SwiftyJSON" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Alamofire" "${PODS_ROOT}/Headers/Public/Async" "${PODS_ROOT}/Headers/Public/Kingfisher" "${PODS_ROOT}/Headers/Public/LTMorphingLabel" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SwiftyJSON" 6 | OTHER_LDFLAGS = -ObjC 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM WatchKit Extension 9 | PODS_ROOT = ${SRCROOT} 10 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-SwiftyJSON/Pods-BaiduFM WatchKit Extension-SwiftyJSON-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_BaiduFM_WatchKit_Extension_SwiftyJSON : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_BaiduFM_WatchKit_Extension_SwiftyJSON 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-SwiftyJSON/Pods-BaiduFM WatchKit Extension-SwiftyJSON-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-BaiduFM WatchKit Extension-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-SwiftyJSON/Pods-BaiduFM WatchKit Extension-SwiftyJSON-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double SwiftyJSONVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char SwiftyJSONVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-SwiftyJSON/Pods-BaiduFM WatchKit Extension-SwiftyJSON.modulemap: -------------------------------------------------------------------------------- 1 | framework module SwiftyJSON { 2 | umbrella header "Pods-BaiduFM WatchKit Extension-SwiftyJSON-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-SwiftyJSON/Pods-BaiduFM WatchKit Extension-SwiftyJSON.xcconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/Target Support Files/Pods-BaiduFM WatchKit Extension-SwiftyJSON/Pods-BaiduFM WatchKit Extension-SwiftyJSON.xcconfig -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 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-BaiduFM WatchKit Extension/Pods-BaiduFM WatchKit Extension-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## Alamofire 5 | 6 | Copyright (c) 2014 Alamofire (http://alamofire.org/) 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | 27 | ## Async 28 | 29 | The MIT License (MIT) 30 | 31 | Copyright (c) 2014 Tobias Due Munk 32 | 33 | Permission is hereby granted, free of charge, to any person obtaining a copy of 34 | this software and associated documentation files (the "Software"), to deal in 35 | the Software without restriction, including without limitation the rights to 36 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 37 | the Software, and to permit persons to whom the Software is furnished to do so, 38 | subject to the following conditions: 39 | 40 | The above copyright notice and this permission notice shall be included in all 41 | copies or substantial portions of the Software. 42 | 43 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 44 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 45 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 46 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 47 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 48 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 49 | 50 | 51 | ## SwiftyJSON 52 | 53 | The MIT License (MIT) 54 | 55 | Copyright (c) 2014 Ruoyu Fu 56 | 57 | Permission is hereby granted, free of charge, to any person obtaining a copy 58 | of this software and associated documentation files (the "Software"), to deal 59 | in the Software without restriction, including without limitation the rights 60 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 61 | copies of the Software, and to permit persons to whom the Software is 62 | furnished to do so, subject to the following conditions: 63 | 64 | The above copyright notice and this permission notice shall be included in 65 | all copies or substantial portions of the Software. 66 | 67 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 68 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 69 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 70 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 71 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 72 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 73 | THE SOFTWARE. 74 | 75 | Generated by CocoaPods - http://cocoapods.org 76 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension/Pods-BaiduFM WatchKit Extension-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_BaiduFM_WatchKit_Extension : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_BaiduFM_WatchKit_Extension 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension/Pods-BaiduFM WatchKit Extension-environment.h: -------------------------------------------------------------------------------- 1 | 2 | // To check if a library is compiled with CocoaPods you 3 | // can use the `COCOAPODS` macro definition which is 4 | // defined in the xcconfigs so it is available in 5 | // headers also when they are imported in the client 6 | // project. 7 | 8 | 9 | // Alamofire 10 | #define COCOAPODS_POD_AVAILABLE_Alamofire 11 | #define COCOAPODS_VERSION_MAJOR_Alamofire 1 12 | #define COCOAPODS_VERSION_MINOR_Alamofire 2 13 | #define COCOAPODS_VERSION_PATCH_Alamofire 1 14 | 15 | // Async 16 | #define COCOAPODS_POD_AVAILABLE_Async 17 | #define COCOAPODS_VERSION_MAJOR_Async 1 18 | #define COCOAPODS_VERSION_MINOR_Async 2 19 | #define COCOAPODS_VERSION_PATCH_Async 0 20 | 21 | // SwiftyJSON 22 | #define COCOAPODS_POD_AVAILABLE_SwiftyJSON 23 | #define COCOAPODS_VERSION_MAJOR_SwiftyJSON 2 24 | #define COCOAPODS_VERSION_MINOR_SwiftyJSON 2 25 | #define COCOAPODS_VERSION_PATCH_SwiftyJSON 0 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension/Pods-BaiduFM WatchKit Extension-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | local source="${BUILT_PRODUCTS_DIR}/Pods-BaiduFM WatchKit Extension/$1" 12 | local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 13 | 14 | if [ -L "${source}" ]; then 15 | echo "Symlinked..." 16 | source=$(readlink "${source}") 17 | fi 18 | 19 | # use filter instead of exclude so missing patterns dont' throw errors 20 | echo "rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" ${source} ${destination}" 21 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" "${source}" "${destination}" 22 | # Resign the code if required by the build settings to avoid unstable apps 23 | if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then 24 | code_sign "${destination}/$1" 25 | fi 26 | 27 | # Embed linked Swift runtime libraries 28 | local basename 29 | basename=$(echo $1 | sed -E s/\\..+// && exit ${PIPESTATUS[0]}) 30 | local swift_runtime_libs 31 | swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/$1/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 32 | for lib in $swift_runtime_libs; do 33 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 34 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 35 | if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then 36 | code_sign "${destination}/${lib}" 37 | fi 38 | done 39 | } 40 | 41 | # Signs a framework with the provided identity 42 | code_sign() { 43 | # Use the current code_sign_identitiy 44 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 45 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1" 46 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" 47 | } 48 | 49 | 50 | if [[ "$CONFIGURATION" == "Debug" ]]; then 51 | install_framework 'Alamofire.framework' 52 | install_framework 'Async.framework' 53 | install_framework 'SwiftyJSON.framework' 54 | fi 55 | if [[ "$CONFIGURATION" == "Release" ]]; then 56 | install_framework 'Alamofire.framework' 57 | install_framework 'Async.framework' 58 | install_framework 'SwiftyJSON.framework' 59 | fi 60 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension/Pods-BaiduFM WatchKit Extension-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_BaiduFM_WatchKit_ExtensionVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_BaiduFM_WatchKit_ExtensionVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension/Pods-BaiduFM WatchKit Extension.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" 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_FRAMEWORK_BUILD_PATH/Alamofire.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Async.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwiftyJSON.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "Async" -framework "SwiftyJSON" 6 | OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM WatchKit Extension 9 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension/Pods-BaiduFM WatchKit Extension.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_BaiduFM_WatchKit_Extension { 2 | umbrella header "Pods-BaiduFM WatchKit Extension-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM WatchKit Extension/Pods-BaiduFM WatchKit Extension.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" 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_FRAMEWORK_BUILD_PATH/Alamofire.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Async.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwiftyJSON.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "Async" -framework "SwiftyJSON" 6 | OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM WatchKit Extension 9 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Alamofire/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.2.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Alamofire/Pods-BaiduFM-Alamofire-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-BaiduFM-Alamofire.xcconfig" 2 | CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH 3 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Alamofire" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Alamofire" "${PODS_ROOT}/Headers/Public/Async" "${PODS_ROOT}/Headers/Public/Kingfisher" "${PODS_ROOT}/Headers/Public/LTMorphingLabel" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SwiftyJSON" 6 | OTHER_LDFLAGS = -ObjC 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM 9 | PODS_ROOT = ${SRCROOT} 10 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Alamofire/Pods-BaiduFM-Alamofire-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_BaiduFM_Alamofire : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_BaiduFM_Alamofire 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Alamofire/Pods-BaiduFM-Alamofire-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-BaiduFM-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Alamofire/Pods-BaiduFM-Alamofire-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double AlamofireVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Alamofire/Pods-BaiduFM-Alamofire.modulemap: -------------------------------------------------------------------------------- 1 | framework module Alamofire { 2 | umbrella header "Pods-BaiduFM-Alamofire-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Alamofire/Pods-BaiduFM-Alamofire.xcconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/Target Support Files/Pods-BaiduFM-Alamofire/Pods-BaiduFM-Alamofire.xcconfig -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Async/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.2.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Async/Pods-BaiduFM-Async-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-BaiduFM-Async.xcconfig" 2 | CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH 3 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Async" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Alamofire" "${PODS_ROOT}/Headers/Public/Async" "${PODS_ROOT}/Headers/Public/Kingfisher" "${PODS_ROOT}/Headers/Public/LTMorphingLabel" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SwiftyJSON" 6 | OTHER_LDFLAGS = -ObjC 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM 9 | PODS_ROOT = ${SRCROOT} 10 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Async/Pods-BaiduFM-Async-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_BaiduFM_Async : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_BaiduFM_Async 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Async/Pods-BaiduFM-Async-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-BaiduFM-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Async/Pods-BaiduFM-Async-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double AsyncVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char AsyncVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Async/Pods-BaiduFM-Async.modulemap: -------------------------------------------------------------------------------- 1 | framework module Async { 2 | umbrella header "Pods-BaiduFM-Async-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Async/Pods-BaiduFM-Async.xcconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/Target Support Files/Pods-BaiduFM-Async/Pods-BaiduFM-Async.xcconfig -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Kingfisher/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.2.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Kingfisher/Pods-BaiduFM-Kingfisher-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-BaiduFM-Kingfisher.xcconfig" 2 | CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH 3 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Kingfisher" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Alamofire" "${PODS_ROOT}/Headers/Public/Async" "${PODS_ROOT}/Headers/Public/Kingfisher" "${PODS_ROOT}/Headers/Public/LTMorphingLabel" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SwiftyJSON" 6 | OTHER_LDFLAGS = -ObjC 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM 9 | PODS_ROOT = ${SRCROOT} 10 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Kingfisher/Pods-BaiduFM-Kingfisher-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_BaiduFM_Kingfisher : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_BaiduFM_Kingfisher 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Kingfisher/Pods-BaiduFM-Kingfisher-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-BaiduFM-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Kingfisher/Pods-BaiduFM-Kingfisher-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double KingfisherVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char KingfisherVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Kingfisher/Pods-BaiduFM-Kingfisher.modulemap: -------------------------------------------------------------------------------- 1 | framework module Kingfisher { 2 | umbrella header "Pods-BaiduFM-Kingfisher-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-Kingfisher/Pods-BaiduFM-Kingfisher.xcconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/Target Support Files/Pods-BaiduFM-Kingfisher/Pods-BaiduFM-Kingfisher.xcconfig -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-LTMorphingLabel/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.0.7 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-LTMorphingLabel/Pods-BaiduFM-LTMorphingLabel-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-BaiduFM-LTMorphingLabel.xcconfig" 2 | CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH 3 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/LTMorphingLabel" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Alamofire" "${PODS_ROOT}/Headers/Public/Async" "${PODS_ROOT}/Headers/Public/Kingfisher" "${PODS_ROOT}/Headers/Public/LTMorphingLabel" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SwiftyJSON" 6 | OTHER_LDFLAGS = ${PODS_BAIDUFM_LTMORPHINGLABEL_OTHER_LDFLAGS} -ObjC 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM 9 | PODS_ROOT = ${SRCROOT} 10 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-LTMorphingLabel/Pods-BaiduFM-LTMorphingLabel-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_BaiduFM_LTMorphingLabel : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_BaiduFM_LTMorphingLabel 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-LTMorphingLabel/Pods-BaiduFM-LTMorphingLabel-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-BaiduFM-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-LTMorphingLabel/Pods-BaiduFM-LTMorphingLabel-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "LTMorphingLabel.h" 4 | 5 | FOUNDATION_EXPORT double LTMorphingLabelVersionNumber; 6 | FOUNDATION_EXPORT const unsigned char LTMorphingLabelVersionString[]; 7 | 8 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-LTMorphingLabel/Pods-BaiduFM-LTMorphingLabel.modulemap: -------------------------------------------------------------------------------- 1 | framework module LTMorphingLabel { 2 | umbrella header "Pods-BaiduFM-LTMorphingLabel-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-LTMorphingLabel/Pods-BaiduFM-LTMorphingLabel.xcconfig: -------------------------------------------------------------------------------- 1 | PODS_BAIDUFM_LTMORPHINGLABEL_OTHER_LDFLAGS = -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-MJRefresh/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.4.5 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-MJRefresh/Pods-BaiduFM-MJRefresh-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-BaiduFM-MJRefresh.xcconfig" 2 | CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH 3 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJRefresh" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Alamofire" "${PODS_ROOT}/Headers/Public/Async" "${PODS_ROOT}/Headers/Public/Kingfisher" "${PODS_ROOT}/Headers/Public/LTMorphingLabel" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SwiftyJSON" 6 | OTHER_LDFLAGS = -ObjC 7 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM 8 | PODS_ROOT = ${SRCROOT} 9 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-MJRefresh/Pods-BaiduFM-MJRefresh-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_BaiduFM_MJRefresh : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_BaiduFM_MJRefresh 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-MJRefresh/Pods-BaiduFM-MJRefresh-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-BaiduFM-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-MJRefresh/Pods-BaiduFM-MJRefresh-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MJRefresh.h" 4 | #import "MJRefreshComponent.h" 5 | #import "MJRefreshConst.h" 6 | #import "MJRefreshFooter.h" 7 | #import "MJRefreshGifFooter.h" 8 | #import "MJRefreshGifHeader.h" 9 | #import "MJRefreshHeader.h" 10 | #import "MJRefreshLegendFooter.h" 11 | #import "MJRefreshLegendHeader.h" 12 | #import "UIScrollView+MJExtension.h" 13 | #import "UIScrollView+MJRefresh.h" 14 | #import "UIView+MJExtension.h" 15 | 16 | FOUNDATION_EXPORT double MJRefreshVersionNumber; 17 | FOUNDATION_EXPORT const unsigned char MJRefreshVersionString[]; 18 | 19 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-MJRefresh/Pods-BaiduFM-MJRefresh.modulemap: -------------------------------------------------------------------------------- 1 | framework module MJRefresh { 2 | umbrella header "Pods-BaiduFM-MJRefresh-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-MJRefresh/Pods-BaiduFM-MJRefresh.xcconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/Target Support Files/Pods-BaiduFM-MJRefresh/Pods-BaiduFM-MJRefresh.xcconfig -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-SwiftyJSON/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.2.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-SwiftyJSON/Pods-BaiduFM-SwiftyJSON-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-BaiduFM-SwiftyJSON.xcconfig" 2 | CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH 3 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SwiftyJSON" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Alamofire" "${PODS_ROOT}/Headers/Public/Async" "${PODS_ROOT}/Headers/Public/Kingfisher" "${PODS_ROOT}/Headers/Public/LTMorphingLabel" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/SwiftyJSON" 6 | OTHER_LDFLAGS = -ObjC 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM 9 | PODS_ROOT = ${SRCROOT} 10 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-SwiftyJSON/Pods-BaiduFM-SwiftyJSON-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_BaiduFM_SwiftyJSON : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_BaiduFM_SwiftyJSON 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-SwiftyJSON/Pods-BaiduFM-SwiftyJSON-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-BaiduFM-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-SwiftyJSON/Pods-BaiduFM-SwiftyJSON-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double SwiftyJSONVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char SwiftyJSONVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-SwiftyJSON/Pods-BaiduFM-SwiftyJSON.modulemap: -------------------------------------------------------------------------------- 1 | framework module SwiftyJSON { 2 | umbrella header "Pods-BaiduFM-SwiftyJSON-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM-SwiftyJSON/Pods-BaiduFM-SwiftyJSON.xcconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/Pods/Target Support Files/Pods-BaiduFM-SwiftyJSON/Pods-BaiduFM-SwiftyJSON.xcconfig -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 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-BaiduFM/Pods-BaiduFM-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_BaiduFM : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_BaiduFM 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM/Pods-BaiduFM-environment.h: -------------------------------------------------------------------------------- 1 | 2 | // To check if a library is compiled with CocoaPods you 3 | // can use the `COCOAPODS` macro definition which is 4 | // defined in the xcconfigs so it is available in 5 | // headers also when they are imported in the client 6 | // project. 7 | 8 | 9 | // Alamofire 10 | #define COCOAPODS_POD_AVAILABLE_Alamofire 11 | #define COCOAPODS_VERSION_MAJOR_Alamofire 1 12 | #define COCOAPODS_VERSION_MINOR_Alamofire 2 13 | #define COCOAPODS_VERSION_PATCH_Alamofire 1 14 | 15 | // Async 16 | #define COCOAPODS_POD_AVAILABLE_Async 17 | #define COCOAPODS_VERSION_MAJOR_Async 1 18 | #define COCOAPODS_VERSION_MINOR_Async 2 19 | #define COCOAPODS_VERSION_PATCH_Async 0 20 | 21 | // Kingfisher 22 | #define COCOAPODS_POD_AVAILABLE_Kingfisher 23 | #define COCOAPODS_VERSION_MAJOR_Kingfisher 1 24 | #define COCOAPODS_VERSION_MINOR_Kingfisher 2 25 | #define COCOAPODS_VERSION_PATCH_Kingfisher 0 26 | 27 | // LTMorphingLabel 28 | #define COCOAPODS_POD_AVAILABLE_LTMorphingLabel 29 | #define COCOAPODS_VERSION_MAJOR_LTMorphingLabel 0 30 | #define COCOAPODS_VERSION_MINOR_LTMorphingLabel 0 31 | #define COCOAPODS_VERSION_PATCH_LTMorphingLabel 7 32 | 33 | // MJRefresh 34 | #define COCOAPODS_POD_AVAILABLE_MJRefresh 35 | #define COCOAPODS_VERSION_MAJOR_MJRefresh 1 36 | #define COCOAPODS_VERSION_MINOR_MJRefresh 4 37 | #define COCOAPODS_VERSION_PATCH_MJRefresh 5 38 | 39 | // SwiftyJSON 40 | #define COCOAPODS_POD_AVAILABLE_SwiftyJSON 41 | #define COCOAPODS_VERSION_MAJOR_SwiftyJSON 2 42 | #define COCOAPODS_VERSION_MINOR_SwiftyJSON 2 43 | #define COCOAPODS_VERSION_PATCH_SwiftyJSON 0 44 | 45 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM/Pods-BaiduFM-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | local source="${BUILT_PRODUCTS_DIR}/Pods-BaiduFM/$1" 12 | local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 13 | 14 | if [ -L "${source}" ]; then 15 | echo "Symlinked..." 16 | source=$(readlink "${source}") 17 | fi 18 | 19 | # use filter instead of exclude so missing patterns dont' throw errors 20 | echo "rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" ${source} ${destination}" 21 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" "${source}" "${destination}" 22 | # Resign the code if required by the build settings to avoid unstable apps 23 | if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then 24 | code_sign "${destination}/$1" 25 | fi 26 | 27 | # Embed linked Swift runtime libraries 28 | local basename 29 | basename=$(echo $1 | sed -E s/\\..+// && exit ${PIPESTATUS[0]}) 30 | local swift_runtime_libs 31 | swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/$1/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 32 | for lib in $swift_runtime_libs; do 33 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 34 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 35 | if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then 36 | code_sign "${destination}/${lib}" 37 | fi 38 | done 39 | } 40 | 41 | # Signs a framework with the provided identity 42 | code_sign() { 43 | # Use the current code_sign_identitiy 44 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 45 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1" 46 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" 47 | } 48 | 49 | 50 | if [[ "$CONFIGURATION" == "Debug" ]]; then 51 | install_framework 'Alamofire.framework' 52 | install_framework 'Async.framework' 53 | install_framework 'Kingfisher.framework' 54 | install_framework 'LTMorphingLabel.framework' 55 | install_framework 'MJRefresh.framework' 56 | install_framework 'SwiftyJSON.framework' 57 | fi 58 | if [[ "$CONFIGURATION" == "Release" ]]; then 59 | install_framework 'Alamofire.framework' 60 | install_framework 'Async.framework' 61 | install_framework 'Kingfisher.framework' 62 | install_framework 'LTMorphingLabel.framework' 63 | install_framework 'MJRefresh.framework' 64 | install_framework 'SwiftyJSON.framework' 65 | fi 66 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM/Pods-BaiduFM-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_BaiduFMVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_BaiduFMVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM/Pods-BaiduFM.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" 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_FRAMEWORK_BUILD_PATH/Alamofire.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Async.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Kingfisher.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/LTMorphingLabel.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/MJRefresh.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwiftyJSON.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "Async" -framework "Kingfisher" -framework "LTMorphingLabel" -framework "MJRefresh" -framework "SwiftyJSON" 6 | OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM 9 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM/Pods-BaiduFM.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_BaiduFM { 2 | umbrella header "Pods-BaiduFM-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-BaiduFM/Pods-BaiduFM.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" 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_FRAMEWORK_BUILD_PATH/Alamofire.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Async.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Kingfisher.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/LTMorphingLabel.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/MJRefresh.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwiftyJSON.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "Async" -framework "Kingfisher" -framework "LTMorphingLabel" -framework "MJRefresh" -framework "SwiftyJSON" 6 | OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-BaiduFM 9 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BaiduFM-Swift 2 | [![](http://img.shields.io/badge/build-passing-4BC51D.svg)]() 3 | [![](http://img.shields.io/badge/OS%20X-10.10.3-blue.svg)]() 4 | [![](http://img.shields.io/badge/xcode-6.3-blue.svg)]() 5 | [![](http://img.shields.io/badge/iOS-8.0%2B-blue.svg)]() 6 | [![](http://img.shields.io/badge/Swift-1.2-blue.svg)]() 7 | [![CocoaPods compatible](https://img.shields.io/badge/CocoaPods-compatible-4BC51D.svg)](https://github.com/cocoapods/cocoapods) 8 | 9 | 百度FM, swift语言实现,基于最新xcode6.3+swift1.2,初步只是为了实现功能,代码比较粗燥,后面有时间会整理。 10 | 11 | ##API接口申明 12 | -本APP接口使用百度FM非公开API,音乐版权归百度所有 13 | 14 | ##功能 15 | 16 | - 增加Apple Watch支持(歌词同步显示) 17 | 18 | - (删除)下载歌曲到本地 19 | 20 | - (取消)收藏喜欢的音乐 21 | 22 | - (清空)最近播放的音乐 23 | 24 | - 可以下拉刷新,上拉加载更多歌曲列表 25 | 26 | - 歌词自动滚动 27 | 28 | - 实时显示歌曲播放进度 29 | 30 | - 暂停继续播放 31 | 32 | - 上一曲下一曲 33 | 34 | - 歌曲类型列表 35 | 36 | - 分类歌曲列表 37 | 38 | - 支持后台播放 39 | 40 | - 锁屏显示歌曲专辑信息 41 | 42 | - 锁屏控制音乐下一曲/上一曲、暂停播放 43 | 44 | - 新增收藏列表,最近播放列表,下载歌曲列表 45 | 46 | 47 | ##项目截图 48 | 49 | - Apple Watch首页![项目截图0](https://github.com/belm/BaiduFM-Swift/blob/master/ScreenShot/BaiduFM-Swift_AppleWatch_00.png?raw=true) 50 | 51 | - Apple Watch首页菜单页面![项目截图0](https://github.com/belm/BaiduFM-Swift/blob/master/ScreenShot/BaiduFM-Swift_AppleWatch_01.png?raw=true) 52 | 53 | - Apple Watch歌曲列表![项目截图0](https://github.com/belm/BaiduFM-Swift/blob/master/ScreenShot/BaiduFM-Swift_AppleWatch_02.png?raw=true) 54 | 55 | - Apple Watch歌曲类型选择列表![项目截图0](https://github.com/belm/BaiduFM-Swift/blob/master/ScreenShot/BaiduFM-Swift_AppleWatch_03.png?raw=true) 56 | 57 | - iPhone锁屏显示、播放控制![项目截图0](https://github.com/belm/BaiduFM-Swift/blob/master/ScreenShot/BaiduFM-Swift_00.png?raw=true) 58 | 59 | - iPhone项目首页![项目截图1](https://github.com/belm/BaiduFM-Swift/blob/master/ScreenShot/BaiduFM-Swift_01.png?raw=true) 60 | 61 | - iPhone歌曲分类![项目截图2](https://github.com/belm/BaiduFM-Swift/blob/master/ScreenShot/BaiduFM-Swift_02.png?raw=true) 62 | 63 | - iPhone歌曲列表![项目截图3](https://github.com/belm/BaiduFM-Swift/blob/master/ScreenShot/BaiduFM-Swift_03.png?raw=true) 64 | 65 | ##项目使用注意事项 66 | -项目里使用[COCOAPODS](https://github.com/cocoapods/cocoapods)管理第三方库,运行前请执行pod install安装依赖库 67 | 68 | ##项目使用的第三方库 69 | 70 | -[网络库Alamofire](https://github.com/Alamofire/Alamofire) 71 | 72 | -[JSON解析SwiftyJSON](https://github.com/SwiftyJSON/SwiftyJSON) 73 | 74 | -[SQLite数据库FMDB](https://github.com/ccgus/fmdb) 75 | 76 | -[异步Async](https://github.com/duemunk/Async) 77 | 78 | -[MJRefresh](https://github.com/CoderMJLee/MJRefresh) 79 | 80 | -[文字效果LTMorphingLabel](https://github.com/lexrus/LTMorphingLabel) 81 | 82 | -[图片缓存Kingfisher](https://github.com/onevcat/Kingfisher) 83 | 84 | ##使用的swift知识点 85 | -网络请求 86 | 87 | -JSON解析 88 | 89 | -swift正则 90 | 91 | -swift单例 92 | 93 | -下拉刷新、上拉加载更多MJRefresh,歌曲进度UIProgressView,歌词滚动UITextView 94 | 95 | -闭包 96 | 97 | -get,set,didSet 98 | 99 | -使用MPMoviePlayerController在线播放网络mp3 100 | 101 | -NSNotificationCenter传值 102 | 103 | ##待完成功能 104 | 105 | -播放音乐改用AVAudioPlayer 106 | 107 | -第三方库合并(已经改用[COCOAPODS](https://github.com/cocoapods/cocoapods)管理) 108 | 109 | -支持Apple Watch 110 | 111 | ##联系我 112 | - [QQ邮箱](mailto:belm@vip.qq.com) 113 | - [微博](http://weibo.com/belmeng) 114 | 115 | -------------------------------------------------------------------------------- /ScreenShot/BaiduFM-Swift_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/ScreenShot/BaiduFM-Swift_00.png -------------------------------------------------------------------------------- /ScreenShot/BaiduFM-Swift_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/ScreenShot/BaiduFM-Swift_01.png -------------------------------------------------------------------------------- /ScreenShot/BaiduFM-Swift_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/ScreenShot/BaiduFM-Swift_02.png -------------------------------------------------------------------------------- /ScreenShot/BaiduFM-Swift_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/ScreenShot/BaiduFM-Swift_03.png -------------------------------------------------------------------------------- /ScreenShot/BaiduFM-Swift_AppleWatch_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/ScreenShot/BaiduFM-Swift_AppleWatch_00.png -------------------------------------------------------------------------------- /ScreenShot/BaiduFM-Swift_AppleWatch_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/ScreenShot/BaiduFM-Swift_AppleWatch_01.png -------------------------------------------------------------------------------- /ScreenShot/BaiduFM-Swift_AppleWatch_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/ScreenShot/BaiduFM-Swift_AppleWatch_02.png -------------------------------------------------------------------------------- /ScreenShot/BaiduFM-Swift_AppleWatch_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/belm/BaiduFM-Swift/e5102bb70683044867207a8fabc3c6aa00ded109/ScreenShot/BaiduFM-Swift_AppleWatch_03.png --------------------------------------------------------------------------------