├── .DS_Store
├── .github
└── workflows
│ └── swiftCFPageScrollView.yml
├── .gitignore
├── CFStreamingVideo.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── xcuserdata
│ │ └── WangShi.xcuserdatad
│ │ └── UserInterfaceState.xcuserstate
├── xcshareddata
│ └── xcschemes
│ │ └── CFStreamingVideo.xcscheme
└── xcuserdata
│ └── WangShi.xcuserdatad
│ └── xcschemes
│ └── xcschememanagement.plist
├── CFStreamingVideo.xcworkspace
├── contents.xcworkspacedata
├── xcshareddata
│ └── IDEWorkspaceChecks.plist
└── xcuserdata
│ └── WangShi.xcuserdatad
│ ├── UserInterfaceState.xcuserstate
│ └── xcdebugger
│ └── Breakpoints_v2.xcbkptlist
├── CFStreamingVideo
├── .DS_Store
├── AppDelegate.swift
├── Assets.xcassets
│ ├── .DS_Store
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Contents.json
│ ├── homeIcon
│ │ ├── .DS_Store
│ │ ├── Contents.json
│ │ ├── ad1.imageset
│ │ │ ├── Contents.json
│ │ │ └── ad1@2x.png
│ │ ├── ad2.imageset
│ │ │ ├── Contents.json
│ │ │ └── ad2@2x.png
│ │ ├── ad3.imageset
│ │ │ ├── Contents.json
│ │ │ └── ad3@2x.png
│ │ ├── arrow_s_12x12_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── arrow_s_12x12_@2x.png
│ │ │ └── arrow_s_12x12_@3x.png
│ │ ├── detail_player_control_pause_new1_24x24_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── detail_player_control_pause_new1_24x24_@2x.png
│ │ │ └── detail_player_control_pause_new1_24x24_@3x.png
│ │ ├── detail_player_control_play_new2_24x24_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── detail_player_control_play_new2_24x24_@2x.png
│ │ │ └── detail_player_control_play_new2_24x24_@3x.png
│ │ ├── detail_player_red_progress_indicator_16x16_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── detail_player_red_progress_indicator_16x16_@2x.png
│ │ │ └── detail_player_red_progress_indicator_16x16_@3x.png
│ │ ├── home_icon_search_white_30x30_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── home_icon_search_white_30x30_@2x.png
│ │ │ └── home_icon_search_white_30x30_@3x.png
│ │ ├── home_top_channel_menu_30x30_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── home_top_channel_menu_30x30_@2x.png
│ │ │ └── home_top_channel_menu_30x30_@3x.png
│ │ ├── home_topbar_icon_download_24x24_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── home_topbar_icon_download_24x24_@2x.png
│ │ │ └── home_topbar_icon_download_24x24_@3x.png
│ │ ├── home_topbar_icon_filter_light_11x11_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── home_topbar_icon_filter_light_11x11_@2x.png
│ │ │ └── home_topbar_icon_filter_light_11x11_@3x.png
│ │ ├── home_topbar_icon_history_light_24x24_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── home_topbar_icon_history_light_24x24_@2x.png
│ │ │ └── home_topbar_icon_history_light_24x24_@3x.png
│ │ ├── sv_rotation_24x24_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── sv_rotation_24x24_@2x.png
│ │ │ └── sv_rotation_24x24_@3x.png
│ │ ├── sv_slider_big_28x28_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── sv_slider_big_28x28_@2x.png
│ │ │ └── sv_slider_big_28x28_@3x.png
│ │ └── ykcomic_icon_back_white_24x24_.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ykcomic_icon_back_white_24x24_@2x.png
│ │ │ └── ykcomic_icon_back_white_24x24_@3x.png
│ └── tabbarIcon
│ │ ├── .DS_Store
│ │ ├── Contents.json
│ │ ├── navbar_icon_discovery_normal_24x24_.imageset
│ │ ├── Contents.json
│ │ ├── navbar_icon_discovery_normal_24x24_@2x.png
│ │ └── navbar_icon_discovery_normal_24x24_@3x.png
│ │ ├── navbar_icon_discovery_selected_24x24_.imageset
│ │ ├── Contents.json
│ │ ├── navbar_icon_discovery_selected_24x24_@2x.png
│ │ └── navbar_icon_discovery_selected_24x24_@3x.png
│ │ ├── navbar_icon_home_normal_24x24_.imageset
│ │ ├── Contents.json
│ │ ├── navbar_icon_home_normal_24x24_@2x.png
│ │ └── navbar_icon_home_normal_24x24_@3x.png
│ │ ├── navbar_icon_home_selected_24x24_.imageset
│ │ ├── Contents.json
│ │ ├── navbar_icon_home_selected_24x24_@2x.png
│ │ └── navbar_icon_home_selected_24x24_@3x.png
│ │ ├── navbar_icon_planet_normal_24x24_.imageset
│ │ ├── Contents.json
│ │ ├── navbar_icon_planet_normal_24x24_@2x.png
│ │ └── navbar_icon_planet_normal_24x24_@3x.png
│ │ ├── navbar_icon_planet_selected_24x24_.imageset
│ │ ├── Contents.json
│ │ ├── navbar_icon_planet_selected_24x24_@2x.png
│ │ └── navbar_icon_planet_selected_24x24_@3x.png
│ │ ├── navbar_icon_user_normal_24x24_.imageset
│ │ ├── Contents.json
│ │ ├── navbar_icon_user_normal_24x24_@2x.png
│ │ └── navbar_icon_user_normal_24x24_@3x.png
│ │ ├── navbar_icon_user_selected_24x24_.imageset
│ │ ├── Contents.json
│ │ ├── navbar_icon_user_selected_24x24_@2x.png
│ │ └── navbar_icon_user_selected_24x24_@3x.png
│ │ ├── navbar_icon_vip_normal_24x24_.imageset
│ │ ├── Contents.json
│ │ ├── navbar_icon_vip_normal_24x24_@2x.png
│ │ └── navbar_icon_vip_normal_24x24_@3x.png
│ │ └── navbar_icon_vip_selected_24x24_.imageset
│ │ ├── Contents.json
│ │ ├── navbar_icon_vip_selected_24x24_@2x.png
│ │ └── navbar_icon_vip_selected_24x24_@3x.png
├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── DataModel.xcdatamodeld
│ └── DataModel.xcdatamodel
│ │ └── contents
├── DataModel
│ ├── .DS_Store
│ ├── DisplayData+CoreDataClass.swift
│ ├── DisplayData+CoreDataProperties.swift
│ ├── MenuData+CoreDataClass.swift
│ └── MenuData+CoreDataProperties.swift
├── DataSourceFile.swift
├── Info.plist
├── Library
│ ├── .DS_Store
│ ├── CFPageScrollview
│ │ ├── .DS_Store
│ │ ├── BaseSearchView.swift
│ │ ├── CFPageScrollView.swift
│ │ ├── EditMenuCell.swift
│ │ ├── EditMenuController.swift
│ │ ├── EditMenuHeader.swift
│ │ ├── NavigationItemView.swift
│ │ ├── NavigationItemViewCell.swift
│ │ ├── ProtocolAction.swift
│ │ └── SearchController.swift
│ └── Extension
│ │ └── extension+String.swift
├── MacroDefinition
│ ├── GlobalConfigDefinition.swift
│ └── GlobalFun.swift
├── PrefixHeader.h
├── ToolManager
│ ├── CoreDataManager.swift
│ └── ModelTool.swift
├── ViewController
│ ├── .DS_Store
│ ├── CFBaseController
│ │ └── CFBaseController.swift
│ ├── CFHomePageController
│ │ ├── .DS_Store
│ │ ├── CFHomePageController.swift
│ │ ├── ChildController
│ │ │ ├── .DS_Store
│ │ │ ├── Child1View
│ │ │ │ ├── ADNoticeViewCell.swift
│ │ │ │ ├── ChildCell1.swift
│ │ │ │ ├── ChildCircleHeader1.swift
│ │ │ │ └── ChildNoticeHeader1.swift
│ │ │ ├── ChildController1.swift
│ │ │ ├── ChildController1
│ │ │ │ ├── .DS_Store
│ │ │ │ ├── DetailController.swift
│ │ │ │ └── View
│ │ │ │ │ └── PlayerView.swift
│ │ │ ├── ChildController10.swift
│ │ │ ├── ChildController2.swift
│ │ │ ├── ChildController3.swift
│ │ │ ├── ChildController4.swift
│ │ │ ├── ChildController5.swift
│ │ │ ├── ChildController6.swift
│ │ │ ├── ChildController7.swift
│ │ │ ├── ChildController8.swift
│ │ │ └── ChildController9.swift
│ │ └── View
│ │ │ ├── SearchView.swift
│ │ │ ├── SearchView2.swift
│ │ │ └── SearchView3.swift
│ ├── CFHotspotController
│ │ ├── .DS_Store
│ │ ├── CFHotspotController.swift
│ │ ├── ChildController
│ │ │ ├── .DS_Store
│ │ │ ├── HotspotChildController1.swift
│ │ │ └── View
│ │ │ │ └── HotspotCell1.swift
│ │ └── View
│ │ │ └── HotspotSearchView.swift
│ ├── CFMyInfoController
│ │ └── CFMyInfoController.swift
│ ├── CFStarController
│ │ └── CFStarController.swift
│ ├── CFTabBarController
│ │ ├── .DS_Store
│ │ └── CFTabBarController.swift
│ └── CFVIPMemberController
│ │ └── CFVIPMemberController.swift
└── swift_oc_briding_Header.h
├── LICENSE
├── Podfile
├── Podfile.lock
├── Pods
├── .DS_Store
├── Headers
│ ├── .DS_Store
│ ├── Private
│ │ ├── MJExtension
│ │ │ ├── MJExtension.h
│ │ │ ├── MJExtensionConst.h
│ │ │ ├── MJFoundation.h
│ │ │ ├── MJProperty.h
│ │ │ ├── MJPropertyKey.h
│ │ │ ├── MJPropertyType.h
│ │ │ ├── NSObject+MJClass.h
│ │ │ ├── NSObject+MJCoding.h
│ │ │ ├── NSObject+MJKeyValue.h
│ │ │ ├── NSObject+MJProperty.h
│ │ │ └── NSString+MJExtension.h
│ │ ├── MJRefresh
│ │ │ ├── MJRefresh.h
│ │ │ ├── MJRefreshAutoFooter.h
│ │ │ ├── MJRefreshAutoGifFooter.h
│ │ │ ├── MJRefreshAutoNormalFooter.h
│ │ │ ├── MJRefreshAutoStateFooter.h
│ │ │ ├── MJRefreshBackFooter.h
│ │ │ ├── MJRefreshBackGifFooter.h
│ │ │ ├── MJRefreshBackNormalFooter.h
│ │ │ ├── MJRefreshBackStateFooter.h
│ │ │ ├── MJRefreshComponent.h
│ │ │ ├── MJRefreshConst.h
│ │ │ ├── MJRefreshFooter.h
│ │ │ ├── MJRefreshGifHeader.h
│ │ │ ├── MJRefreshHeader.h
│ │ │ ├── MJRefreshNormalHeader.h
│ │ │ ├── MJRefreshStateHeader.h
│ │ │ ├── NSBundle+MJRefresh.h
│ │ │ ├── UIScrollView+MJExtension.h
│ │ │ ├── UIScrollView+MJRefresh.h
│ │ │ └── UIView+MJExtension.h
│ │ ├── RollingNotice
│ │ │ ├── GYNoticeViewCell.h
│ │ │ └── GYRollingNoticeView.h
│ │ ├── SDCycleScrollView
│ │ │ ├── SDCollectionViewCell.h
│ │ │ ├── SDCycleScrollView.h
│ │ │ ├── TAAbstractDotView.h
│ │ │ ├── TAAnimatedDotView.h
│ │ │ ├── TADotView.h
│ │ │ ├── TAPageControl.h
│ │ │ └── UIView+SDExtension.h
│ │ └── SDWebImage
│ │ │ ├── NSData+ImageContentType.h
│ │ │ ├── NSImage+WebCache.h
│ │ │ ├── SDImageCache.h
│ │ │ ├── SDImageCacheConfig.h
│ │ │ ├── SDWebImageCoder.h
│ │ │ ├── SDWebImageCoderHelper.h
│ │ │ ├── SDWebImageCodersManager.h
│ │ │ ├── SDWebImageCompat.h
│ │ │ ├── SDWebImageDownloader.h
│ │ │ ├── SDWebImageDownloaderOperation.h
│ │ │ ├── SDWebImageFrame.h
│ │ │ ├── SDWebImageGIFCoder.h
│ │ │ ├── SDWebImageImageIOCoder.h
│ │ │ ├── SDWebImageManager.h
│ │ │ ├── SDWebImageOperation.h
│ │ │ ├── SDWebImagePrefetcher.h
│ │ │ ├── UIButton+WebCache.h
│ │ │ ├── UIImage+ForceDecode.h
│ │ │ ├── UIImage+GIF.h
│ │ │ ├── UIImage+MultiFormat.h
│ │ │ ├── UIImageView+HighlightedWebCache.h
│ │ │ ├── UIImageView+WebCache.h
│ │ │ ├── UIView+WebCache.h
│ │ │ └── UIView+WebCacheOperation.h
│ └── Public
│ │ ├── MJExtension
│ │ ├── MJExtension.h
│ │ ├── MJExtensionConst.h
│ │ ├── MJFoundation.h
│ │ ├── MJProperty.h
│ │ ├── MJPropertyKey.h
│ │ ├── MJPropertyType.h
│ │ ├── NSObject+MJClass.h
│ │ ├── NSObject+MJCoding.h
│ │ ├── NSObject+MJKeyValue.h
│ │ ├── NSObject+MJProperty.h
│ │ └── NSString+MJExtension.h
│ │ ├── MJRefresh
│ │ ├── MJRefresh.h
│ │ ├── MJRefreshAutoFooter.h
│ │ ├── MJRefreshAutoGifFooter.h
│ │ ├── MJRefreshAutoNormalFooter.h
│ │ ├── MJRefreshAutoStateFooter.h
│ │ ├── MJRefreshBackFooter.h
│ │ ├── MJRefreshBackGifFooter.h
│ │ ├── MJRefreshBackNormalFooter.h
│ │ ├── MJRefreshBackStateFooter.h
│ │ ├── MJRefreshComponent.h
│ │ ├── MJRefreshConst.h
│ │ ├── MJRefreshFooter.h
│ │ ├── MJRefreshGifHeader.h
│ │ ├── MJRefreshHeader.h
│ │ ├── MJRefreshNormalHeader.h
│ │ ├── MJRefreshStateHeader.h
│ │ ├── NSBundle+MJRefresh.h
│ │ ├── UIScrollView+MJExtension.h
│ │ ├── UIScrollView+MJRefresh.h
│ │ └── UIView+MJExtension.h
│ │ ├── RollingNotice
│ │ ├── GYNoticeViewCell.h
│ │ └── GYRollingNoticeView.h
│ │ ├── SDCycleScrollView
│ │ ├── SDCollectionViewCell.h
│ │ ├── SDCycleScrollView.h
│ │ ├── TAAbstractDotView.h
│ │ ├── TAAnimatedDotView.h
│ │ ├── TADotView.h
│ │ ├── TAPageControl.h
│ │ └── UIView+SDExtension.h
│ │ └── SDWebImage
│ │ ├── NSData+ImageContentType.h
│ │ ├── NSImage+WebCache.h
│ │ ├── SDImageCache.h
│ │ ├── SDImageCacheConfig.h
│ │ ├── SDWebImageCoder.h
│ │ ├── SDWebImageCoderHelper.h
│ │ ├── SDWebImageCodersManager.h
│ │ ├── SDWebImageCompat.h
│ │ ├── SDWebImageDownloader.h
│ │ ├── SDWebImageDownloaderOperation.h
│ │ ├── SDWebImageFrame.h
│ │ ├── SDWebImageGIFCoder.h
│ │ ├── SDWebImageImageIOCoder.h
│ │ ├── SDWebImageManager.h
│ │ ├── SDWebImageOperation.h
│ │ ├── SDWebImagePrefetcher.h
│ │ ├── UIButton+WebCache.h
│ │ ├── UIImage+ForceDecode.h
│ │ ├── UIImage+GIF.h
│ │ ├── UIImage+MultiFormat.h
│ │ ├── UIImageView+HighlightedWebCache.h
│ │ ├── UIImageView+WebCache.h
│ │ ├── UIView+WebCache.h
│ │ └── UIView+WebCacheOperation.h
├── MJExtension
│ ├── LICENSE
│ ├── MJExtension
│ │ ├── MJExtension.h
│ │ ├── MJExtensionConst.h
│ │ ├── MJExtensionConst.m
│ │ ├── MJFoundation.h
│ │ ├── MJFoundation.m
│ │ ├── MJProperty.h
│ │ ├── MJProperty.m
│ │ ├── MJPropertyKey.h
│ │ ├── MJPropertyKey.m
│ │ ├── MJPropertyType.h
│ │ ├── MJPropertyType.m
│ │ ├── NSObject+MJClass.h
│ │ ├── NSObject+MJClass.m
│ │ ├── NSObject+MJCoding.h
│ │ ├── NSObject+MJCoding.m
│ │ ├── NSObject+MJKeyValue.h
│ │ ├── NSObject+MJKeyValue.m
│ │ ├── NSObject+MJProperty.h
│ │ ├── NSObject+MJProperty.m
│ │ ├── NSString+MJExtension.h
│ │ └── NSString+MJExtension.m
│ └── README.md
├── MJRefresh
│ ├── LICENSE
│ ├── MJRefresh
│ │ ├── Base
│ │ │ ├── MJRefreshAutoFooter.h
│ │ │ ├── MJRefreshAutoFooter.m
│ │ │ ├── MJRefreshBackFooter.h
│ │ │ ├── MJRefreshBackFooter.m
│ │ │ ├── MJRefreshComponent.h
│ │ │ ├── MJRefreshComponent.m
│ │ │ ├── MJRefreshFooter.h
│ │ │ ├── MJRefreshFooter.m
│ │ │ ├── MJRefreshHeader.h
│ │ │ └── MJRefreshHeader.m
│ │ ├── Custom
│ │ │ ├── Footer
│ │ │ │ ├── Auto
│ │ │ │ │ ├── MJRefreshAutoGifFooter.h
│ │ │ │ │ ├── MJRefreshAutoGifFooter.m
│ │ │ │ │ ├── MJRefreshAutoNormalFooter.h
│ │ │ │ │ ├── MJRefreshAutoNormalFooter.m
│ │ │ │ │ ├── MJRefreshAutoStateFooter.h
│ │ │ │ │ └── MJRefreshAutoStateFooter.m
│ │ │ │ └── Back
│ │ │ │ │ ├── MJRefreshBackGifFooter.h
│ │ │ │ │ ├── MJRefreshBackGifFooter.m
│ │ │ │ │ ├── MJRefreshBackNormalFooter.h
│ │ │ │ │ ├── MJRefreshBackNormalFooter.m
│ │ │ │ │ ├── MJRefreshBackStateFooter.h
│ │ │ │ │ └── MJRefreshBackStateFooter.m
│ │ │ └── Header
│ │ │ │ ├── MJRefreshGifHeader.h
│ │ │ │ ├── MJRefreshGifHeader.m
│ │ │ │ ├── MJRefreshNormalHeader.h
│ │ │ │ ├── MJRefreshNormalHeader.m
│ │ │ │ ├── MJRefreshStateHeader.h
│ │ │ │ └── MJRefreshStateHeader.m
│ │ ├── MJRefresh.bundle
│ │ │ ├── arrow@2x.png
│ │ │ ├── en.lproj
│ │ │ │ └── Localizable.strings
│ │ │ ├── zh-Hans.lproj
│ │ │ │ └── Localizable.strings
│ │ │ └── zh-Hant.lproj
│ │ │ │ └── Localizable.strings
│ │ ├── MJRefresh.h
│ │ ├── MJRefreshConst.h
│ │ ├── MJRefreshConst.m
│ │ ├── NSBundle+MJRefresh.h
│ │ ├── NSBundle+MJRefresh.m
│ │ ├── UIScrollView+MJExtension.h
│ │ ├── UIScrollView+MJExtension.m
│ │ ├── UIScrollView+MJRefresh.h
│ │ ├── UIScrollView+MJRefresh.m
│ │ ├── UIView+MJExtension.h
│ │ └── UIView+MJExtension.m
│ └── README.md
├── Manifest.lock
├── Pods.xcodeproj
│ ├── project.pbxproj
│ └── xcuserdata
│ │ └── WangShi.xcuserdatad
│ │ └── xcschemes
│ │ ├── Alamofire.xcscheme
│ │ ├── MJExtension.xcscheme
│ │ ├── MJRefresh.xcscheme
│ │ ├── Moya.xcscheme
│ │ ├── Pods-CFStreamingVideo.xcscheme
│ │ ├── Result.xcscheme
│ │ ├── RollingNotice.xcscheme
│ │ ├── SDCycleScrollView.xcscheme
│ │ ├── SDWebImage.xcscheme
│ │ └── xcschememanagement.plist
├── RollingNotice
│ ├── LICENSE
│ ├── README.md
│ └── RollingNotice
│ │ └── GYRollingNoticeView
│ │ ├── GYNoticeViewCell.h
│ │ ├── GYNoticeViewCell.m
│ │ ├── GYRollingNoticeView.h
│ │ └── GYRollingNoticeView.m
├── SDCycleScrollView
│ ├── LICENSE
│ ├── README.md
│ └── SDCycleScrollView
│ │ └── Lib
│ │ └── SDCycleScrollView
│ │ ├── PageControl
│ │ ├── TAAbstractDotView.h
│ │ ├── TAAbstractDotView.m
│ │ ├── TAAnimatedDotView.h
│ │ ├── TAAnimatedDotView.m
│ │ ├── TADotView.h
│ │ ├── TADotView.m
│ │ ├── TAPageControl.h
│ │ └── TAPageControl.m
│ │ ├── SDCollectionViewCell.h
│ │ ├── SDCollectionViewCell.m
│ │ ├── SDCycleScrollView.h
│ │ ├── SDCycleScrollView.m
│ │ ├── UIView+SDExtension.h
│ │ └── UIView+SDExtension.m
├── SDWebImage
│ ├── LICENSE
│ ├── README.md
│ └── SDWebImage
│ │ ├── NSData+ImageContentType.h
│ │ ├── NSData+ImageContentType.m
│ │ ├── NSImage+WebCache.h
│ │ ├── NSImage+WebCache.m
│ │ ├── SDImageCache.h
│ │ ├── SDImageCache.m
│ │ ├── SDImageCacheConfig.h
│ │ ├── SDImageCacheConfig.m
│ │ ├── SDWebImageCoder.h
│ │ ├── SDWebImageCoder.m
│ │ ├── SDWebImageCoderHelper.h
│ │ ├── SDWebImageCoderHelper.m
│ │ ├── SDWebImageCodersManager.h
│ │ ├── SDWebImageCodersManager.m
│ │ ├── SDWebImageCompat.h
│ │ ├── SDWebImageCompat.m
│ │ ├── SDWebImageDownloader.h
│ │ ├── SDWebImageDownloader.m
│ │ ├── SDWebImageDownloaderOperation.h
│ │ ├── SDWebImageDownloaderOperation.m
│ │ ├── SDWebImageFrame.h
│ │ ├── SDWebImageFrame.m
│ │ ├── SDWebImageGIFCoder.h
│ │ ├── SDWebImageGIFCoder.m
│ │ ├── SDWebImageImageIOCoder.h
│ │ ├── SDWebImageImageIOCoder.m
│ │ ├── SDWebImageManager.h
│ │ ├── SDWebImageManager.m
│ │ ├── SDWebImageOperation.h
│ │ ├── SDWebImagePrefetcher.h
│ │ ├── SDWebImagePrefetcher.m
│ │ ├── UIButton+WebCache.h
│ │ ├── UIButton+WebCache.m
│ │ ├── UIImage+ForceDecode.h
│ │ ├── UIImage+ForceDecode.m
│ │ ├── UIImage+GIF.h
│ │ ├── UIImage+GIF.m
│ │ ├── UIImage+MultiFormat.h
│ │ ├── UIImage+MultiFormat.m
│ │ ├── UIImageView+HighlightedWebCache.h
│ │ ├── UIImageView+HighlightedWebCache.m
│ │ ├── UIImageView+WebCache.h
│ │ ├── UIImageView+WebCache.m
│ │ ├── UIView+WebCache.h
│ │ ├── UIView+WebCache.m
│ │ ├── UIView+WebCacheOperation.h
│ │ └── UIView+WebCacheOperation.m
└── Target Support Files
│ ├── MJExtension
│ ├── MJExtension-dummy.m
│ ├── MJExtension-prefix.pch
│ ├── MJExtension.debug.xcconfig
│ └── MJExtension.release.xcconfig
│ ├── MJRefresh
│ ├── MJRefresh-dummy.m
│ ├── MJRefresh-prefix.pch
│ ├── MJRefresh.debug.xcconfig
│ └── MJRefresh.release.xcconfig
│ ├── Pods-CFStreamingVideo
│ ├── Info.plist
│ ├── Pods-CFStreamingVideo-Info.plist
│ ├── Pods-CFStreamingVideo-acknowledgements.markdown
│ ├── Pods-CFStreamingVideo-acknowledgements.plist
│ ├── Pods-CFStreamingVideo-dummy.m
│ ├── Pods-CFStreamingVideo-frameworks-Debug-input-files.xcfilelist
│ ├── Pods-CFStreamingVideo-frameworks-Debug-output-files.xcfilelist
│ ├── Pods-CFStreamingVideo-frameworks-Release-input-files.xcfilelist
│ ├── Pods-CFStreamingVideo-frameworks-Release-output-files.xcfilelist
│ ├── Pods-CFStreamingVideo-frameworks.sh
│ ├── Pods-CFStreamingVideo-resources-Debug-input-files.xcfilelist
│ ├── Pods-CFStreamingVideo-resources-Debug-output-files.xcfilelist
│ ├── Pods-CFStreamingVideo-resources-Release-input-files.xcfilelist
│ ├── Pods-CFStreamingVideo-resources-Release-output-files.xcfilelist
│ ├── Pods-CFStreamingVideo-resources.sh
│ ├── Pods-CFStreamingVideo-umbrella.h
│ ├── Pods-CFStreamingVideo.debug.xcconfig
│ ├── Pods-CFStreamingVideo.modulemap
│ └── Pods-CFStreamingVideo.release.xcconfig
│ ├── RollingNotice
│ ├── RollingNotice-dummy.m
│ ├── RollingNotice-prefix.pch
│ ├── RollingNotice.debug.xcconfig
│ └── RollingNotice.release.xcconfig
│ ├── SDCycleScrollView
│ ├── SDCycleScrollView-dummy.m
│ ├── SDCycleScrollView-prefix.pch
│ ├── SDCycleScrollView.debug.xcconfig
│ └── SDCycleScrollView.release.xcconfig
│ └── SDWebImage
│ ├── SDWebImage-dummy.m
│ ├── SDWebImage-prefix.pch
│ ├── SDWebImage.debug.xcconfig
│ └── SDWebImage.release.xcconfig
├── README.md
└── 演示图
├── .DS_Store
├── 演示图1.gif
├── 演示图2.gif
└── 演示图3.gif
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/.DS_Store
--------------------------------------------------------------------------------
/.github/workflows/swiftCFPageScrollView.yml:
--------------------------------------------------------------------------------
1 | name: Swift
2 |
3 | on: [push]
4 |
5 | jobs:
6 | build:
7 |
8 | runs-on: macOS-latest
9 |
10 | steps:
11 | - uses: actions/checkout@v1
12 | - name: Build
13 | run: swift build -v
14 | - name: Run tests
15 | run: swift test -v
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 |
20 | ## Other
21 | *.moved-aside
22 | *.xccheckout
23 | *.xcscmblueprint
24 |
25 | ## Obj-C/Swift specific
26 | *.hmap
27 | *.ipa
28 | *.dSYM.zip
29 | *.dSYM
30 |
31 | ## Playgrounds
32 | timeline.xctimeline
33 | playground.xcworkspace
34 |
35 | # Swift Package Manager
36 | #
37 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
38 | # Packages/
39 | # Package.pins
40 | # Package.resolved
41 | .build/
42 |
43 | # CocoaPods
44 | #
45 | # We recommend against adding the Pods directory to your .gitignore. However
46 | # you should judge for yourself, the pros and cons are mentioned at:
47 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
48 | #
49 | # Pods/
50 |
51 | # Carthage
52 | #
53 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
54 | # Carthage/Checkouts
55 |
56 | Carthage/Build
57 |
58 | # fastlane
59 | #
60 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
61 | # screenshots whenever they are needed.
62 | # For more information about the recommended setup visit:
63 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
64 |
65 | fastlane/report.xml
66 | fastlane/Preview.html
67 | fastlane/screenshots/**/*.png
68 | fastlane/test_output
69 |
--------------------------------------------------------------------------------
/CFStreamingVideo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/CFStreamingVideo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/CFStreamingVideo.xcodeproj/project.xcworkspace/xcuserdata/WangShi.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo.xcodeproj/project.xcworkspace/xcuserdata/WangShi.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/CFStreamingVideo.xcodeproj/xcuserdata/WangShi.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | CFStreamingVideo.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 9
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 0C67453E230A7C9B008B99B9
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/CFStreamingVideo.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/CFStreamingVideo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/CFStreamingVideo.xcworkspace/xcuserdata/WangShi.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo.xcworkspace/xcuserdata/WangShi.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/CFStreamingVideo.xcworkspace/xcuserdata/WangShi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/CFStreamingVideo/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/ad1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ad1@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/ad1.imageset/ad1@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/ad1.imageset/ad1@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/ad2.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ad2@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/ad2.imageset/ad2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/ad2.imageset/ad2@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/ad3.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ad3@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/ad3.imageset/ad3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/ad3.imageset/ad3@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/arrow_s_12x12_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "arrow_s_12x12_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "arrow_s_12x12_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/arrow_s_12x12_.imageset/arrow_s_12x12_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/arrow_s_12x12_.imageset/arrow_s_12x12_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/arrow_s_12x12_.imageset/arrow_s_12x12_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/arrow_s_12x12_.imageset/arrow_s_12x12_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_control_pause_new1_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "detail_player_control_pause_new1_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "detail_player_control_pause_new1_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_control_pause_new1_24x24_.imageset/detail_player_control_pause_new1_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_control_pause_new1_24x24_.imageset/detail_player_control_pause_new1_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_control_pause_new1_24x24_.imageset/detail_player_control_pause_new1_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_control_pause_new1_24x24_.imageset/detail_player_control_pause_new1_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_control_play_new2_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "detail_player_control_play_new2_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "detail_player_control_play_new2_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_control_play_new2_24x24_.imageset/detail_player_control_play_new2_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_control_play_new2_24x24_.imageset/detail_player_control_play_new2_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_control_play_new2_24x24_.imageset/detail_player_control_play_new2_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_control_play_new2_24x24_.imageset/detail_player_control_play_new2_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_red_progress_indicator_16x16_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "detail_player_red_progress_indicator_16x16_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "detail_player_red_progress_indicator_16x16_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_red_progress_indicator_16x16_.imageset/detail_player_red_progress_indicator_16x16_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_red_progress_indicator_16x16_.imageset/detail_player_red_progress_indicator_16x16_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_red_progress_indicator_16x16_.imageset/detail_player_red_progress_indicator_16x16_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/detail_player_red_progress_indicator_16x16_.imageset/detail_player_red_progress_indicator_16x16_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_icon_search_white_30x30_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "home_icon_search_white_30x30_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "home_icon_search_white_30x30_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_icon_search_white_30x30_.imageset/home_icon_search_white_30x30_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/home_icon_search_white_30x30_.imageset/home_icon_search_white_30x30_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_icon_search_white_30x30_.imageset/home_icon_search_white_30x30_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/home_icon_search_white_30x30_.imageset/home_icon_search_white_30x30_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_top_channel_menu_30x30_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "home_top_channel_menu_30x30_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "home_top_channel_menu_30x30_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_top_channel_menu_30x30_.imageset/home_top_channel_menu_30x30_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/home_top_channel_menu_30x30_.imageset/home_top_channel_menu_30x30_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_top_channel_menu_30x30_.imageset/home_top_channel_menu_30x30_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/home_top_channel_menu_30x30_.imageset/home_top_channel_menu_30x30_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_download_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "home_topbar_icon_download_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "home_topbar_icon_download_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_download_24x24_.imageset/home_topbar_icon_download_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_download_24x24_.imageset/home_topbar_icon_download_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_download_24x24_.imageset/home_topbar_icon_download_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_download_24x24_.imageset/home_topbar_icon_download_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_filter_light_11x11_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "home_topbar_icon_filter_light_11x11_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "home_topbar_icon_filter_light_11x11_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_filter_light_11x11_.imageset/home_topbar_icon_filter_light_11x11_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_filter_light_11x11_.imageset/home_topbar_icon_filter_light_11x11_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_filter_light_11x11_.imageset/home_topbar_icon_filter_light_11x11_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_filter_light_11x11_.imageset/home_topbar_icon_filter_light_11x11_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_history_light_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "home_topbar_icon_history_light_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "home_topbar_icon_history_light_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_history_light_24x24_.imageset/home_topbar_icon_history_light_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_history_light_24x24_.imageset/home_topbar_icon_history_light_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_history_light_24x24_.imageset/home_topbar_icon_history_light_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/home_topbar_icon_history_light_24x24_.imageset/home_topbar_icon_history_light_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/sv_rotation_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "sv_rotation_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "sv_rotation_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/sv_rotation_24x24_.imageset/sv_rotation_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/sv_rotation_24x24_.imageset/sv_rotation_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/sv_rotation_24x24_.imageset/sv_rotation_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/sv_rotation_24x24_.imageset/sv_rotation_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/sv_slider_big_28x28_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "sv_slider_big_28x28_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "sv_slider_big_28x28_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/sv_slider_big_28x28_.imageset/sv_slider_big_28x28_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/sv_slider_big_28x28_.imageset/sv_slider_big_28x28_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/sv_slider_big_28x28_.imageset/sv_slider_big_28x28_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/sv_slider_big_28x28_.imageset/sv_slider_big_28x28_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/ykcomic_icon_back_white_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ykcomic_icon_back_white_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ykcomic_icon_back_white_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/ykcomic_icon_back_white_24x24_.imageset/ykcomic_icon_back_white_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/ykcomic_icon_back_white_24x24_.imageset/ykcomic_icon_back_white_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/homeIcon/ykcomic_icon_back_white_24x24_.imageset/ykcomic_icon_back_white_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/homeIcon/ykcomic_icon_back_white_24x24_.imageset/ykcomic_icon_back_white_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_discovery_normal_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "navbar_icon_discovery_normal_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "navbar_icon_discovery_normal_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_discovery_normal_24x24_.imageset/navbar_icon_discovery_normal_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_discovery_normal_24x24_.imageset/navbar_icon_discovery_normal_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_discovery_normal_24x24_.imageset/navbar_icon_discovery_normal_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_discovery_normal_24x24_.imageset/navbar_icon_discovery_normal_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_discovery_selected_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "navbar_icon_discovery_selected_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "navbar_icon_discovery_selected_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_discovery_selected_24x24_.imageset/navbar_icon_discovery_selected_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_discovery_selected_24x24_.imageset/navbar_icon_discovery_selected_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_discovery_selected_24x24_.imageset/navbar_icon_discovery_selected_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_discovery_selected_24x24_.imageset/navbar_icon_discovery_selected_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_home_normal_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "navbar_icon_home_normal_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "navbar_icon_home_normal_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_home_normal_24x24_.imageset/navbar_icon_home_normal_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_home_normal_24x24_.imageset/navbar_icon_home_normal_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_home_normal_24x24_.imageset/navbar_icon_home_normal_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_home_normal_24x24_.imageset/navbar_icon_home_normal_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_home_selected_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "navbar_icon_home_selected_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "navbar_icon_home_selected_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_home_selected_24x24_.imageset/navbar_icon_home_selected_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_home_selected_24x24_.imageset/navbar_icon_home_selected_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_home_selected_24x24_.imageset/navbar_icon_home_selected_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_home_selected_24x24_.imageset/navbar_icon_home_selected_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_planet_normal_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "navbar_icon_planet_normal_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "navbar_icon_planet_normal_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_planet_normal_24x24_.imageset/navbar_icon_planet_normal_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_planet_normal_24x24_.imageset/navbar_icon_planet_normal_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_planet_normal_24x24_.imageset/navbar_icon_planet_normal_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_planet_normal_24x24_.imageset/navbar_icon_planet_normal_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_planet_selected_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "navbar_icon_planet_selected_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "navbar_icon_planet_selected_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_planet_selected_24x24_.imageset/navbar_icon_planet_selected_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_planet_selected_24x24_.imageset/navbar_icon_planet_selected_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_planet_selected_24x24_.imageset/navbar_icon_planet_selected_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_planet_selected_24x24_.imageset/navbar_icon_planet_selected_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_user_normal_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "navbar_icon_user_normal_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "navbar_icon_user_normal_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_user_normal_24x24_.imageset/navbar_icon_user_normal_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_user_normal_24x24_.imageset/navbar_icon_user_normal_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_user_normal_24x24_.imageset/navbar_icon_user_normal_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_user_normal_24x24_.imageset/navbar_icon_user_normal_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_user_selected_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "navbar_icon_user_selected_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "navbar_icon_user_selected_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_user_selected_24x24_.imageset/navbar_icon_user_selected_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_user_selected_24x24_.imageset/navbar_icon_user_selected_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_user_selected_24x24_.imageset/navbar_icon_user_selected_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_user_selected_24x24_.imageset/navbar_icon_user_selected_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_vip_normal_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "navbar_icon_vip_normal_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "navbar_icon_vip_normal_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_vip_normal_24x24_.imageset/navbar_icon_vip_normal_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_vip_normal_24x24_.imageset/navbar_icon_vip_normal_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_vip_normal_24x24_.imageset/navbar_icon_vip_normal_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_vip_normal_24x24_.imageset/navbar_icon_vip_normal_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_vip_selected_24x24_.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "navbar_icon_vip_selected_24x24_@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "navbar_icon_vip_selected_24x24_@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_vip_selected_24x24_.imageset/navbar_icon_vip_selected_24x24_@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_vip_selected_24x24_.imageset/navbar_icon_vip_selected_24x24_@2x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_vip_selected_24x24_.imageset/navbar_icon_vip_selected_24x24_@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Assets.xcassets/tabbarIcon/navbar_icon_vip_selected_24x24_.imageset/navbar_icon_vip_selected_24x24_@3x.png
--------------------------------------------------------------------------------
/CFStreamingVideo/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/CFStreamingVideo/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/CFStreamingVideo/DataModel.xcdatamodeld/DataModel.xcdatamodel/contents:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/CFStreamingVideo/DataModel/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/DataModel/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/DataModel/DisplayData+CoreDataClass.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DisplayData+CoreDataClass.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/9/24.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 | //
9 |
10 | import Foundation
11 | import CoreData
12 |
13 | @objc(DisplayData)
14 | public class DisplayData: NSManagedObject {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/CFStreamingVideo/DataModel/DisplayData+CoreDataProperties.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DisplayData+CoreDataProperties.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/9/24.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 | //
9 |
10 | import Foundation
11 | import CoreData
12 |
13 |
14 | extension DisplayData {
15 |
16 | @nonobjc public class func fetchRequest() -> NSFetchRequest {
17 | return NSFetchRequest(entityName: "DisplayData")
18 | }
19 |
20 | @NSManaged public var title: String?
21 | @NSManaged public var controller: String?
22 | @NSManaged public var isAllowedEditing: Bool
23 | @NSManaged public var isNeedToDisplay: Bool
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/CFStreamingVideo/DataModel/MenuData+CoreDataClass.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MenuData+CoreDataClass.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/9/25.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 | //
9 |
10 | import Foundation
11 | import CoreData
12 |
13 | @objc(MenuData)
14 | public class MenuData: NSManagedObject {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/CFStreamingVideo/DataModel/MenuData+CoreDataProperties.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MenuData+CoreDataProperties.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/9/25.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 | //
9 |
10 | import Foundation
11 | import CoreData
12 |
13 |
14 | extension MenuData {
15 |
16 | @nonobjc public class func fetchRequest() -> NSFetchRequest {
17 | return NSFetchRequest(entityName: "MenuData")
18 | }
19 |
20 | @NSManaged public var title: String?
21 | @NSManaged public var controller: String?
22 | @NSManaged public var isNeedToDisplay: Bool
23 | @NSManaged public var isAllowedEditing: Bool
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/CFStreamingVideo/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIMainStoryboardFile
26 | Main
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeRight
35 |
36 | UISupportedInterfaceOrientations~ipad
37 |
38 | UIInterfaceOrientationPortrait
39 | UIInterfaceOrientationPortraitUpsideDown
40 | UIInterfaceOrientationLandscapeLeft
41 | UIInterfaceOrientationLandscapeRight
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/CFStreamingVideo/Library/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Library/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/Library/CFPageScrollview/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/Library/CFPageScrollview/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/Library/CFPageScrollview/EditMenuCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // EditMenuCell.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/9/18.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class MenuButton: UIButton {
12 |
13 | var indexPath: IndexPath!
14 |
15 | }
16 |
17 | class EditMenuCell: UICollectionViewCell {
18 |
19 | var editButton: MenuButton!
20 | var titleStr: UILabel!
21 |
22 | override init(frame: CGRect) {
23 |
24 | super.init(frame: frame)
25 |
26 | self.layer.masksToBounds = true
27 | self.layer.cornerRadius = 4
28 | self.backgroundColor = UIColor.white
29 |
30 | editButton = MenuButton(type: .custom)
31 | editButton.frame = CGRect(x: mj_w - 25, y: 0, width: 25, height: 25)
32 | editButton.setTitleColor(.red, for: .normal)
33 | editButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 18)
34 | self.contentView.addSubview(editButton)
35 |
36 | titleStr = UILabel.init(frame: CGRect(x: 15, y: self.mj_w - 40, width: self.mj_w - 30, height: 20))
37 | titleStr.font = UIFont.systemFont(ofSize: 14)
38 | titleStr.textColor = UIColor.black
39 | self.contentView.addSubview(titleStr)
40 |
41 | }
42 |
43 | required init?(coder aDecoder: NSCoder) {
44 | fatalError("init(coder:) has not been implemented")
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/CFStreamingVideo/Library/CFPageScrollview/EditMenuHeader.swift:
--------------------------------------------------------------------------------
1 | //
2 | // EditMenuHeader.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/9/19.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class EditMenuHeader: UICollectionReusableView {
12 |
13 | var title: UILabel!
14 |
15 | override init(frame: CGRect) {
16 | super.init(frame: frame)
17 |
18 | title = UILabel.init(frame: CGRect(x: 15, y: 0, width: mj_w, height: 20))
19 | title.textColor = .darkText
20 | title.font = UIFont.systemFont(ofSize: 16)
21 | addSubview(title)
22 |
23 | }
24 |
25 | required init?(coder aDecoder: NSCoder) {
26 | fatalError("init(coder:) has not been implemented")
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/CFStreamingVideo/Library/CFPageScrollview/NavigationItemViewCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NavigationItemViewCell.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/21.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ZoomLabel: UILabel, ZoomAction {
12 |
13 | }
14 |
15 | class NavigationItemViewCell: UICollectionViewCell {
16 |
17 | var titleStr: ZoomLabel!
18 |
19 | override init(frame: CGRect) {
20 |
21 | super.init(frame: frame)
22 |
23 | self.backgroundColor = UIColor.clear
24 |
25 | titleStr = ZoomLabel.init(frame: CGRect(x: 0, y: 0, width: self.mj_w, height: self.mj_h))
26 | titleStr.font = UIFont.boldSystemFont(ofSize: 20)
27 | titleStr.textAlignment = .center
28 | self.addSubview(titleStr)
29 |
30 | }
31 |
32 | required init?(coder aDecoder: NSCoder) {
33 | fatalError("init(coder:) has not been implemented")
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/CFStreamingVideo/Library/CFPageScrollview/ProtocolAction.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ProtocolAction.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/27.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol ZoomAction { }
12 |
13 | extension ZoomAction where Self: UIView {
14 |
15 | func enlarge() {
16 | let animation = CABasicAnimation(keyPath: "transform.scale")
17 | animation.fromValue = NSNumber(value: 1)
18 | animation.toValue = NSNumber(value: 1.3)
19 | animation.duration = 0.25
20 | animation.isRemovedOnCompletion = false;
21 | animation.fillMode = .forwards
22 | self.layer.add(animation, forKey: "enlargeLayer")
23 | }
24 |
25 | func recovery() {
26 | let animation = CABasicAnimation(keyPath: "transform.scale")
27 | animation.fromValue = NSNumber(value: 1.3)
28 | animation.toValue = NSNumber(value: 1)
29 | animation.duration = 0.25
30 | animation.isRemovedOnCompletion = false;
31 | animation.fillMode = .forwards
32 | self.layer.add(animation, forKey: "recoveryLayer")
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/CFStreamingVideo/Library/Extension/extension+String.swift:
--------------------------------------------------------------------------------
1 | //
2 | // extension+String.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/28.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension String {
12 |
13 | func sizeWithText(font: UIFont, size: CGSize) -> CGSize {
14 | let attributes = [NSAttributedString.Key.font: font]
15 | let option = NSStringDrawingOptions.usesLineFragmentOrigin
16 | let rect:CGRect = self.boundingRect(with: size, options: option, attributes: attributes, context: nil)
17 | return rect.size;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/CFStreamingVideo/MacroDefinition/GlobalConfigDefinition.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GlobalConfigDefinition.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/21.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | let APPDELEGATE = UIApplication.shared.delegate as! AppDelegate
12 |
13 | let SCREEN_WIDTH = UIScreen.main.bounds.size.width
14 | let SCREEN_HEIGHT = UIScreen.main.bounds.size.height
15 |
16 | let STATUSBAR_HEIGHT = UIApplication.shared.statusBarFrame.size.height
17 |
18 | let IS_IPHONE_X = STATUSBAR_HEIGHT > 20 ? true : false
19 |
20 | let STATUS_AND_NAV_BAR_HEIGHT:CGFloat = IS_IPHONE_X == true ? 88.0 : 64.0
21 | let NAVBAR_HEIGHT:CGFloat = 44
22 | let TABBAR_HEIGHT:CGFloat = IS_IPHONE_X == true ? 83.0 : 49.0
23 | let BOTTOM_SAFE_HEIGHT:CGFloat = IS_IPHONE_X == true ? 34 : 0
24 |
25 | /*
26 | * 颜色
27 | */
28 |
29 | let ThemeBlueColor = RGB(r: 47.0, g: 166.0, b: 252.0, a: 1.0)//蓝色
30 | let ThemeYellowColor = RGB(r: 234.0, g: 185.0, b: 120.0, a: 1.0)//黄色
31 | let ThemeGrayWhiteColor = RGB(r: 203.0, g: 204.0, b: 206.0, a: 1.0)//灰白
32 | let ThemeBlackColor = RGB(r: 29.0, g: 32.0, b: 41.0, a: 1.0)//黑色
33 |
34 |
35 |
--------------------------------------------------------------------------------
/CFStreamingVideo/MacroDefinition/GlobalFun.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GlobalFun.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/9/3.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | func RGB(r: CGFloat, g: CGFloat, b: CGFloat, a: CGFloat) -> UIColor {
12 | return UIColor(red: r/255, green: g/255, blue: b/255, alpha: 1.0)
13 | }
14 |
15 | func swiftClassFromString(className: String) -> AnyClass! {
16 |
17 | if let appName: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String? {
18 |
19 | let classStringName = appName + "." + className
20 | return NSClassFromString(classStringName)
21 | }
22 | return nil;
23 | }
24 |
--------------------------------------------------------------------------------
/CFStreamingVideo/PrefixHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // PrefixHeader.h
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/19.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | #ifndef PrefixHeader_h
10 | #define PrefixHeader_h
11 |
12 | #import "MJExtension.h"
13 | #import "MJRefresh.h"
14 | #import "SDCycleScrollView.h"
15 | #import "GYRollingNoticeView.h"
16 |
17 | #endif /* PrefixHeader_h */
18 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ToolManager/CoreDataManager.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CoreDataManager.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/9/29.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 |
12 | class CoreDataManager: NSObject {
13 |
14 | ///获取上下文
15 | static var viewContext = APPDELEGATE.persistentContainer.viewContext
16 |
17 | ///Return - 实体模型
18 | class func getEntityAndInsertNewObjectWith(entityName: String) -> NSManagedObject {
19 |
20 | let model = NSEntityDescription.insertNewObject(forEntityName: entityName, into: APPDELEGATE.persistentContainer.viewContext)
21 |
22 | return model
23 | }
24 |
25 | ///保存
26 | class func saveContext() {
27 | APPDELEGATE.saveContext()
28 | }
29 |
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ToolManager/ModelTool.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ModelTool.swift
3 | // SwiftOnlineShopDemo
4 | //
5 | // Created by chenfeng on 2019/5/8.
6 | // Copyright © 2019年 chenfeng. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | class ModelTool: NSObject {
12 |
13 | //如果不了解泛型,请先去了解泛型
14 | class func dicToJSONModel(_ type:T.Type, withKeyValues data:[String:Any]) -> T where T:Decodable{
15 |
16 | let jsonData = try? JSONSerialization.data(withJSONObject: data, options: [])
17 | let model = try? JSONDecoder().decode(type, from: jsonData!)
18 |
19 | return model!
20 |
21 | }
22 |
23 | class func arrayToJSONModel(_ type:T.Type, withKeyValuesArray datas: [[String:Any]]) -> [T] where T:Decodable{
24 | var temp: [T] = []
25 | for data in datas
26 | {
27 | let model:T? = dicToJSONModel(type, withKeyValues: data)
28 |
29 | if model == nil
30 | {
31 | continue
32 | }
33 | temp.append(model!)
34 | }
35 | return temp
36 |
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/ViewController/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFBaseController/CFBaseController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CFBaseController.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/21.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CFBaseController: UIViewController {
12 |
13 | var headerColor: UIColor!//视图往下滑动时,头部的遮罩颜色
14 | var headFillView: UIView!//视图往下滑动时,头部的遮罩视图
15 |
16 | override func viewDidLoad() {
17 | super.viewDidLoad()
18 |
19 | // Do any additional setup after loading the view.
20 |
21 | view.backgroundColor = UIColor.white
22 |
23 | //ScrollView类型的视图拉伸时头部填充视图
24 | headFillView = UIView.init(frame: CGRect(x: 0, y: 0, width: view.mj_w, height: 0.01))
25 | headFillView.backgroundColor = headerColor
26 | view.addSubview(headFillView)
27 |
28 | }
29 |
30 |
31 | /*
32 | // MARK: - Navigation
33 |
34 | // In a storyboard-based application, you will often want to do a little preparation before navigation
35 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
36 | // Get the new view controller using segue.destination.
37 | // Pass the selected object to the new view controller.
38 | }
39 | */
40 |
41 | }
42 |
43 | // MARK: - UIScrollViewDelegate
44 | extension ChildController1: UIScrollViewDelegate {
45 |
46 | func scrollViewDidScroll(_ scrollView: UIScrollView) {
47 |
48 | let offset = scrollView.contentOffset;
49 | print(offset.y);
50 |
51 | if offset.y < 0 {
52 | headFillView.mj_h = abs(offset.y);
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/ViewController/CFHomePageController/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/ViewController/CFHomePageController/ChildController/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/Child1View/ADNoticeViewCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ADNoticeViewCell.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/9/9.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ADNoticeViewCell: GYNoticeViewCell {
12 |
13 | var indicator: UIImageView!
14 |
15 | override init!(reuseIdentifier: String!) {
16 | super.init(reuseIdentifier: reuseIdentifier)
17 |
18 | indicator = UIImageView.init(image: UIImage.init(named: "arrow_s_12x12_"))
19 |
20 | addSubview(indicator)
21 |
22 |
23 | }
24 |
25 | required init!(coder aDecoder: NSCoder!) {
26 | fatalError("init(coder:) has not been implemented")
27 | }
28 |
29 | override func layoutSubviews() {
30 | super.layoutSubviews()
31 |
32 | indicator.frame = CGRect(x: mj_w - 12, y: mj_h/2 - 6, width: 12, height: 12)
33 |
34 | }
35 |
36 | /*
37 | // Only override draw() if you perform custom drawing.
38 | // An empty implementation adversely affects performance during animation.
39 | override func draw(_ rect: CGRect) {
40 | // Drawing code
41 | }
42 | */
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/ChildController1/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/ViewController/CFHomePageController/ChildController/ChildController1/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/ChildController10.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChildController10.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/28.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ChildController10: CFBaseController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 |
18 | view.backgroundColor = ThemeBlueColor
19 |
20 | let titleStr = UILabel.init(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
21 | titleStr.font = UIFont.boldSystemFont(ofSize: 20)
22 | titleStr.textAlignment = .center
23 | titleStr.text = "游戏"
24 | titleStr.textColor = UIColor.darkText
25 | view.addSubview(titleStr)
26 |
27 | }
28 |
29 |
30 | /*
31 | // MARK: - Navigation
32 |
33 | // In a storyboard-based application, you will often want to do a little preparation before navigation
34 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
35 | // Get the new view controller using segue.destination.
36 | // Pass the selected object to the new view controller.
37 | }
38 | */
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/ChildController2.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChildController2.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/28.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ChildController2: CFBaseController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 |
18 | view.backgroundColor = ThemeYellowColor
19 |
20 | let titleStr = UILabel.init(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
21 | titleStr.font = UIFont.boldSystemFont(ofSize: 20)
22 | titleStr.textAlignment = .center
23 | titleStr.text = "70年"
24 | titleStr.textColor = UIColor.darkText
25 | view.addSubview(titleStr)
26 |
27 | }
28 |
29 |
30 | /*
31 | // MARK: - Navigation
32 |
33 | // In a storyboard-based application, you will often want to do a little preparation before navigation
34 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
35 | // Get the new view controller using segue.destination.
36 | // Pass the selected object to the new view controller.
37 | }
38 | */
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/ChildController3.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChildController3.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/28.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ChildController3: CFBaseController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 |
18 | view.backgroundColor = ThemeBlueColor
19 |
20 | let titleStr = UILabel.init(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
21 | titleStr.font = UIFont.boldSystemFont(ofSize: 20)
22 | titleStr.textAlignment = .center
23 | titleStr.text = "花花物语"
24 | titleStr.textColor = UIColor.darkText
25 | view.addSubview(titleStr)
26 | }
27 |
28 |
29 | /*
30 | // MARK: - Navigation
31 |
32 | // In a storyboard-based application, you will often want to do a little preparation before navigation
33 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
34 | // Get the new view controller using segue.destination.
35 | // Pass the selected object to the new view controller.
36 | }
37 | */
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/ChildController4.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChildController4.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/28.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ChildController4: CFBaseController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 |
18 | let titleStr = UILabel.init(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
19 | titleStr.font = UIFont.boldSystemFont(ofSize: 20)
20 | titleStr.textAlignment = .center
21 | titleStr.text = "热点"
22 | titleStr.textColor = UIColor.darkText
23 | view.addSubview(titleStr)
24 |
25 | }
26 |
27 |
28 | /*
29 | // MARK: - Navigation
30 |
31 | // In a storyboard-based application, you will often want to do a little preparation before navigation
32 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
33 | // Get the new view controller using segue.destination.
34 | // Pass the selected object to the new view controller.
35 | }
36 | */
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/ChildController5.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChildController5.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/28.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ChildController5: CFBaseController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 |
18 | view.backgroundColor = ThemeBlueColor
19 |
20 | let titleStr = UILabel.init(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
21 | titleStr.font = UIFont.boldSystemFont(ofSize: 20)
22 | titleStr.textAlignment = .center
23 | titleStr.text = "剧集"
24 | titleStr.textColor = UIColor.darkText
25 | view.addSubview(titleStr)
26 |
27 | }
28 |
29 |
30 | /*
31 | // MARK: - Navigation
32 |
33 | // In a storyboard-based application, you will often want to do a little preparation before navigation
34 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
35 | // Get the new view controller using segue.destination.
36 | // Pass the selected object to the new view controller.
37 | }
38 | */
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/ChildController6.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChildController6.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/28.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ChildController6: CFBaseController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 |
18 | view.backgroundColor = ThemeYellowColor
19 |
20 | let titleStr = UILabel.init(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
21 | titleStr.font = UIFont.boldSystemFont(ofSize: 20)
22 | titleStr.textAlignment = .center
23 | titleStr.text = "电影"
24 | titleStr.textColor = UIColor.darkText
25 | view.addSubview(titleStr)
26 |
27 | }
28 |
29 |
30 | /*
31 | // MARK: - Navigation
32 |
33 | // In a storyboard-based application, you will often want to do a little preparation before navigation
34 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
35 | // Get the new view controller using segue.destination.
36 | // Pass the selected object to the new view controller.
37 | }
38 | */
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/ChildController7.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChildController7.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/28.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ChildController7: CFBaseController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 |
18 | view.backgroundColor = ThemeBlueColor
19 |
20 | let titleStr = UILabel.init(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
21 | titleStr.font = UIFont.boldSystemFont(ofSize: 20)
22 | titleStr.textAlignment = .center
23 | titleStr.text = "综艺"
24 | titleStr.textColor = UIColor.darkText
25 | view.addSubview(titleStr)
26 | }
27 |
28 |
29 | /*
30 | // MARK: - Navigation
31 |
32 | // In a storyboard-based application, you will often want to do a little preparation before navigation
33 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
34 | // Get the new view controller using segue.destination.
35 | // Pass the selected object to the new view controller.
36 | }
37 | */
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/ChildController8.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChildController8.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/28.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ChildController8: CFBaseController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 |
18 | view.backgroundColor = ThemeYellowColor
19 |
20 | let titleStr = UILabel.init(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
21 | titleStr.font = UIFont.boldSystemFont(ofSize: 20)
22 | titleStr.textAlignment = .center
23 | titleStr.text = "高清"
24 | titleStr.textColor = UIColor.darkText
25 | view.addSubview(titleStr)
26 |
27 | }
28 |
29 |
30 | /*
31 | // MARK: - Navigation
32 |
33 | // In a storyboard-based application, you will often want to do a little preparation before navigation
34 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
35 | // Get the new view controller using segue.destination.
36 | // Pass the selected object to the new view controller.
37 | }
38 | */
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/ChildController/ChildController9.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChildController9.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/28.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ChildController9: CFBaseController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 |
18 | let titleStr = UILabel.init(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
19 | titleStr.font = UIFont.boldSystemFont(ofSize: 20)
20 | titleStr.textAlignment = .center
21 | titleStr.text = "网络"
22 | titleStr.textColor = UIColor.darkText
23 | view.addSubview(titleStr)
24 |
25 | }
26 |
27 |
28 | /*
29 | // MARK: - Navigation
30 |
31 | // In a storyboard-based application, you will often want to do a little preparation before navigation
32 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
33 | // Get the new view controller using segue.destination.
34 | // Pass the selected object to the new view controller.
35 | }
36 | */
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHomePageController/View/SearchView2.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SearchView2.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/9/5.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class SearchView2: BaseSearchView {
12 |
13 | override init(frame: CGRect) {
14 | super.init(frame: frame)
15 |
16 | searchButton = UIButton(type: .custom)
17 | searchButton.frame = CGRect(x: 15, y: 5, width: SCREEN_WIDTH - 30, height: 50 - 16)
18 | searchButton.backgroundColor = bgColor
19 | searchButton.layer.masksToBounds = true
20 | searchButton.layer.cornerRadius = 17
21 | searchButton.setTitle("秦时明月之谁是惊鲵", for: .normal)
22 | searchButton.setTitleColor(textColor, for: .normal)
23 | addSubview(searchButton)
24 |
25 | var image = UIImage.init(named: "home_icon_search_white_30x30_")
26 | image = image?.withRenderingMode(.alwaysTemplate)
27 |
28 | searchImage = UIImageView.init(frame: CGRect(x: searchButton.mj_w - 40, y: 2, width: 30, height: 30))
29 | searchImage.image = image
30 | searchImage.tintColor = imageColor
31 | searchButton.addSubview(searchImage)
32 |
33 | }
34 |
35 | required init?(coder aDecoder: NSCoder) {
36 | fatalError("init(coder:) has not been implemented")
37 | }
38 |
39 | /*
40 | // Only override draw() if you perform custom drawing.
41 | // An empty implementation adversely affects performance during animation.
42 | override func draw(_ rect: CGRect) {
43 | // Drawing code
44 | }
45 | */
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHotspotController/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/ViewController/CFHotspotController/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHotspotController/ChildController/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/ViewController/CFHotspotController/ChildController/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHotspotController/ChildController/View/HotspotCell1.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HotspotCell1.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/10/9.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class HotspotCell1: UITableViewCell {
12 |
13 | var imageVW: UIImageView!
14 | var titleStr: UILabel!
15 |
16 | override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
17 |
18 | super.init(style: style, reuseIdentifier: reuseIdentifier)
19 |
20 | imageVW = UIImageView.init(frame: CGRect(x: 0, y: 0, width: SCREEN_WIDTH, height: 160))
21 | contentView.addSubview(imageVW)
22 |
23 | titleStr = UILabel.init(frame: CGRect(x: 15, y: imageVW.frame.maxY + 10, width: self.mj_w - 30, height: 20))
24 | titleStr.font = UIFont.systemFont(ofSize: 14)
25 | titleStr.textColor = UIColor.black
26 | contentView.addSubview(titleStr)
27 |
28 | }
29 |
30 | required init?(coder: NSCoder) {
31 | fatalError("init(coder:) has not been implemented")
32 | }
33 |
34 | override func awakeFromNib() {
35 | super.awakeFromNib()
36 | // Initialization code
37 | }
38 |
39 | override func setSelected(_ selected: Bool, animated: Bool) {
40 | super.setSelected(selected, animated: animated)
41 |
42 | // Configure the view for the selected state
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFHotspotController/View/HotspotSearchView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HotspotSearchView.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/10/8.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class HotspotSearchView: BaseSearchView {
12 |
13 | override init(frame: CGRect) {
14 | super.init(frame: frame)
15 |
16 | searchButton = UIButton(type: .custom)
17 | searchButton.frame = CGRect(x: 15, y: 5, width: SCREEN_WIDTH - 30, height: 50 - 16)
18 | searchButton.backgroundColor = RGB(r: 44.0, g: 47.0, b: 55.0, a: 1.0)
19 | searchButton.layer.masksToBounds = true
20 | searchButton.layer.cornerRadius = 17
21 | addSubview(searchButton)
22 |
23 | searchImage = UIImageView.init(frame: CGRect(x: searchButton.mj_w - 40, y: 2, width: 30, height: 30))
24 | searchImage.image = UIImage.init(named: "home_icon_search_white_30x30_")
25 | searchButton.addSubview(searchImage)
26 |
27 | }
28 |
29 | required init?(coder aDecoder: NSCoder) {
30 | fatalError("init(coder:) has not been implemented")
31 | }
32 |
33 | /*
34 | // Only override draw() if you perform custom drawing.
35 | // An empty implementation adversely affects performance during animation.
36 | override func draw(_ rect: CGRect) {
37 | // Drawing code
38 | }
39 | */
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFMyInfoController/CFMyInfoController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CFMyInfoController.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/21.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CFMyInfoController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 | }
18 |
19 |
20 | /*
21 | // MARK: - Navigation
22 |
23 | // In a storyboard-based application, you will often want to do a little preparation before navigation
24 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
25 | // Get the new view controller using segue.destination.
26 | // Pass the selected object to the new view controller.
27 | }
28 | */
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFStarController/CFStarController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CFStarController.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/21.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CFStarController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 | }
18 |
19 |
20 | /*
21 | // MARK: - Navigation
22 |
23 | // In a storyboard-based application, you will often want to do a little preparation before navigation
24 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
25 | // Get the new view controller using segue.destination.
26 | // Pass the selected object to the new view controller.
27 | }
28 | */
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFTabBarController/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/CFStreamingVideo/ViewController/CFTabBarController/.DS_Store
--------------------------------------------------------------------------------
/CFStreamingVideo/ViewController/CFVIPMemberController/CFVIPMemberController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CFVIPMemberController.swift
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/21.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CFVIPMemberController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 | }
18 |
19 |
20 | /*
21 | // MARK: - Navigation
22 |
23 | // In a storyboard-based application, you will often want to do a little preparation before navigation
24 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
25 | // Get the new view controller using segue.destination.
26 | // Pass the selected object to the new view controller.
27 | }
28 | */
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/CFStreamingVideo/swift_oc_briding_Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // swift_oc_briding_Header.h
3 | // CFStreamingVideo
4 | //
5 | // Created by chenfeng on 2019/8/19.
6 | // Copyright © 2019 chenfeng. All rights reserved.
7 | //
8 |
9 | #ifndef swift_oc_briding_Header_h
10 | #define swift_oc_briding_Header_h
11 |
12 | #import "PrefixHeader.h"
13 |
14 | #endif /* swift_oc_briding_Header_h */
15 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 chenfengxiaoxixi
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 |
--------------------------------------------------------------------------------
/Podfile:
--------------------------------------------------------------------------------
1 | source 'https://github.com/CocoaPods/Specs.git'
2 | platform:ios,'9.0'
3 |
4 | target 'CFStreamingVideo' do
5 |
6 | pod 'MJExtension'
7 | pod 'MJRefresh'
8 | pod 'SDCycleScrollView'
9 | pod 'RollingNotice'
10 |
11 | end
12 |
--------------------------------------------------------------------------------
/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - MJExtension (3.0.13)
3 | - MJRefresh (3.1.15.1)
4 | - RollingNotice (1.0.2)
5 | - SDCycleScrollView (1.75):
6 | - SDWebImage (>= 4.0.0)
7 | - SDWebImage (4.2.3):
8 | - SDWebImage/Core (= 4.2.3)
9 | - SDWebImage/Core (4.2.3)
10 |
11 | DEPENDENCIES:
12 | - MJExtension
13 | - MJRefresh
14 | - RollingNotice
15 | - SDCycleScrollView
16 |
17 | SPEC REPOS:
18 | https://github.com/CocoaPods/Specs.git:
19 | - MJExtension
20 | - MJRefresh
21 | - RollingNotice
22 | - SDCycleScrollView
23 | - SDWebImage
24 |
25 | SPEC CHECKSUMS:
26 | MJExtension: 5932755f451458eefa24239358817f8d291240c7
27 | MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6
28 | RollingNotice: 792a2712563d00191eb519c86b4825401a302c51
29 | SDCycleScrollView: 884b88f0266dd4708a0e1934975c69cb971707b1
30 | SDWebImage: 791bb72962b3492327ddcac4b1880bd1b5458431
31 |
32 | PODFILE CHECKSUM: 682ec247d0702751b72e8d7999d0466c98f6a556
33 |
34 | COCOAPODS: 1.9.1
35 |
--------------------------------------------------------------------------------
/Pods/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/Pods/.DS_Store
--------------------------------------------------------------------------------
/Pods/Headers/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/Pods/Headers/.DS_Store
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJExtension/MJExtension.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJExtension.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJExtension/MJExtensionConst.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJExtensionConst.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJExtension/MJFoundation.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJFoundation.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJExtension/MJProperty.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJProperty.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJExtension/MJPropertyKey.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJPropertyKey.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJExtension/MJPropertyType.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJPropertyType.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJExtension/NSObject+MJClass.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/NSObject+MJClass.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJExtension/NSObject+MJCoding.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/NSObject+MJCoding.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJExtension/NSObject+MJKeyValue.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/NSObject+MJKeyValue.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJExtension/NSObject+MJProperty.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/NSObject+MJProperty.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJExtension/NSString+MJExtension.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/NSString+MJExtension.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefresh.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/MJRefresh.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshAutoFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshAutoGifFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshAutoNormalFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshAutoStateFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshBackFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshBackGifFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshBackNormalFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshBackStateFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshComponent.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshComponent.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshConst.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/MJRefreshConst.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshGifHeader.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshHeader.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshHeader.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshNormalHeader.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/MJRefreshStateHeader.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/NSBundle+MJRefresh.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/NSBundle+MJRefresh.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/UIScrollView+MJExtension.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJExtension.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/UIScrollView+MJRefresh.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJRefresh.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/MJRefresh/UIView+MJExtension.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/UIView+MJExtension.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/RollingNotice/GYNoticeViewCell.h:
--------------------------------------------------------------------------------
1 | ../../../RollingNotice/RollingNotice/GYRollingNoticeView/GYNoticeViewCell.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/RollingNotice/GYRollingNoticeView.h:
--------------------------------------------------------------------------------
1 | ../../../RollingNotice/RollingNotice/GYRollingNoticeView/GYRollingNoticeView.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDCycleScrollView/SDCollectionViewCell.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCollectionViewCell.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDCycleScrollView/SDCycleScrollView.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCycleScrollView.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDCycleScrollView/TAAbstractDotView.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAbstractDotView.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDCycleScrollView/TAAnimatedDotView.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAnimatedDotView.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDCycleScrollView/TADotView.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TADotView.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDCycleScrollView/TAPageControl.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAPageControl.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDCycleScrollView/UIView+SDExtension.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/UIView+SDExtension.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/NSImage+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDImageCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDImageCacheConfig.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImageCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImageCoderHelper.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImageCodersManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImageCompat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImageDownloader.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImageDownloaderOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImageFrame.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImageGIFCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImageImageIOCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImageManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/SDWebImagePrefetcher.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/UIButton+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/UIImage+ForceDecode.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/UIImage+MultiFormat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/UIImageView+HighlightedWebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/UIImageView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/UIView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Private/SDWebImage/UIView+WebCacheOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJExtension/MJExtension.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJExtension.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJExtension/MJExtensionConst.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJExtensionConst.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJExtension/MJFoundation.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJFoundation.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJExtension/MJProperty.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJProperty.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJExtension/MJPropertyKey.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJPropertyKey.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJExtension/MJPropertyType.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/MJPropertyType.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJExtension/NSObject+MJClass.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/NSObject+MJClass.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJExtension/NSObject+MJCoding.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/NSObject+MJCoding.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJExtension/NSObject+MJKeyValue.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/NSObject+MJKeyValue.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJExtension/NSObject+MJProperty.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/NSObject+MJProperty.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJExtension/NSString+MJExtension.h:
--------------------------------------------------------------------------------
1 | ../../../MJExtension/MJExtension/NSString+MJExtension.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefresh.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/MJRefresh.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshAutoFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshAutoGifFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshAutoNormalFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshAutoStateFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshBackFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshBackGifFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshBackNormalFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshBackStateFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshComponent.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshComponent.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshConst.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/MJRefreshConst.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshFooter.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshFooter.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshGifHeader.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshHeader.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshHeader.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshNormalHeader.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/MJRefreshStateHeader.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/NSBundle+MJRefresh.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/NSBundle+MJRefresh.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/UIScrollView+MJExtension.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJExtension.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/UIScrollView+MJRefresh.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJRefresh.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/MJRefresh/UIView+MJExtension.h:
--------------------------------------------------------------------------------
1 | ../../../MJRefresh/MJRefresh/UIView+MJExtension.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/RollingNotice/GYNoticeViewCell.h:
--------------------------------------------------------------------------------
1 | ../../../RollingNotice/RollingNotice/GYRollingNoticeView/GYNoticeViewCell.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/RollingNotice/GYRollingNoticeView.h:
--------------------------------------------------------------------------------
1 | ../../../RollingNotice/RollingNotice/GYRollingNoticeView/GYRollingNoticeView.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDCycleScrollView/SDCollectionViewCell.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCollectionViewCell.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDCycleScrollView/SDCycleScrollView.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCycleScrollView.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDCycleScrollView/TAAbstractDotView.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAbstractDotView.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDCycleScrollView/TAAnimatedDotView.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAnimatedDotView.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDCycleScrollView/TADotView.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TADotView.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDCycleScrollView/TAPageControl.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAPageControl.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDCycleScrollView/UIView+SDExtension.h:
--------------------------------------------------------------------------------
1 | ../../../SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/UIView+SDExtension.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/NSImage+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDImageCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDImageCacheConfig.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImageCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImageCoderHelper.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImageCodersManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImageCompat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImageDownloader.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImageDownloaderOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImageFrame.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImageGIFCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImageImageIOCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImageManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/SDWebImagePrefetcher.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/UIButton+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/UIImage+ForceDecode.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/UIImage+MultiFormat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/UIImageView+HighlightedWebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/UIImageView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/UIView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/SDWebImage/UIView+WebCacheOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h
--------------------------------------------------------------------------------
/Pods/MJExtension/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-2015 MJExtension (https://github.com/CoderMJLee/MJExtension)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJExtension.h
3 | // MJExtension
4 | //
5 | // Created by mj on 14-1-15.
6 | // Copyright (c) 2014年 小码哥. All rights reserved.
7 | // 代码地址:https://github.com/CoderMJLee/MJExtension
8 | // 代码地址:http://code4app.com/ios/%E5%AD%97%E5%85%B8-JSON-%E4%B8%8E%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%BD%AC%E6%8D%A2/5339992a933bf062608b4c57
9 |
10 | #import "NSObject+MJCoding.h"
11 | #import "NSObject+MJProperty.h"
12 | #import "NSObject+MJClass.h"
13 | #import "NSObject+MJKeyValue.h"
14 | #import "NSString+MJExtension.h"
15 | #import "MJExtensionConst.h"
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJExtensionConst.m:
--------------------------------------------------------------------------------
1 | #ifndef __MJExtensionConst__M__
2 | #define __MJExtensionConst__M__
3 |
4 | #import
5 |
6 | /**
7 | * 成员变量类型(属性类型)
8 | */
9 | NSString *const MJPropertyTypeInt = @"i";
10 | NSString *const MJPropertyTypeShort = @"s";
11 | NSString *const MJPropertyTypeFloat = @"f";
12 | NSString *const MJPropertyTypeDouble = @"d";
13 | NSString *const MJPropertyTypeLong = @"l";
14 | NSString *const MJPropertyTypeLongLong = @"q";
15 | NSString *const MJPropertyTypeChar = @"c";
16 | NSString *const MJPropertyTypeBOOL1 = @"c";
17 | NSString *const MJPropertyTypeBOOL2 = @"b";
18 | NSString *const MJPropertyTypePointer = @"*";
19 |
20 | NSString *const MJPropertyTypeIvar = @"^{objc_ivar=}";
21 | NSString *const MJPropertyTypeMethod = @"^{objc_method=}";
22 | NSString *const MJPropertyTypeBlock = @"@?";
23 | NSString *const MJPropertyTypeClass = @"#";
24 | NSString *const MJPropertyTypeSEL = @":";
25 | NSString *const MJPropertyTypeId = @"@";
26 |
27 | #endif
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJFoundation.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJFoundation.h
3 | // MJExtensionExample
4 | //
5 | // Created by MJ Lee on 14/7/16.
6 | // Copyright (c) 2014年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MJFoundation : NSObject
12 | + (BOOL)isClassFromFoundation:(Class)c;
13 | @end
14 |
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJFoundation.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJFoundation.m
3 | // MJExtensionExample
4 | //
5 | // Created by MJ Lee on 14/7/16.
6 | // Copyright (c) 2014年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJFoundation.h"
10 | #import "MJExtensionConst.h"
11 | #import
12 |
13 | static NSSet *foundationClasses_;
14 |
15 | @implementation MJFoundation
16 |
17 | + (NSSet *)foundationClasses
18 | {
19 | if (foundationClasses_ == nil) {
20 | // 集合中没有NSObject,因为几乎所有的类都是继承自NSObject,具体是不是NSObject需要特殊判断
21 | foundationClasses_ = [NSSet setWithObjects:
22 | [NSURL class],
23 | [NSDate class],
24 | [NSValue class],
25 | [NSData class],
26 | [NSError class],
27 | [NSArray class],
28 | [NSDictionary class],
29 | [NSString class],
30 | [NSAttributedString class], nil];
31 | }
32 | return foundationClasses_;
33 | }
34 |
35 | + (BOOL)isClassFromFoundation:(Class)c
36 | {
37 | if (c == [NSObject class] || c == [NSManagedObject class]) return YES;
38 |
39 | __block BOOL result = NO;
40 | [[self foundationClasses] enumerateObjectsUsingBlock:^(Class foundationClass, BOOL *stop) {
41 | if ([c isSubclassOfClass:foundationClass]) {
42 | result = YES;
43 | *stop = YES;
44 | }
45 | }];
46 | return result;
47 | }
48 | @end
49 |
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJProperty.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJProperty.h
3 | // MJExtensionExample
4 | //
5 | // Created by MJ Lee on 15/4/17.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | // 包装一个成员属性
8 |
9 | #import
10 | #import
11 | #import "MJPropertyType.h"
12 | #import "MJPropertyKey.h"
13 |
14 | /**
15 | * 包装一个成员
16 | */
17 | @interface MJProperty : NSObject
18 | /** 成员属性 */
19 | @property (nonatomic, assign) objc_property_t property;
20 | /** 成员属性的名字 */
21 | @property (nonatomic, readonly) NSString *name;
22 |
23 | /** 成员属性的类型 */
24 | @property (nonatomic, readonly) MJPropertyType *type;
25 | /** 成员属性来源于哪个类(可能是父类) */
26 | @property (nonatomic, assign) Class srcClass;
27 |
28 | /**** 同一个成员属性 - 父类和子类的行为可能不一致(originKey、propertyKeys、objectClassInArray) ****/
29 | /** 设置最原始的key */
30 | - (void)setOriginKey:(id)originKey forClass:(Class)c;
31 | /** 对应着字典中的多级key(里面存放的数组,数组里面都是MJPropertyKey对象) */
32 | - (NSArray *)propertyKeysForClass:(Class)c;
33 |
34 | /** 模型数组中的模型类型 */
35 | - (void)setObjectClassInArray:(Class)objectClass forClass:(Class)c;
36 | - (Class)objectClassInArrayForClass:(Class)c;
37 | /**** 同一个成员变量 - 父类和子类的行为可能不一致(key、keys、objectClassInArray) ****/
38 |
39 | /**
40 | * 设置object的成员变量值
41 | */
42 | - (void)setValue:(id)value forObject:(id)object;
43 | /**
44 | * 得到object的成员属性值
45 | */
46 | - (id)valueForObject:(id)object;
47 |
48 | /**
49 | * 初始化
50 | */
51 | + (instancetype)cachedPropertyWithProperty:(objc_property_t)property;
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJPropertyKey.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJPropertyKey.h
3 | // MJExtensionExample
4 | //
5 | // Created by MJ Lee on 15/8/11.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef enum {
12 | MJPropertyKeyTypeDictionary = 0, // 字典的key
13 | MJPropertyKeyTypeArray // 数组的key
14 | } MJPropertyKeyType;
15 |
16 | /**
17 | * 属性的key
18 | */
19 | @interface MJPropertyKey : NSObject
20 | /** key的名字 */
21 | @property (copy, nonatomic) NSString *name;
22 | /** key的种类,可能是@"10",可能是@"age" */
23 | @property (assign, nonatomic) MJPropertyKeyType type;
24 |
25 | /**
26 | * 根据当前的key,也就是name,从object(字典或者数组)中取值
27 | */
28 | - (id)valueInObject:(id)object;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJPropertyKey.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJPropertyKey.m
3 | // MJExtensionExample
4 | //
5 | // Created by MJ Lee on 15/8/11.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJPropertyKey.h"
10 |
11 | @implementation MJPropertyKey
12 |
13 | - (id)valueInObject:(id)object
14 | {
15 | if ([object isKindOfClass:[NSDictionary class]] && self.type == MJPropertyKeyTypeDictionary) {
16 | return object[self.name];
17 | } else if ([object isKindOfClass:[NSArray class]] && self.type == MJPropertyKeyTypeArray) {
18 | NSArray *array = object;
19 | NSUInteger index = self.name.intValue;
20 | if (index < array.count) return array[index];
21 | return nil;
22 | }
23 | return nil;
24 | }
25 | @end
26 |
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/MJPropertyType.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJPropertyType.h
3 | // MJExtension
4 | //
5 | // Created by mj on 14-1-15.
6 | // Copyright (c) 2014年 小码哥. All rights reserved.
7 | // 包装一种类型
8 |
9 | #import
10 |
11 | /**
12 | * 包装一种类型
13 | */
14 | @interface MJPropertyType : NSObject
15 | /** 类型标识符 */
16 | @property (nonatomic, copy) NSString *code;
17 |
18 | /** 是否为id类型 */
19 | @property (nonatomic, readonly, getter=isIdType) BOOL idType;
20 |
21 | /** 是否为基本数字类型:int、float等 */
22 | @property (nonatomic, readonly, getter=isNumberType) BOOL numberType;
23 |
24 | /** 是否为BOOL类型 */
25 | @property (nonatomic, readonly, getter=isBoolType) BOOL boolType;
26 |
27 | /** 对象类型(如果是基本数据类型,此值为nil) */
28 | @property (nonatomic, readonly) Class typeClass;
29 |
30 | /** 类型是否来自于Foundation框架,比如NSString、NSArray */
31 | @property (nonatomic, readonly, getter = isFromFoundation) BOOL fromFoundation;
32 | /** 类型是否不支持KVC */
33 | @property (nonatomic, readonly, getter = isKVCDisabled) BOOL KVCDisabled;
34 |
35 | /**
36 | * 获得缓存的类型对象
37 | */
38 | + (instancetype)cachedTypeWithCode:(NSString *)code;
39 | @end
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/NSObject+MJCoding.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+MJCoding.h
3 | // MJExtension
4 | //
5 | // Created by mj on 14-1-15.
6 | // Copyright (c) 2014年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MJExtensionConst.h"
11 |
12 | /**
13 | * Codeing协议
14 | */
15 | @protocol MJCoding
16 | @optional
17 | /**
18 | * 这个数组中的属性名才会进行归档
19 | */
20 | + (NSArray *)mj_allowedCodingPropertyNames;
21 | /**
22 | * 这个数组中的属性名将会被忽略:不进行归档
23 | */
24 | + (NSArray *)mj_ignoredCodingPropertyNames;
25 | @end
26 |
27 | @interface NSObject (MJCoding)
28 | /**
29 | * 解码(从文件中解析对象)
30 | */
31 | - (void)mj_decode:(NSCoder *)decoder;
32 | /**
33 | * 编码(将对象写入文件中)
34 | */
35 | - (void)mj_encode:(NSCoder *)encoder;
36 | @end
37 |
38 | /**
39 | 归档的实现
40 | */
41 | #define MJCodingImplementation \
42 | - (id)initWithCoder:(NSCoder *)decoder \
43 | { \
44 | if (self = [super init]) { \
45 | [self mj_decode:decoder]; \
46 | } \
47 | return self; \
48 | } \
49 | \
50 | - (void)encodeWithCoder:(NSCoder *)encoder \
51 | { \
52 | [self mj_encode:encoder]; \
53 | }
54 |
55 | #define MJExtensionCodingImplementation MJCodingImplementation
--------------------------------------------------------------------------------
/Pods/MJExtension/MJExtension/NSString+MJExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+MJExtension.h
3 | // MJExtensionExample
4 | //
5 | // Created by MJ Lee on 15/6/7.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MJExtensionConst.h"
11 |
12 | @interface NSString (MJExtension)
13 | /**
14 | * 驼峰转下划线(loveYou -> love_you)
15 | */
16 | - (NSString *)mj_underlineFromCamel;
17 | /**
18 | * 下划线转驼峰(love_you -> loveYou)
19 | */
20 | - (NSString *)mj_camelFromUnderline;
21 | /**
22 | * 首字母变大写
23 | */
24 | - (NSString *)mj_firstCharUpper;
25 | /**
26 | * 首字母变小写
27 | */
28 | - (NSString *)mj_firstCharLower;
29 |
30 | - (BOOL)mj_isPureInt;
31 |
32 | - (NSURL *)mj_url;
33 | @end
34 |
35 | @interface NSString (MJExtensionDeprecated_v_2_5_16)
36 | - (NSString *)underlineFromCamel MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
37 | - (NSString *)camelFromUnderline MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
38 | - (NSString *)firstCharUpper MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
39 | - (NSString *)firstCharLower MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
40 | - (BOOL)isPureInt MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
41 | - (NSURL *)url MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***");
42 | @end
43 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshFooter.h"
10 |
11 | @interface MJRefreshAutoFooter : MJRefreshFooter
12 | /** 是否自动刷新(默认为YES) */
13 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh;
14 |
15 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
16 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性");
17 |
18 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
19 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent;
20 | @end
21 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshFooter.h"
10 |
11 | @interface MJRefreshBackFooter : MJRefreshFooter
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // MJRefreshFooter.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/5.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 上拉刷新控件
9 |
10 | #import "MJRefreshComponent.h"
11 |
12 | @interface MJRefreshFooter : MJRefreshComponent
13 | /** 创建footer */
14 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
15 | /** 创建footer */
16 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
17 |
18 | /** 提示没有更多的数据 */
19 | - (void)endRefreshingWithNoMoreData;
20 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData");
21 |
22 | /** 重置没有更多的数据(消除没有更多数据的状态) */
23 | - (void)resetNoMoreData;
24 |
25 | /** 忽略多少scrollView的contentInset的bottom */
26 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom;
27 |
28 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */
29 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden MJRefreshDeprecated("不建议使用此属性,开发者请自行控制footer的显示和隐藏。基于安全考虑,在未来的某些版本此属性可能作废");
30 | @end
31 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // MJRefreshHeader.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/4.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 下拉刷新控件:负责监控用户下拉的状态
9 |
10 | #import "MJRefreshComponent.h"
11 |
12 | @interface MJRefreshHeader : MJRefreshComponent
13 | /** 创建header */
14 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
15 | /** 创建header */
16 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
17 |
18 | /** 这个key用来存储上一次下拉刷新成功的时间 */
19 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey;
20 | /** 上一次下拉刷新成功的时间 */
21 | @property (strong, nonatomic, readonly) NSDate *lastUpdatedTime;
22 |
23 | /** 忽略多少scrollView的contentInset的top */
24 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop;
25 | @end
26 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoGifFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoStateFooter.h"
10 |
11 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter
12 | @property (weak, nonatomic, readonly) UIImageView *gifView;
13 |
14 | /** 设置state状态下的动画图片images 动画持续时间duration*/
15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoNormalFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoStateFooter.h"
10 |
11 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter
12 | /** 菊花的样式 */
13 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle;
14 | @end
15 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoStateFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/6/13.
6 | // Copyright © 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoFooter.h"
10 |
11 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter
12 | /** 文字距离圈圈、箭头的距离 */
13 | @property (assign, nonatomic) CGFloat labelLeftInset;
14 | /** 显示刷新状态的label */
15 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
16 |
17 | /** 设置state状态下的文字 */
18 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
19 |
20 | /** 隐藏刷新状态的文字 */
21 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden;
22 | @end
23 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackGifFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackStateFooter.h"
10 |
11 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter
12 | @property (weak, nonatomic, readonly) UIImageView *gifView;
13 |
14 | /** 设置state状态下的动画图片images 动画持续时间duration*/
15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackNormalFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackStateFooter.h"
10 |
11 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter
12 | @property (weak, nonatomic, readonly) UIImageView *arrowView;
13 | /** 菊花的样式 */
14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle;
15 | @end
16 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackStateFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/6/13.
6 | // Copyright © 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackFooter.h"
10 |
11 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter
12 | /** 文字距离圈圈、箭头的距离 */
13 | @property (assign, nonatomic) CGFloat labelLeftInset;
14 | /** 显示刷新状态的label */
15 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
16 | /** 设置state状态下的文字 */
17 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
18 |
19 | /** 获取state状态下的title */
20 | - (NSString *)titleForState:(MJRefreshState)state;
21 | @end
22 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshGifHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshStateHeader.h"
10 |
11 | @interface MJRefreshGifHeader : MJRefreshStateHeader
12 | @property (weak, nonatomic, readonly) UIImageView *gifView;
13 |
14 | /** 设置state状态下的动画图片images 动画持续时间duration*/
15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshNormalHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshStateHeader.h"
10 |
11 | @interface MJRefreshNormalHeader : MJRefreshStateHeader
12 | @property (weak, nonatomic, readonly) UIImageView *arrowView;
13 | /** 菊花的样式 */
14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle;
15 | @end
16 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshStateHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshHeader.h"
10 |
11 | @interface MJRefreshStateHeader : MJRefreshHeader
12 | #pragma mark - 刷新时间相关
13 | /** 利用这个block来决定显示的更新时间文字 */
14 | @property (copy, nonatomic) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime);
15 | /** 显示上一次刷新时间的label */
16 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel;
17 |
18 | #pragma mark - 状态相关
19 | /** 文字距离圈圈、箭头的距离 */
20 | @property (assign, nonatomic) CGFloat labelLeftInset;
21 | /** 显示刷新状态的label */
22 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
23 | /** 设置state状态下的文字 */
24 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
25 | @end
26 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hant.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "MJRefreshHeaderIdleText" = "下拉可以刷新";
2 | "MJRefreshHeaderPullingText" = "鬆開立即刷新";
3 | "MJRefreshHeaderRefreshingText" = "正在刷新數據中...";
4 |
5 | "MJRefreshAutoFooterIdleText" = "點擊或上拉加載更多";
6 | "MJRefreshAutoFooterRefreshingText" = "正在加載更多的數據...";
7 | "MJRefreshAutoFooterNoMoreDataText" = "已經全部加載完畢";
8 |
9 | "MJRefreshBackFooterIdleText" = "上拉可以加載更多";
10 | "MJRefreshBackFooterPullingText" = "鬆開立即加載更多";
11 | "MJRefreshBackFooterRefreshingText" = "正在加載更多的數據...";
12 | "MJRefreshBackFooterNoMoreDataText" = "已經全部加載完畢";
13 |
14 | "MJRefreshHeaderLastTimeText" = "最後更新:";
15 | "MJRefreshHeaderDateTodayText" = "今天";
16 | "MJRefreshHeaderNoneLastDateText" = "無記錄";
17 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/MJRefresh.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 |
4 | #import "UIScrollView+MJRefresh.h"
5 | #import "UIScrollView+MJExtension.h"
6 | #import "UIView+MJExtension.h"
7 |
8 | #import "MJRefreshNormalHeader.h"
9 | #import "MJRefreshGifHeader.h"
10 |
11 | #import "MJRefreshBackNormalFooter.h"
12 | #import "MJRefreshBackGifFooter.h"
13 | #import "MJRefreshAutoNormalFooter.h"
14 | #import "MJRefreshAutoGifFooter.h"
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSBundle+MJRefresh.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 16/6/13.
6 | // Copyright © 2016年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSBundle (MJRefresh)
12 | + (instancetype)mj_refreshBundle;
13 | + (UIImage *)mj_arrowImage;
14 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value;
15 | + (NSString *)mj_localizedStringForKey:(NSString *)key;
16 | @end
17 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIScrollView+Extension.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 14-5-28.
7 | // Copyright (c) 2014年 小码哥. All rights reserved.
8 | //
9 |
10 | #import
11 |
12 | @interface UIScrollView (MJExtension)
13 | @property (readonly, nonatomic) UIEdgeInsets mj_inset;
14 |
15 | @property (assign, nonatomic) CGFloat mj_insetT;
16 | @property (assign, nonatomic) CGFloat mj_insetB;
17 | @property (assign, nonatomic) CGFloat mj_insetL;
18 | @property (assign, nonatomic) CGFloat mj_insetR;
19 |
20 | @property (assign, nonatomic) CGFloat mj_offsetX;
21 | @property (assign, nonatomic) CGFloat mj_offsetY;
22 |
23 | @property (assign, nonatomic) CGFloat mj_contentW;
24 | @property (assign, nonatomic) CGFloat mj_contentH;
25 | @end
26 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/UIScrollView+MJRefresh.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIScrollView+MJRefresh.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/4.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 给ScrollView增加下拉刷新、上拉刷新的功能
9 |
10 | #import
11 | #import "MJRefreshConst.h"
12 |
13 | @class MJRefreshHeader, MJRefreshFooter;
14 |
15 | @interface UIScrollView (MJRefresh)
16 | /** 下拉刷新控件 */
17 | @property (strong, nonatomic) MJRefreshHeader *mj_header;
18 | @property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header");
19 | /** 上拉刷新控件 */
20 | @property (strong, nonatomic) MJRefreshFooter *mj_footer;
21 | @property (strong, nonatomic) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer");
22 |
23 | #pragma mark - other
24 | - (NSInteger)mj_totalDataCount;
25 | @property (copy, nonatomic) void (^mj_reloadDataBlock)(NSInteger totalDataCount);
26 | @end
27 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/UIView+MJExtension.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIView+Extension.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 14-5-28.
7 | // Copyright (c) 2014年 小码哥. All rights reserved.
8 | //
9 |
10 | #import
11 |
12 | @interface UIView (MJExtension)
13 | @property (assign, nonatomic) CGFloat mj_x;
14 | @property (assign, nonatomic) CGFloat mj_y;
15 | @property (assign, nonatomic) CGFloat mj_w;
16 | @property (assign, nonatomic) CGFloat mj_h;
17 | @property (assign, nonatomic) CGSize mj_size;
18 | @property (assign, nonatomic) CGPoint mj_origin;
19 | @end
20 |
--------------------------------------------------------------------------------
/Pods/MJRefresh/MJRefresh/UIView+MJExtension.m:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIView+Extension.m
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 14-5-28.
7 | // Copyright (c) 2014年 小码哥. All rights reserved.
8 | //
9 |
10 | #import "UIView+MJExtension.h"
11 |
12 | @implementation UIView (MJExtension)
13 | - (void)setMj_x:(CGFloat)mj_x
14 | {
15 | CGRect frame = self.frame;
16 | frame.origin.x = mj_x;
17 | self.frame = frame;
18 | }
19 |
20 | - (CGFloat)mj_x
21 | {
22 | return self.frame.origin.x;
23 | }
24 |
25 | - (void)setMj_y:(CGFloat)mj_y
26 | {
27 | CGRect frame = self.frame;
28 | frame.origin.y = mj_y;
29 | self.frame = frame;
30 | }
31 |
32 | - (CGFloat)mj_y
33 | {
34 | return self.frame.origin.y;
35 | }
36 |
37 | - (void)setMj_w:(CGFloat)mj_w
38 | {
39 | CGRect frame = self.frame;
40 | frame.size.width = mj_w;
41 | self.frame = frame;
42 | }
43 |
44 | - (CGFloat)mj_w
45 | {
46 | return self.frame.size.width;
47 | }
48 |
49 | - (void)setMj_h:(CGFloat)mj_h
50 | {
51 | CGRect frame = self.frame;
52 | frame.size.height = mj_h;
53 | self.frame = frame;
54 | }
55 |
56 | - (CGFloat)mj_h
57 | {
58 | return self.frame.size.height;
59 | }
60 |
61 | - (void)setMj_size:(CGSize)mj_size
62 | {
63 | CGRect frame = self.frame;
64 | frame.size = mj_size;
65 | self.frame = frame;
66 | }
67 |
68 | - (CGSize)mj_size
69 | {
70 | return self.frame.size;
71 | }
72 |
73 | - (void)setMj_origin:(CGPoint)mj_origin
74 | {
75 | CGRect frame = self.frame;
76 | frame.origin = mj_origin;
77 | self.frame = frame;
78 | }
79 |
80 | - (CGPoint)mj_origin
81 | {
82 | return self.frame.origin;
83 | }
84 | @end
85 |
--------------------------------------------------------------------------------
/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - MJExtension (3.0.13)
3 | - MJRefresh (3.1.15.1)
4 | - RollingNotice (1.0.2)
5 | - SDCycleScrollView (1.75):
6 | - SDWebImage (>= 4.0.0)
7 | - SDWebImage (4.2.3):
8 | - SDWebImage/Core (= 4.2.3)
9 | - SDWebImage/Core (4.2.3)
10 |
11 | DEPENDENCIES:
12 | - MJExtension
13 | - MJRefresh
14 | - RollingNotice
15 | - SDCycleScrollView
16 |
17 | SPEC REPOS:
18 | https://github.com/CocoaPods/Specs.git:
19 | - MJExtension
20 | - MJRefresh
21 | - RollingNotice
22 | - SDCycleScrollView
23 | - SDWebImage
24 |
25 | SPEC CHECKSUMS:
26 | MJExtension: 5932755f451458eefa24239358817f8d291240c7
27 | MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6
28 | RollingNotice: 792a2712563d00191eb519c86b4825401a302c51
29 | SDCycleScrollView: 884b88f0266dd4708a0e1934975c69cb971707b1
30 | SDWebImage: 791bb72962b3492327ddcac4b1880bd1b5458431
31 |
32 | PODFILE CHECKSUM: 682ec247d0702751b72e8d7999d0466c98f6a556
33 |
34 | COCOAPODS: 1.9.1
35 |
--------------------------------------------------------------------------------
/Pods/RollingNotice/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 maltsugar <173678978@qq.com>
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in 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/RollingNotice/README.md:
--------------------------------------------------------------------------------
1 | # Rolling Notice、Rolling Advertisement
2 |    
3 | ### Introduce[中文介绍](https://github.com/maltsugar/RollingNotice/blob/master/README_Zh.md)
4 | This library can scroll any view, scroll up and down the notice, advertising. You only need to customize the view and assin value according index, roll will be done by it!
5 |
6 | It can be very flexible, similar to UITableViewCell.
7 | According to the design concept of UITableView, rolling cells support reuse, up to two cells will be allocated.
8 |
9 |
10 | ### Usage
11 | - manual: drag `GYRollingNoticeView` in your project
12 | - Cocoapods: `pod 'RollingNotice', '~> 1.0.2'`
13 |
14 | **customized cell must inherit `GYNoticeViewCell`.**
15 |
16 | For more details, see the demo project. Just similar as UITableView.
17 |
18 |
19 | 
20 | ### License
21 | GYRollingNoticeView is provided under the MIT license. See LICENSE file for details.
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Pods/RollingNotice/RollingNotice/GYRollingNoticeView/GYNoticeViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // GYNoticeViewCell.h
3 | // RollingNotice
4 | //
5 | // Created by qm on 2017/12/4.
6 | // Copyright © 2017年 qm. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface GYNoticeViewCell : UIView
12 |
13 | @property (nonatomic, readonly, strong) UIView *contentView;
14 | @property (nonatomic, readonly, strong) UILabel *textLabel;
15 | @property (nonatomic, readonly, copy) NSString *reuseIdentifier;
16 |
17 | - (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier NS_DESIGNATED_INITIALIZER;
18 | - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
19 | @end
20 |
--------------------------------------------------------------------------------
/Pods/RollingNotice/RollingNotice/GYRollingNoticeView/GYNoticeViewCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // GYNoticeViewCell.m
3 | // RollingNotice
4 | //
5 | // Created by qm on 2017/12/4.
6 | // Copyright © 2017年 qm. All rights reserved.
7 | //
8 |
9 | #import "GYNoticeViewCell.h"
10 |
11 | @implementation GYNoticeViewCell
12 |
13 | - (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier
14 | {
15 | self = [super initWithFrame:CGRectZero];
16 | if (self) {
17 | NSLog(@"init a cell from code: %p", self);
18 | _reuseIdentifier = reuseIdentifier;
19 | [self setupInitialUI];
20 | }
21 | return self;
22 | }
23 |
24 | - (instancetype)initWithCoder:(NSCoder *)aDecoder
25 | {
26 | self = [super initWithCoder:aDecoder];
27 | if (self) {
28 | NSLog(@"init a cell from xib");
29 | }
30 | return self;
31 | }
32 | - (instancetype)initWithFrame:(CGRect)frame
33 | {
34 | return [self initWithReuseIdentifier:@""];
35 | }
36 |
37 | - (void)setupInitialUI
38 | {
39 | self.backgroundColor = [UIColor whiteColor];
40 | _contentView = [[UIView alloc] init];
41 | [self addSubview:_contentView];
42 |
43 | _textLabel = [[UILabel alloc]init];
44 | [_contentView addSubview:_textLabel];
45 | }
46 |
47 |
48 | - (void)layoutSubviews
49 | {
50 | [super layoutSubviews];
51 | _contentView.frame = self.bounds;
52 | _textLabel.frame = CGRectMake(10, 0, self.frame.size.width - 20, self.frame.size.height);
53 | }
54 |
55 | - (void)dealloc
56 | {
57 | NSLog(@"%p, %s", self, __func__);
58 | }
59 |
60 |
61 | @end
62 |
--------------------------------------------------------------------------------
/Pods/RollingNotice/RollingNotice/GYRollingNoticeView/GYRollingNoticeView.h:
--------------------------------------------------------------------------------
1 | //
2 | // GYRollingNoticeView.h
3 | // RollingNotice
4 | //
5 | // Created by qm on 2017/12/4.
6 | // Copyright © 2017年 qm. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "GYNoticeViewCell.h"
11 |
12 | @class GYRollingNoticeView;
13 | @protocol GYRollingNoticeViewDataSource
14 | @required
15 | - (NSInteger)numberOfRowsForRollingNoticeView:(GYRollingNoticeView *)rollingView;
16 | - (GYNoticeViewCell *)rollingNoticeView:(GYRollingNoticeView *)rollingView cellAtIndex:(NSUInteger)index;
17 | @end
18 |
19 | @protocol GYRollingNoticeViewDelegate
20 | @optional
21 | - (void)didClickRollingNoticeView:(GYRollingNoticeView *)rollingView forIndex:(NSUInteger)index;
22 |
23 | @end
24 |
25 |
26 | @interface GYRollingNoticeView : UIView
27 |
28 |
29 | @property (nonatomic, assign) id dataSource;
30 | @property (nonatomic, assign) id delegate;
31 | @property (nonatomic, assign) NSTimeInterval stayInterval; // 停留时间 默认2秒
32 |
33 | - (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier;
34 | - (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier;
35 | - (__kindof GYNoticeViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier;
36 |
37 | - (void)reloadDataAndStartRoll;
38 | - (void)stopRoll; // 在合适的地方停止timer。 you must stop it when not use,for example '-viewDidDismiss'
39 |
40 |
41 | @end
42 |
--------------------------------------------------------------------------------
/Pods/SDCycleScrollView/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 GSD_iOS
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/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAbstractDotView.h:
--------------------------------------------------------------------------------
1 | //
2 | // TAAbstractDotView.h
3 | // TAPageControl
4 | //
5 | // Created by Tanguy Aladenise on 2015-01-22.
6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface TAAbstractDotView : UIView
13 |
14 |
15 | /**
16 | * A method call let view know which state appearance it should take. Active meaning it's current page. Inactive not the current page.
17 | *
18 | * @param active BOOL to tell if view is active or not
19 | */
20 | - (void)changeActivityState:(BOOL)active;
21 |
22 |
23 | @end
24 |
25 |
--------------------------------------------------------------------------------
/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAbstractDotView.m:
--------------------------------------------------------------------------------
1 | //
2 | // TAAbstractDotView.m
3 | // TAPageControl
4 | //
5 | // Created by Tanguy Aladenise on 2015-01-22.
6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
7 | //
8 |
9 | #import "TAAbstractDotView.h"
10 |
11 |
12 | @implementation TAAbstractDotView
13 |
14 |
15 | - (id)init
16 | {
17 | @throw [NSException exceptionWithName:NSInternalInconsistencyException
18 | reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class]
19 | userInfo:nil];
20 | }
21 |
22 |
23 | - (void)changeActivityState:(BOOL)active
24 | {
25 | @throw [NSException exceptionWithName:NSInternalInconsistencyException
26 | reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class]
27 | userInfo:nil];
28 | }
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAnimatedDotView.h:
--------------------------------------------------------------------------------
1 | //
2 | // TAAnimatedDotView.h
3 | // TAPageControl
4 | //
5 | // Created by Tanguy Aladenise on 2015-01-22.
6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
7 | //
8 |
9 | #import "TAAbstractDotView.h"
10 |
11 | @interface TAAnimatedDotView : TAAbstractDotView
12 |
13 | @property (nonatomic, strong) UIColor *dotColor;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TADotView.h:
--------------------------------------------------------------------------------
1 | //
2 | // TADotView.h
3 | // TAPageControl
4 | //
5 | // Created by Tanguy Aladenise on 2015-01-22.
6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
7 | //
8 |
9 | #import "TAAbstractDotView.h"
10 |
11 | @interface TADotView : TAAbstractDotView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TADotView.m:
--------------------------------------------------------------------------------
1 | //
2 | // TADotView.m
3 | // TAPageControl
4 | //
5 | // Created by Tanguy Aladenise on 2015-01-22.
6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved.
7 | //
8 |
9 | #import "TADotView.h"
10 |
11 | @implementation TADotView
12 |
13 |
14 | - (instancetype)init
15 | {
16 | self = [super init];
17 | if (self) {
18 | [self initialization];
19 | }
20 |
21 | return self;
22 | }
23 |
24 |
25 | - (id)initWithFrame:(CGRect)frame
26 | {
27 | self = [super initWithFrame:frame];
28 | if (self) {
29 | [self initialization];
30 | }
31 | return self;
32 | }
33 |
34 |
35 | - (id)initWithCoder:(NSCoder *)aDecoder
36 | {
37 | self = [super initWithCoder:aDecoder];
38 | if (self) {
39 | [self initialization];
40 | }
41 |
42 | return self;
43 | }
44 |
45 | - (void)initialization
46 | {
47 | self.backgroundColor = [UIColor clearColor];
48 | self.layer.cornerRadius = CGRectGetWidth(self.frame) / 2;
49 | self.layer.borderColor = [UIColor whiteColor].CGColor;
50 | self.layer.borderWidth = 2;
51 | }
52 |
53 |
54 | - (void)changeActivityState:(BOOL)active
55 | {
56 | if (active) {
57 | self.backgroundColor = [UIColor whiteColor];
58 | } else {
59 | self.backgroundColor = [UIColor clearColor];
60 | }
61 | }
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCollectionViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // SDCollectionViewCell.h
3 | // SDCycleScrollView
4 | //
5 | // Created by aier on 15-3-22.
6 | // Copyright (c) 2015年 GSD. All rights reserved.
7 | //
8 |
9 | /*
10 |
11 | *********************************************************************************
12 | *
13 | * 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟
14 | *
15 | * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并
16 | * 帮您解决问题。
17 | * 新浪微博:GSD_iOS
18 | * Email : gsdios@126.com
19 | * GitHub: https://github.com/gsdios
20 | *
21 | * 另(我的自动布局库SDAutoLayout):
22 | * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于
23 | * 做最简单易用的AutoLayout库。
24 | * 视频教程:http://www.letv.com/ptv/vplay/24038772.html
25 | * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md
26 | * GitHub:https://github.com/gsdios/SDAutoLayout
27 | *********************************************************************************
28 |
29 | */
30 |
31 |
32 |
33 | #import
34 |
35 | @interface SDCollectionViewCell : UICollectionViewCell
36 |
37 | @property (weak, nonatomic) UIImageView *imageView;
38 | @property (copy, nonatomic) NSString *title;
39 |
40 | @property (nonatomic, strong) UIColor *titleLabelTextColor;
41 | @property (nonatomic, strong) UIFont *titleLabelTextFont;
42 | @property (nonatomic, strong) UIColor *titleLabelBackgroundColor;
43 | @property (nonatomic, assign) CGFloat titleLabelHeight;
44 | @property (nonatomic, assign) NSTextAlignment titleLabelTextAlignment;
45 |
46 | @property (nonatomic, assign) BOOL hasConfigured;
47 |
48 | /** 只展示文字轮播 */
49 | @property (nonatomic, assign) BOOL onlyDisplayText;
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/UIView+SDExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+SDExtension.h
3 | // SDRefreshView
4 | //
5 | // Created by aier on 15-2-23.
6 | // Copyright (c) 2015年 GSD. All rights reserved.
7 | //
8 |
9 | /*
10 |
11 | *********************************************************************************
12 | *
13 | * 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟
14 | *
15 | * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并
16 | * 帮您解决问题。
17 | * 新浪微博:GSD_iOS
18 | * Email : gsdios@126.com
19 | * GitHub: https://github.com/gsdios
20 | *
21 | * 另(我的自动布局库SDAutoLayout):
22 | * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于
23 | * 做最简单易用的AutoLayout库。
24 | * 视频教程:http://www.letv.com/ptv/vplay/24038772.html
25 | * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md
26 | * GitHub:https://github.com/gsdios/SDAutoLayout
27 | *********************************************************************************
28 |
29 | */
30 |
31 | #import
32 |
33 | #define SDColorCreater(r, g, b, a) [UIColor colorWithRed:(r / 255.0) green:(g / 255.0) blue:(b / 255.0) alpha:a]
34 |
35 |
36 | @interface UIView (SDExtension)
37 |
38 | @property (nonatomic, assign) CGFloat sd_height;
39 | @property (nonatomic, assign) CGFloat sd_width;
40 |
41 | @property (nonatomic, assign) CGFloat sd_y;
42 | @property (nonatomic, assign) CGFloat sd_x;
43 |
44 | @end
45 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com
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 furnished
8 | to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | 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 |
21 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Fabrice Aneche
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import
11 | #import "SDWebImageCompat.h"
12 |
13 | typedef NS_ENUM(NSInteger, SDImageFormat) {
14 | SDImageFormatUndefined = -1,
15 | SDImageFormatJPEG = 0,
16 | SDImageFormatPNG,
17 | SDImageFormatGIF,
18 | SDImageFormatTIFF,
19 | SDImageFormatWebP,
20 | SDImageFormatHEIC
21 | };
22 |
23 | @interface NSData (ImageContentType)
24 |
25 | /**
26 | * Return image format
27 | *
28 | * @param data the input image data
29 | *
30 | * @return the image format as `SDImageFormat` (enum)
31 | */
32 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data;
33 |
34 | /**
35 | Convert SDImageFormat to UTType
36 |
37 | @param format Format as SDImageFormat
38 | @return The UTType as CFStringRef
39 | */
40 | + (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format;
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/NSImage+WebCache.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_MAC
12 |
13 | #import
14 |
15 | @interface NSImage (WebCache)
16 |
17 | - (CGImageRef)CGImage;
18 | - (NSArray *)images;
19 | - (BOOL)isGIF;
20 |
21 | @end
22 |
23 | #endif
24 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/NSImage+WebCache.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "NSImage+WebCache.h"
10 |
11 | #if SD_MAC
12 |
13 | @implementation NSImage (WebCache)
14 |
15 | - (CGImageRef)CGImage {
16 | NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height);
17 | CGImageRef cgImage = [self CGImageForProposedRect:&imageRect context:NULL hints:nil];
18 | return cgImage;
19 | }
20 |
21 | - (NSArray *)images {
22 | return nil;
23 | }
24 |
25 | - (BOOL)isGIF {
26 | BOOL isGIF = NO;
27 | for (NSImageRep *rep in self.representations) {
28 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) {
29 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep;
30 | NSUInteger frameCount = [[bitmapRep valueForProperty:NSImageFrameCount] unsignedIntegerValue];
31 | isGIF = frameCount > 1 ? YES : NO;
32 | break;
33 | }
34 | }
35 | return isGIF;
36 | }
37 |
38 | @end
39 |
40 | #endif
41 |
42 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | @interface SDImageCacheConfig : NSObject
13 |
14 | /**
15 | * Decompressing images that are downloaded and cached can improve performance but can consume lot of memory.
16 | * Defaults to YES. Set this to NO if you are experiencing a crash due to excessive memory consumption.
17 | */
18 | @property (assign, nonatomic) BOOL shouldDecompressImages;
19 |
20 | /**
21 | * disable iCloud backup [defaults to YES]
22 | */
23 | @property (assign, nonatomic) BOOL shouldDisableiCloud;
24 |
25 | /**
26 | * use memory cache [defaults to YES]
27 | */
28 | @property (assign, nonatomic) BOOL shouldCacheImagesInMemory;
29 |
30 | /**
31 | * The reading options while reading cache from disk.
32 | * Defaults to 0. You can set this to mapped file to improve performance.
33 | */
34 | @property (assign, nonatomic) NSDataReadingOptions diskCacheReadingOptions;
35 |
36 | /**
37 | * The maximum length of time to keep an image in the cache, in seconds.
38 | */
39 | @property (assign, nonatomic) NSInteger maxCacheAge;
40 |
41 | /**
42 | * The maximum size of the cache, in bytes.
43 | */
44 | @property (assign, nonatomic) NSUInteger maxCacheSize;
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDImageCacheConfig.h"
10 |
11 | static const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week
12 |
13 | @implementation SDImageCacheConfig
14 |
15 | - (instancetype)init {
16 | if (self = [super init]) {
17 | _shouldDecompressImages = YES;
18 | _shouldDisableiCloud = YES;
19 | _shouldCacheImagesInMemory = YES;
20 | _diskCacheReadingOptions = 0;
21 | _maxCacheAge = kDefaultCacheMaxCacheAge;
22 | _maxCacheSize = 0;
23 | }
24 | return self;
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/SDWebImageCoder.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCoder.h"
10 |
11 | NSString * const SDWebImageCoderScaleDownLargeImagesKey = @"scaleDownLargeImages";
12 |
13 | CGColorSpaceRef SDCGColorSpaceGetDeviceRGB(void) {
14 | static CGColorSpaceRef colorSpace;
15 | static dispatch_once_t onceToken;
16 | dispatch_once(&onceToken, ^{
17 | colorSpace = CGColorSpaceCreateDeviceRGB();
18 | });
19 | return colorSpace;
20 | }
21 |
22 | BOOL SDCGImageRefContainsAlpha(CGImageRef imageRef) {
23 | if (!imageRef) {
24 | return NO;
25 | }
26 | CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef);
27 | BOOL hasAlpha = !(alphaInfo == kCGImageAlphaNone ||
28 | alphaInfo == kCGImageAlphaNoneSkipFirst ||
29 | alphaInfo == kCGImageAlphaNoneSkipLast);
30 | return hasAlpha;
31 | }
32 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/SDWebImageFrame.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | @interface SDWebImageFrame : NSObject
13 |
14 | // This class is used for creating animated images via `animatedImageWithFrames` in `SDWebImageCoderHelper`. Attension if you need animated images loop count, use `sd_imageLoopCount` property in `UIImage+MultiFormat`
15 |
16 | /**
17 | The image of current frame. You should not set an animated image.
18 | */
19 | @property (nonatomic, strong, readonly, nonnull) UIImage *image;
20 | /**
21 | The duration of current frame to be displayed. The number is seconds but not milliseconds. You should not set this to zero.
22 | */
23 | @property (nonatomic, readonly, assign) NSTimeInterval duration;
24 |
25 | /**
26 | Create a frame instance with specify image and duration
27 |
28 | @param image current frame's image
29 | @param duration current frame's duration
30 | @return frame instance
31 | */
32 | + (instancetype _Nonnull)frameWithImage:(UIImage * _Nonnull)image duration:(NSTimeInterval)duration;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/SDWebImageFrame.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageFrame.h"
10 |
11 | @interface SDWebImageFrame ()
12 |
13 | @property (nonatomic, strong, readwrite, nonnull) UIImage *image;
14 | @property (nonatomic, readwrite, assign) NSTimeInterval duration;
15 |
16 | @end
17 |
18 | @implementation SDWebImageFrame
19 |
20 | + (instancetype)frameWithImage:(UIImage *)image duration:(NSTimeInterval)duration {
21 | SDWebImageFrame *frame = [[SDWebImageFrame alloc] init];
22 | frame.image = image;
23 | frame.duration = duration;
24 |
25 | return frame;
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/SDWebImageGIFCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCoder.h"
11 |
12 | /**
13 | Built in coder using ImageIO that supports GIF encoding/decoding
14 | @note `SDWebImageIOCoder` supports GIF but only as static (will use the 1st frame).
15 | @note Use `SDWebImageGIFCoder` for fully animated GIFs - less performant than `FLAnimatedImage`
16 | @note If you decide to make all `UIImageView`(including `FLAnimatedImageView`) instance support GIF. You should add this coder to `SDWebImageCodersManager` and make sure that it has a higher priority than `SDWebImageIOCoder`
17 | @note The recommended approach for animated GIFs is using `FLAnimatedImage`. It's more performant than `UIImageView` for GIF displaying
18 | */
19 | @interface SDWebImageGIFCoder : NSObject
20 |
21 | + (nonnull instancetype)sharedCoder;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/SDWebImageImageIOCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCoder.h"
11 |
12 | /**
13 | Built in coder that supports PNG, JPEG, TIFF, includes support for progressive decoding.
14 |
15 | GIF
16 | Also supports static GIF (meaning will only handle the 1st frame).
17 | For a full GIF support, we recommend `FLAnimatedImage` or our less performant `SDWebImageGIFCoder`
18 |
19 | HEIC
20 | This coder also supports HEIC format because ImageIO supports it natively. But it depends on the system capabilities, so it won't work on all devices, see: https://devstreaming-cdn.apple.com/videos/wwdc/2017/511tj33587vdhds/511/511_working_with_heif_and_hevc.pdf
21 | Decode(Software): !Simulator && (iOS 11 || tvOS 11 || macOS 10.13)
22 | Decode(Hardware): !Simulator && ((iOS 11 && A9Chip) || (macOS 10.13 && 6thGenerationIntelCPU))
23 | Encode(Software): macOS 10.13
24 | Encode(Hardware): !Simulator && ((iOS 11 && A10FusionChip) || (macOS 10.13 && 6thGenerationIntelCPU))
25 | */
26 | @interface SDWebImageImageIOCoder : NSObject
27 |
28 | + (nonnull instancetype)sharedCoder;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | @protocol SDWebImageOperation
12 |
13 | - (void)cancel;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | @interface UIImage (ForceDecode)
12 |
13 | + (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image;
14 |
15 | + (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImage+ForceDecode.h"
10 | #import "SDWebImageCodersManager.h"
11 |
12 | @implementation UIImage (ForceDecode)
13 |
14 | + (UIImage *)decodedImageWithImage:(UIImage *)image {
15 | if (!image) {
16 | return nil;
17 | }
18 | NSData *tempData;
19 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(NO)}];
20 | }
21 |
22 | + (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image {
23 | if (!image) {
24 | return nil;
25 | }
26 | NSData *tempData;
27 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(YES)}];
28 | }
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Laurin Brandner
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "SDWebImageCompat.h"
11 |
12 | @interface UIImage (GIF)
13 |
14 | /**
15 | * Creates an animated UIImage from an NSData.
16 | * For static GIF, will create an UIImage with `images` array set to nil. For animated GIF, will create an UIImage with valid `images` array.
17 | */
18 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data;
19 |
20 | /**
21 | * Checks if an UIImage instance is a GIF. Will use the `images` array.
22 | */
23 | - (BOOL)isGIF;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/UIImage+GIF.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Laurin Brandner
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "UIImage+GIF.h"
11 | #import "SDWebImageGIFCoder.h"
12 | #import "NSImage+WebCache.h"
13 |
14 | @implementation UIImage (GIF)
15 |
16 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data {
17 | if (!data) {
18 | return nil;
19 | }
20 | return [[SDWebImageGIFCoder sharedCoder] decodedImageWithData:data];
21 | }
22 |
23 | - (BOOL)isGIF {
24 | return (self.images != nil);
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 | #import "NSData+ImageContentType.h"
11 |
12 | @interface UIImage (MultiFormat)
13 |
14 | /**
15 | * UIKit:
16 | * For static image format, this value is always 0.
17 | * For animated image format, 0 means infinite looping.
18 | * Note that because of the limitations of categories this property can get out of sync if you create another instance with CGImage or other methods.
19 | * AppKit:
20 | * NSImage currently only support animated via GIF imageRep unlike UIImage.
21 | * The getter of this property will get the loop count from GIF imageRep
22 | * The setter of this property will set the loop count from GIF imageRep
23 | */
24 | @property (nonatomic, assign) NSUInteger sd_imageLoopCount;
25 |
26 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data;
27 | - (nullable NSData *)sd_imageData;
28 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "SDWebImageManager.h"
14 |
15 | // These methods are used to support canceling for UIView image loading, it's designed to be used internal but not external.
16 | // All the stored operations are weak, so it will be dalloced after image loading finished. If you need to store operations, use your own class to keep a strong reference for them.
17 | @interface UIView (WebCacheOperation)
18 |
19 | /**
20 | * Set the image load operation (storage in a UIView based weak map table)
21 | *
22 | * @param operation the operation
23 | * @param key key for storing the operation
24 | */
25 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key;
26 |
27 | /**
28 | * Cancel all operations for the current UIView and key
29 | *
30 | * @param key key for identifying the operations
31 | */
32 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key;
33 |
34 | /**
35 | * Just remove the operations corresponding to the current UIView and key without cancelling them
36 | *
37 | * @param key key for identifying the operations
38 | */
39 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key;
40 |
41 | @end
42 |
43 | #endif
44 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJExtension/MJExtension-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_MJExtension : NSObject
3 | @end
4 | @implementation PodsDummy_MJExtension
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJExtension/MJExtension-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJExtension/MJExtension.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJExtension
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJExtension" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJExtension"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJExtension
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJExtension/MJExtension.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJExtension
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJExtension" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJExtension"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJExtension
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_MJRefresh : NSObject
3 | @end
4 | @implementation PodsDummy_MJRefresh
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJRefresh" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJRefresh"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/MJRefresh/MJRefresh.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJRefresh" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJRefresh"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_CFStreamingVideo : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_CFStreamingVideo
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-frameworks-Debug-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework
3 | ${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework
4 | ${BUILT_PRODUCTS_DIR}/RollingNotice/RollingNotice.framework
5 | ${BUILT_PRODUCTS_DIR}/SDCycleScrollView/SDCycleScrollView.framework
6 | ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-frameworks-Debug-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RollingNotice.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDCycleScrollView.framework
5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-frameworks-Release-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework
3 | ${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework
4 | ${BUILT_PRODUCTS_DIR}/RollingNotice/RollingNotice.framework
5 | ${BUILT_PRODUCTS_DIR}/SDCycleScrollView/SDCycleScrollView.framework
6 | ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-frameworks-Release-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RollingNotice.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDCycleScrollView.framework
5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-resources-Debug-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-resources.sh
2 | ${PODS_ROOT}/MJRefresh/MJRefresh/MJRefresh.bundle
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-resources-Debug-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MJRefresh.bundle
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-resources-Release-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-resources.sh
2 | ${PODS_ROOT}/MJRefresh/MJRefresh/MJRefresh.bundle
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-resources-Release-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MJRefresh.bundle
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_CFStreamingVideoVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_CFStreamingVideoVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo.debug.xcconfig:
--------------------------------------------------------------------------------
1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/RollingNotice" "${PODS_ROOT}/Headers/Public/SDCycleScrollView" "${PODS_ROOT}/Headers/Public/SDWebImage"
3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/RollingNotice" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage"
4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"MJExtension" -l"MJRefresh" -l"RollingNotice" -l"SDCycleScrollView" -l"SDWebImage" -framework "ImageIO" -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
8 | PODS_ROOT = ${SRCROOT}/Pods
9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
10 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_CFStreamingVideo {
2 | umbrella header "Pods-CFStreamingVideo-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-CFStreamingVideo/Pods-CFStreamingVideo.release.xcconfig:
--------------------------------------------------------------------------------
1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJExtension" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/RollingNotice" "${PODS_ROOT}/Headers/Public/SDCycleScrollView" "${PODS_ROOT}/Headers/Public/SDWebImage"
3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/RollingNotice" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage"
4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"MJExtension" -l"MJRefresh" -l"RollingNotice" -l"SDCycleScrollView" -l"SDWebImage" -framework "ImageIO" -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
8 | PODS_ROOT = ${SRCROOT}/Pods
9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
10 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RollingNotice/RollingNotice-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_RollingNotice : NSObject
3 | @end
4 | @implementation PodsDummy_RollingNotice
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RollingNotice/RollingNotice-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RollingNotice/RollingNotice.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RollingNotice
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RollingNotice" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RollingNotice"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RollingNotice
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/RollingNotice/RollingNotice.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RollingNotice
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RollingNotice" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RollingNotice"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RollingNotice
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDCycleScrollView : NSObject
3 | @end
4 | @implementation PodsDummy_SDCycleScrollView
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDCycleScrollView" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDCycleScrollView" "${PODS_ROOT}/Headers/Public/SDWebImage"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDCycleScrollView
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDCycleScrollView" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDCycleScrollView" "${PODS_ROOT}/Headers/Public/SDWebImage"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDCycleScrollView
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDWebImage"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDWebImage"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/演示图/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/演示图/.DS_Store
--------------------------------------------------------------------------------
/演示图/演示图1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/演示图/演示图1.gif
--------------------------------------------------------------------------------
/演示图/演示图2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/演示图/演示图2.gif
--------------------------------------------------------------------------------
/演示图/演示图3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chenfengxiaoxixi/CFPageScrollView/7e379063a048c957e4b8f208259ea469a4261cd7/演示图/演示图3.gif
--------------------------------------------------------------------------------