├── .gitignore
├── Docs
├── Cell_README.md
└── RememberLast_README.md
├── KYVedioPlayer.podspec
├── KYVedioPlayer
├── KYVedioPlayer.bundle
│ └── Info.plist
├── KYVedioPlayer.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ └── contents.xcworkspacedata
├── KYVedioPlayer.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── KYVedioPlayer
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ └── KYVedioPlayer
│ │ │ ├── Contents.json
│ │ │ ├── PlayerBackground.imageset
│ │ │ ├── Contents.json
│ │ │ ├── picture details@2x.png
│ │ │ └── picture details@3x.png
│ │ │ ├── ic_close.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_close@2x.png
│ │ │ └── ic_close@3x.png
│ │ │ ├── ic_close_p.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_close_p@2x.png
│ │ │ └── ic_close_p@3x.png
│ │ │ ├── ic_dot.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_dot@2x.png
│ │ │ └── ic_dot@3x.png
│ │ │ ├── video_cover_play_nor.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_bofang-big@2x.png
│ │ │ └── ic_bofang-big@3x.png
│ │ │ ├── video_fullscreen_hl.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_quanping_p@2x.png
│ │ │ └── ic_quanping_p@3x.png
│ │ │ ├── video_fullscreen_nor.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_quanping@2x.png
│ │ │ └── ic_quanping@3x.png
│ │ │ ├── video_nav_back_hl.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_fanhui_p@2x.png
│ │ │ └── ic_fanhui_p@3x.png
│ │ │ ├── video_nav_back_nor.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_fanhui@2x.png
│ │ │ └── ic_fanhui@3x.png
│ │ │ ├── video_pause_hl.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_zanting_p@2x.png
│ │ │ └── ic_zanting_p@3x.png
│ │ │ ├── video_pause_nor.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_zanting@2x.png
│ │ │ └── ic_zanting@3x.png
│ │ │ ├── video_play_hl.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_bofang_p@2x.png
│ │ │ └── ic_bofang_p@3x.png
│ │ │ ├── video_play_nor.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_bofang@2x.png
│ │ │ └── ic_bofang@3x.png
│ │ │ ├── video_share.imageset
│ │ │ ├── Contents.json
│ │ │ ├── video_share@2x.png
│ │ │ └── video_share@3x.png
│ │ │ ├── video_share_p.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_share_p@2x.png
│ │ │ └── ic_share_p@3x.png
│ │ │ ├── video_smallscreen_hl.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_suoxiao_p@2x.png
│ │ │ └── ic_suoxiao_p@3x.png
│ │ │ └── video_smallscreen_nor.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_suoxiao@2x.png
│ │ │ └── ic_suoxiao@3x.png
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── BaseNavigationController
│ │ ├── KYBaseViewController.h
│ │ └── KYBaseViewController.m
│ ├── Info.plist
│ ├── KYBaseNavigationController.h
│ ├── KYBaseNavigationController.m
│ ├── KYLocalVideoPlayVC.h
│ ├── KYLocalVideoPlayVC.m
│ ├── KYNetworkVideoCell.h
│ ├── KYNetworkVideoCell.m
│ ├── KYNetworkVideoCellPlayVC.h
│ ├── KYNetworkVideoCellPlayVC.m
│ ├── KYRememberLastPlayedVC.h
│ ├── KYRememberLastPlayedVC.m
│ ├── KYSwitchFreelyVC.h
│ ├── KYSwitchFreelyVC.m
│ ├── KYVedioPlayer.xcdatamodeld
│ │ ├── .xccurrentversion
│ │ └── KYVedioPlayer.xcdatamodel
│ │ │ └── contents
│ ├── KYVideo.h
│ ├── KYVideo.m
│ ├── MBProgressHUD+Show.h
│ ├── MBProgressHUD+Show.m
│ ├── ViewController.h
│ ├── ViewController.m
│ ├── main.m
│ ├── test.mp4
│ └── 贝加尔湖畔.3gp
├── KYVedioPlayerTests
│ ├── Info.plist
│ └── KYVedioPlayerTests.m
├── KYVedioPlayerUITests
│ ├── Info.plist
│ └── KYVedioPlayerUITests.m
├── KYVedioPlayer_PrefixHeader.pch
├── Podfile
├── Podfile.lock
└── Pods
│ ├── MBProgressHUD
│ ├── LICENSE
│ ├── MBProgressHUD.h
│ ├── MBProgressHUD.m
│ └── README.mdown
│ ├── MJRefresh
│ ├── LICENSE
│ ├── MJRefresh
│ │ ├── Base
│ │ │ ├── MJRefreshAutoFooter.h
│ │ │ ├── MJRefreshAutoFooter.m
│ │ │ ├── MJRefreshBackFooter.h
│ │ │ ├── MJRefreshBackFooter.m
│ │ │ ├── MJRefreshComponent.h
│ │ │ ├── MJRefreshComponent.m
│ │ │ ├── MJRefreshFooter.h
│ │ │ ├── MJRefreshFooter.m
│ │ │ ├── MJRefreshHeader.h
│ │ │ └── MJRefreshHeader.m
│ │ ├── Custom
│ │ │ ├── Footer
│ │ │ │ ├── Auto
│ │ │ │ │ ├── MJRefreshAutoGifFooter.h
│ │ │ │ │ ├── MJRefreshAutoGifFooter.m
│ │ │ │ │ ├── MJRefreshAutoNormalFooter.h
│ │ │ │ │ ├── MJRefreshAutoNormalFooter.m
│ │ │ │ │ ├── MJRefreshAutoStateFooter.h
│ │ │ │ │ └── MJRefreshAutoStateFooter.m
│ │ │ │ └── Back
│ │ │ │ │ ├── MJRefreshBackGifFooter.h
│ │ │ │ │ ├── MJRefreshBackGifFooter.m
│ │ │ │ │ ├── MJRefreshBackNormalFooter.h
│ │ │ │ │ ├── MJRefreshBackNormalFooter.m
│ │ │ │ │ ├── MJRefreshBackStateFooter.h
│ │ │ │ │ └── MJRefreshBackStateFooter.m
│ │ │ └── Header
│ │ │ │ ├── MJRefreshGifHeader.h
│ │ │ │ ├── MJRefreshGifHeader.m
│ │ │ │ ├── MJRefreshNormalHeader.h
│ │ │ │ ├── MJRefreshNormalHeader.m
│ │ │ │ ├── MJRefreshStateHeader.h
│ │ │ │ └── MJRefreshStateHeader.m
│ │ ├── MJRefresh.bundle
│ │ │ ├── arrow@2x.png
│ │ │ ├── en.lproj
│ │ │ │ └── Localizable.strings
│ │ │ ├── zh-Hans.lproj
│ │ │ │ └── Localizable.strings
│ │ │ └── zh-Hant.lproj
│ │ │ │ └── Localizable.strings
│ │ ├── MJRefresh.h
│ │ ├── MJRefreshConst.h
│ │ ├── MJRefreshConst.m
│ │ ├── NSBundle+MJRefresh.h
│ │ ├── NSBundle+MJRefresh.m
│ │ ├── UIScrollView+MJExtension.h
│ │ ├── UIScrollView+MJExtension.m
│ │ ├── UIScrollView+MJRefresh.h
│ │ ├── UIScrollView+MJRefresh.m
│ │ ├── UIView+MJExtension.h
│ │ └── UIView+MJExtension.m
│ └── README.md
│ ├── Manifest.lock
│ ├── Masonry
│ ├── LICENSE
│ ├── Masonry
│ │ ├── MASCompositeConstraint.h
│ │ ├── MASCompositeConstraint.m
│ │ ├── MASConstraint+Private.h
│ │ ├── MASConstraint.h
│ │ ├── MASConstraint.m
│ │ ├── MASConstraintMaker.h
│ │ ├── MASConstraintMaker.m
│ │ ├── MASLayoutConstraint.h
│ │ ├── MASLayoutConstraint.m
│ │ ├── MASUtilities.h
│ │ ├── MASViewAttribute.h
│ │ ├── MASViewAttribute.m
│ │ ├── MASViewConstraint.h
│ │ ├── MASViewConstraint.m
│ │ ├── Masonry.h
│ │ ├── NSArray+MASAdditions.h
│ │ ├── NSArray+MASAdditions.m
│ │ ├── NSArray+MASShorthandAdditions.h
│ │ ├── NSLayoutConstraint+MASDebugAdditions.h
│ │ ├── NSLayoutConstraint+MASDebugAdditions.m
│ │ ├── View+MASAdditions.h
│ │ ├── View+MASAdditions.m
│ │ ├── View+MASShorthandAdditions.h
│ │ ├── ViewController+MASAdditions.h
│ │ └── ViewController+MASAdditions.m
│ └── README.md
│ ├── Pods.xcodeproj
│ └── project.pbxproj
│ ├── SDWebImage
│ ├── LICENSE
│ ├── README.md
│ └── SDWebImage
│ │ ├── NSData+ImageContentType.h
│ │ ├── NSData+ImageContentType.m
│ │ ├── SDImageCache.h
│ │ ├── SDImageCache.m
│ │ ├── SDWebImageCompat.h
│ │ ├── SDWebImageCompat.m
│ │ ├── SDWebImageDecoder.h
│ │ ├── SDWebImageDecoder.m
│ │ ├── SDWebImageDownloader.h
│ │ ├── SDWebImageDownloader.m
│ │ ├── SDWebImageDownloaderOperation.h
│ │ ├── SDWebImageDownloaderOperation.m
│ │ ├── SDWebImageManager.h
│ │ ├── SDWebImageManager.m
│ │ ├── SDWebImageOperation.h
│ │ ├── SDWebImagePrefetcher.h
│ │ ├── SDWebImagePrefetcher.m
│ │ ├── UIButton+WebCache.h
│ │ ├── UIButton+WebCache.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+WebCacheOperation.h
│ │ └── UIView+WebCacheOperation.m
│ └── Target Support Files
│ ├── MBProgressHUD
│ ├── Info.plist
│ ├── MBProgressHUD-dummy.m
│ ├── MBProgressHUD-prefix.pch
│ ├── MBProgressHUD-umbrella.h
│ ├── MBProgressHUD.modulemap
│ └── MBProgressHUD.xcconfig
│ ├── MJRefresh
│ ├── Info.plist
│ ├── MJRefresh-dummy.m
│ ├── MJRefresh-prefix.pch
│ ├── MJRefresh-umbrella.h
│ ├── MJRefresh.modulemap
│ └── MJRefresh.xcconfig
│ ├── Masonry
│ ├── Info.plist
│ ├── Masonry-dummy.m
│ ├── Masonry-prefix.pch
│ ├── Masonry-umbrella.h
│ ├── Masonry.modulemap
│ └── Masonry.xcconfig
│ ├── Pods-KYVedioPlayer
│ ├── Info.plist
│ ├── Pods-KYVedioPlayer-acknowledgements.markdown
│ ├── Pods-KYVedioPlayer-acknowledgements.plist
│ ├── Pods-KYVedioPlayer-dummy.m
│ ├── Pods-KYVedioPlayer-frameworks.sh
│ ├── Pods-KYVedioPlayer-resources.sh
│ ├── Pods-KYVedioPlayer-umbrella.h
│ ├── Pods-KYVedioPlayer.debug.xcconfig
│ ├── Pods-KYVedioPlayer.modulemap
│ └── Pods-KYVedioPlayer.release.xcconfig
│ └── SDWebImage
│ ├── Info.plist
│ ├── SDWebImage-dummy.m
│ ├── SDWebImage-prefix.pch
│ ├── SDWebImage-umbrella.h
│ ├── SDWebImage.modulemap
│ └── SDWebImage.xcconfig
├── KYVedioPlayerLib
├── KYVedioPlayer.bundle
│ ├── Assets.car
│ └── Info.plist
├── KYVedioPlayer.h
└── KYVedioPlayer.m
├── LICENSE
├── README.md
├── vedio01.gif
├── vedio02.gif
└── vedio03.gif
/.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 | *.xcuserstate
23 |
24 | ## Obj-C/Swift specific
25 | *.hmap
26 | *.ipa
27 | *.dSYM.zip
28 | *.dSYM
29 |
30 | # CocoaPods
31 | #
32 | # We recommend against adding the Pods directory to your .gitignore. However
33 | # you should judge for yourself, the pros and cons are mentioned at:
34 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
35 | #
36 | # Pods/
37 |
38 | # Carthage
39 | #
40 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
41 | # Carthage/Checkouts
42 |
43 | Carthage/Build
44 |
45 | # fastlane
46 | #
47 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
48 | # screenshots whenever they are needed.
49 | # For more information about the recommended setup visit:
50 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md
51 |
52 | fastlane/report.xml
53 | fastlane/screenshots
54 |
55 | #Code Injection
56 | #
57 | # After new code Injection tools there's a generated folder /iOSInjectionProject
58 | # https://github.com/johnno1962/injectionforxcode
59 |
60 | iOSInjectionProject/
61 |
--------------------------------------------------------------------------------
/KYVedioPlayer.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = "KYVedioPlayer"
3 | s.summary = "KYVedioPlayer 是基于AVPlayer的封装视频播放器,支持播放mp4、m3u8、3gp、mov等格式;支持网络视频和本地视频播放;支持全屏和小屏幕播放;还在UITableViewCell中播放视频 ;支持横屏竖屏自动播放"
4 | s.version = '0.0.5'
5 | s.homepage = "https://github.com/kingly09/KYVedioPlayer"
6 | s.license = { :type => "MIT", :file => "LICENSE" }
7 | s.author = { "kingly" => "libintm@163.com" }
8 | s.platform = :ios, "7.0"
9 | s.source = { :git => "https://github.com/kingly09/KYVedioPlayer.git", :tag => s.version.to_s }
10 | s.social_media_url = "https://github.com/kingly09"
11 | s.source_files = 'KYVedioPlayerLib/*.{h,m}'
12 | s.resource = 'KYVedioPlayerLib/KYVedioPlayer.bundle'
13 | s.frameworks = "MediaPlayer", "AVFoundation", "UIKit"
14 | s.dependency "Masonry", "~> 1.0.1"
15 | s.requires_arc = true
16 | end
17 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer.bundle/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 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | NSHumanReadableCopyright
22 | Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/8.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface AppDelegate : UIResponder
13 |
14 | @property (strong, nonatomic) UIWindow *window;
15 |
16 | @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
17 | @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
18 | @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
19 |
20 | - (void)saveContext;
21 | - (NSURL *)applicationDocumentsDirectory;
22 |
23 |
24 | @end
25 |
26 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "size" : "1024x1024",
91 | "scale" : "1x"
92 | }
93 | ],
94 | "info" : {
95 | "version" : 1,
96 | "author" : "xcode"
97 | }
98 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/PlayerBackground.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "picture details@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "picture details@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/PlayerBackground.imageset/picture details@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/PlayerBackground.imageset/picture details@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/PlayerBackground.imageset/picture details@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/PlayerBackground.imageset/picture details@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_close.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_close@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_close@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_close.imageset/ic_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_close.imageset/ic_close@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_close.imageset/ic_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_close.imageset/ic_close@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_close_p.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_close_p@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_close_p@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_close_p.imageset/ic_close_p@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_close_p.imageset/ic_close_p@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_close_p.imageset/ic_close_p@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_close_p.imageset/ic_close_p@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_dot.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_dot@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_dot@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_dot.imageset/ic_dot@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_dot.imageset/ic_dot@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_dot.imageset/ic_dot@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/ic_dot.imageset/ic_dot@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_cover_play_nor.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_bofang-big@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_bofang-big@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_cover_play_nor.imageset/ic_bofang-big@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_cover_play_nor.imageset/ic_bofang-big@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_cover_play_nor.imageset/ic_bofang-big@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_cover_play_nor.imageset/ic_bofang-big@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_fullscreen_hl.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_quanping_p@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_quanping_p@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_fullscreen_hl.imageset/ic_quanping_p@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_fullscreen_hl.imageset/ic_quanping_p@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_fullscreen_hl.imageset/ic_quanping_p@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_fullscreen_hl.imageset/ic_quanping_p@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_fullscreen_nor.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_quanping@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_quanping@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_fullscreen_nor.imageset/ic_quanping@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_fullscreen_nor.imageset/ic_quanping@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_fullscreen_nor.imageset/ic_quanping@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_fullscreen_nor.imageset/ic_quanping@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_nav_back_hl.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_fanhui_p@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_fanhui_p@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_nav_back_hl.imageset/ic_fanhui_p@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_nav_back_hl.imageset/ic_fanhui_p@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_nav_back_hl.imageset/ic_fanhui_p@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_nav_back_hl.imageset/ic_fanhui_p@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_nav_back_nor.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_fanhui@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_fanhui@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_nav_back_nor.imageset/ic_fanhui@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_nav_back_nor.imageset/ic_fanhui@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_nav_back_nor.imageset/ic_fanhui@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_nav_back_nor.imageset/ic_fanhui@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_pause_hl.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_zanting_p@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_zanting_p@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_pause_hl.imageset/ic_zanting_p@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_pause_hl.imageset/ic_zanting_p@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_pause_hl.imageset/ic_zanting_p@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_pause_hl.imageset/ic_zanting_p@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_pause_nor.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_zanting@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_zanting@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_pause_nor.imageset/ic_zanting@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_pause_nor.imageset/ic_zanting@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_pause_nor.imageset/ic_zanting@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_pause_nor.imageset/ic_zanting@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_play_hl.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_bofang_p@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_bofang_p@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_play_hl.imageset/ic_bofang_p@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_play_hl.imageset/ic_bofang_p@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_play_hl.imageset/ic_bofang_p@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_play_hl.imageset/ic_bofang_p@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_play_nor.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_bofang@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_bofang@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_play_nor.imageset/ic_bofang@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_play_nor.imageset/ic_bofang@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_play_nor.imageset/ic_bofang@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_play_nor.imageset/ic_bofang@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_share.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "video_share@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "video_share@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_share.imageset/video_share@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_share.imageset/video_share@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_share.imageset/video_share@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_share.imageset/video_share@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_share_p.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_share_p@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_share_p@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_share_p.imageset/ic_share_p@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_share_p.imageset/ic_share_p@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_share_p.imageset/ic_share_p@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_share_p.imageset/ic_share_p@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_smallscreen_hl.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_suoxiao_p@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_suoxiao_p@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_smallscreen_hl.imageset/ic_suoxiao_p@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_smallscreen_hl.imageset/ic_suoxiao_p@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_smallscreen_hl.imageset/ic_suoxiao_p@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_smallscreen_hl.imageset/ic_suoxiao_p@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_smallscreen_nor.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "ic_suoxiao@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "ic_suoxiao@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_smallscreen_nor.imageset/ic_suoxiao@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_smallscreen_nor.imageset/ic_suoxiao@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_smallscreen_nor.imageset/ic_suoxiao@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/Assets.xcassets/KYVedioPlayer/video_smallscreen_nor.imageset/ic_suoxiao@3x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/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 |
27 |
28 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/BaseNavigationController/KYBaseViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // KYBaseViewController.h
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/8.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MBProgressHUD.h"
11 |
12 | typedef void(^onSuccess)(NSArray *videoArray);
13 | typedef void(^onFailed)(NSError *error);
14 |
15 | @interface KYBaseViewController : UIViewController
16 |
17 | @property (nonatomic,retain) MBProgressHUD* progressHUD;
18 |
19 |
20 | - (void)addProgressHUD;
21 | - (void)addProgressHUDWithMessage:(NSString*)message;
22 | - (void)removeProgressHUD;
23 |
24 | - (void)getVideoListWithURLString:(NSString *)URLString success:(onSuccess)success failed:(onFailed)failed;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/BaseNavigationController/KYBaseViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // KYBaseViewController.m
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/8.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import "KYBaseViewController.h"
10 | #import "KYVideo.h"
11 |
12 | @interface KYBaseViewController ()
13 |
14 | @end
15 |
16 | @implementation KYBaseViewController
17 |
18 | - (void)viewDidLoad {
19 | [super viewDidLoad];
20 | // Do any additional setup after loading the view.
21 | self.view.backgroundColor = [UIColor whiteColor];
22 | }
23 |
24 | - (void)didReceiveMemoryWarning {
25 | [super didReceiveMemoryWarning];
26 | // Dispose of any resources that can be recreated.
27 | }
28 |
29 | /**
30 | * 获得视频列表
31 | **/
32 | - (void)getVideoListWithURLString:(NSString *)URLString success:(onSuccess)success failed:(onFailed)failed{
33 | dispatch_queue_t global_t = dispatch_get_global_queue(0, 0);
34 | dispatch_async(global_t, ^{
35 | NSURL *url = [NSURL URLWithString:URLString];
36 | NSMutableArray *listArray = [NSMutableArray array];
37 | [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:url] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * response, NSData * data, NSError * connectionError) {
38 | if (connectionError) {
39 | NSLog(@"错误%@",connectionError);
40 | failed(connectionError);
41 | }else{
42 | NSDictionary * dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
43 | NSArray *videoList = [dict objectForKey:@"videoList"];
44 | for (NSDictionary * video in videoList) {
45 | KYVideo * model = [[KYVideo alloc] init];
46 | model.title = [video objectForKey:@"title"];
47 | model.image = [video objectForKey:@"cover"];
48 | model.video = [video objectForKey:@"m3u8_url"];
49 | [listArray addObject:model];
50 | }
51 | success(listArray);
52 | }
53 |
54 | }];
55 |
56 | });
57 |
58 | }
59 |
60 | - (void)addProgressHUD{
61 |
62 | if (!_progressHUD) {
63 | _progressHUD=[MBProgressHUD showHUDAddedTo:self.view animated:YES];
64 | }
65 | }
66 | - (void)addProgressHUDWithMessage:(NSString*)message{
67 |
68 | if (!_progressHUD)
69 | {
70 | _progressHUD=[MBProgressHUD showHUDAddedTo:self.view animated:YES];
71 | _progressHUD.label.text=message;
72 | }
73 |
74 | }
75 |
76 | - (void)removeProgressHUD{
77 |
78 | if (_progressHUD) {
79 | [_progressHUD removeFromSuperview];
80 | _progressHUD=nil;
81 | }
82 | }
83 |
84 |
85 | @end
86 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | NSAppleMusicUsageDescription
24 | App需要您的同意,才能访问媒体资料库
25 | NSBluetoothPeripheralUsageDescription
26 | App需要您的同意,才能访问蓝牙
27 | NSCalendarsUsageDescription
28 | App需要您的同意,才能访问日历
29 | NSCameraUsageDescription
30 | App需要您的同意,才能访问相机
31 | NSHealthShareUsageDescription
32 | App需要您的同意,才能访问健康分享
33 | NSHealthUpdateUsageDescription
34 | App需要您的同意,才能访问健康更新
35 | NSLocationAlwaysUsageDescription
36 | App需要您的同意,才能始终访问位置
37 | NSLocationUsageDescription
38 | App需要您的同意,才能访问位置
39 | NSLocationWhenInUseUsageDescription
40 | App需要您的同意,才能在使用期间访问位置
41 | NSMicrophoneUsageDescription
42 | App需要您的同意,才能访问麦克风
43 | NSMotionUsageDescription
44 | App需要您的同意,才能访问运动与健身
45 | NSPhotoLibraryAddUsageDescription
46 | 是否允许此App访问你的媒体资料库?
47 | NSPhotoLibraryUsageDescription
48 | App需要您的同意,才能访问相册
49 | NSRemindersUsageDescription
50 | App需要您的同意,才能访问提醒事项
51 | LSRequiresIPhoneOS
52 |
53 | NSAppTransportSecurity
54 |
55 | NSAllowsArbitraryLoads
56 |
57 |
58 | UILaunchStoryboardName
59 | LaunchScreen
60 | UIMainStoryboardFile
61 | Main
62 | UIRequiredDeviceCapabilities
63 |
64 | armv7
65 |
66 | UISupportedInterfaceOrientations
67 |
68 | UIInterfaceOrientationPortrait
69 |
70 | UISupportedInterfaceOrientations~ipad
71 |
72 | UIInterfaceOrientationPortrait
73 | UIInterfaceOrientationPortraitUpsideDown
74 | UIInterfaceOrientationLandscapeLeft
75 | UIInterfaceOrientationLandscapeRight
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYBaseNavigationController.h:
--------------------------------------------------------------------------------
1 | //
2 | // KYBaseNavigationController.h
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/8.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KYBaseNavigationController : UINavigationController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYBaseNavigationController.m:
--------------------------------------------------------------------------------
1 | //
2 | // KYBaseNavigationController.m
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/8.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import "KYBaseNavigationController.h"
10 |
11 | @interface KYBaseNavigationController ()
12 |
13 | @end
14 |
15 | @implementation KYBaseNavigationController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | // Do any additional setup after loading the view.
20 | self.navigationBar.barTintColor = [UIColor orangeColor];
21 | self.navigationBar.tintColor = [UIColor whiteColor];
22 |
23 | self.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],NSForegroundColorAttributeName,[UIFont boldSystemFontOfSize:17.0],NSFontAttributeName ,nil];
24 | }
25 |
26 | - (void)didReceiveMemoryWarning {
27 | [super didReceiveMemoryWarning];
28 | // Dispose of any resources that can be recreated.
29 | }
30 | /**
31 | * 重写pushViewController
32 | **/
33 | -(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
34 | if (self.viewControllers.count) {
35 | viewController.hidesBottomBarWhenPushed = YES;
36 | }
37 | [super pushViewController:viewController animated:animated];
38 | }
39 | /**
40 | * 导航控制器 统一管理状态栏颜色
41 | * @return 状态栏颜色
42 | **/
43 | -(UIStatusBarStyle)preferredStatusBarStyle{
44 | return UIStatusBarStyleLightContent;
45 | }
46 |
47 | @end
48 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYLocalVideoPlayVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // KYLocalVideoPlayVC.h
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/9.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import "KYBaseViewController.h"
10 |
11 | @interface KYLocalVideoPlayVC : KYBaseViewController
12 |
13 | @property (nonatomic, retain) NSString * URLString;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYNetworkVideoCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // KYNetworkVideoCell.h
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/12.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import
10 | #import "KYVideo.h"
11 |
12 | @protocol KYNetworkVideoCellDelegate;
13 |
14 | @interface KYNetworkVideoCell : UITableViewCell
15 |
16 | @property (nonatomic,weak) idmydelegate;
17 |
18 | +(NSString *) cellReuseIdentifier;
19 |
20 | @property (nonatomic, strong) UIImageView *vedioBg;
21 | @property (nonatomic, strong) UIButton *playBtn;
22 | @property (nonatomic, strong) NSIndexPath *indexPath;
23 | @property (nonatomic,strong) KYVideo *video;
24 |
25 | @end
26 |
27 |
28 | @protocol KYNetworkVideoCellDelegate
29 |
30 |
31 | -(void)networkVideoCellVedioBgTapGesture:(KYVideo *)video;
32 |
33 | -(void)networkVideoCellOnClickVideoPlay:(KYVideo *)video withVideoPlayBtn:(UIButton *)videoPlayBtn;
34 |
35 | @end
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYNetworkVideoCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // KYNetworkVideoCell.m
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/12.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import "KYNetworkVideoCell.h"
10 | #define kVerticalSpace 10
11 |
12 | @interface KYNetworkVideoCell(){
13 |
14 | UILabel *title;
15 |
16 | }
17 | @end
18 |
19 | @implementation KYNetworkVideoCell
20 |
21 | - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
22 | {
23 | self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
24 | if (self) {
25 | // Initialization code
26 |
27 | [self addCellView];
28 | }
29 | return self;
30 | }
31 |
32 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
33 | [super setSelected:selected animated:animated];
34 |
35 | // Configure the view for the selected state
36 | }
37 |
38 | - (void)addCellView
39 | {
40 |
41 |
42 | title = [[UILabel alloc]init];
43 | title.backgroundColor = [UIColor whiteColor];
44 | title.textAlignment = NSTextAlignmentLeft;
45 | title.textColor = [UIColor blackColor];
46 | title.font = [UIFont systemFontOfSize:16];
47 | title.numberOfLines = 0;
48 | title.contentMode= UIViewContentModeTop;
49 | [self.contentView addSubview:title];
50 |
51 |
52 | _vedioBg= [[UIImageView alloc]init];
53 | _vedioBg.contentMode = UIViewContentModeScaleToFill;
54 | _vedioBg.userInteractionEnabled = YES;
55 | UITapGestureRecognizer *panGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(vedioBgTapGesture:)];
56 | _vedioBg.userInteractionEnabled = YES;
57 | [_vedioBg addGestureRecognizer:panGesture];
58 | [self.contentView addSubview:_vedioBg];
59 |
60 |
61 | _playBtn = [UIButton buttonWithType:UIButtonTypeCustom];
62 | [_playBtn setImage:[UIImage imageNamed:@"video_cover_play_nor"] forState:UIControlStateNormal];
63 | [_playBtn adjustsImageWhenHighlighted];
64 | [_playBtn adjustsImageWhenDisabled];
65 | _playBtn.backgroundColor = [UIColor clearColor];
66 | _playBtn.imageView.contentMode = UIViewContentModeCenter;
67 | [_playBtn addTarget:self action:@selector(onClickVideoPlay:) forControlEvents:UIControlEventTouchUpInside];
68 | [self.contentView addSubview:_playBtn];
69 |
70 | }
71 |
72 | /**
73 | * 设置数据模型展示视图
74 | */
75 | -(void)setVideo:(KYVideo *)video
76 | {
77 | if (_video != video ) {
78 | _video = nil;
79 | _video = video;
80 |
81 | title.text = _video.title;
82 | title.frame = CGRectMake(kVerticalSpace, 0 , kScreenWidth - kVerticalSpace*2, 30);
83 | _vedioBg.frame = CGRectMake(0, title.frame.size.height , kScreenWidth,200);
84 | [_vedioBg sd_setImageWithURL:[NSURL URLWithString:video.image] placeholderImage:[UIImage imageNamed:@"PlayerBackground"]];
85 | _playBtn.frame = CGRectMake((kScreenWidth - 72)/2, title.frame.size.height+ (_vedioBg.frame.size.height - 72)/2 , 72, 72);
86 | _video.curCellHeight = 230;
87 |
88 | }
89 | }
90 |
91 | +(NSString *) cellReuseIdentifier{
92 |
93 | return @"KKYNetworkVideoCell";
94 | }
95 |
96 | -(void)vedioBgTapGesture:(id)sender{
97 |
98 |
99 | if (_mydelegate && [_mydelegate respondsToSelector:@selector(networkVideoCellVedioBgTapGesture:)]) {
100 | [_mydelegate networkVideoCellVedioBgTapGesture:_video];
101 | }
102 |
103 | }
104 |
105 | -(void)onClickVideoPlay:(UIButton *)sender{
106 |
107 | _video.indexPath = _indexPath;
108 | if (_mydelegate && [_mydelegate respondsToSelector:@selector(networkVideoCellOnClickVideoPlay:withVideoPlayBtn:)]) {
109 | [_mydelegate networkVideoCellOnClickVideoPlay:_video withVideoPlayBtn:sender];
110 | }
111 | }
112 |
113 | @end
114 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYNetworkVideoCellPlayVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // KYNetworkVideoCellPlayVC.h
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/9.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KYNetworkVideoCellPlayVC : KYBaseViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYRememberLastPlayedVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // KYRememberLastPlayedVC.h
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/9.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import "KYBaseViewController.h"
10 |
11 | @interface KYRememberLastPlayedVC : KYBaseViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYRememberLastPlayedVC.m:
--------------------------------------------------------------------------------
1 | //
2 | // KYRememberLastPlayedVC.m
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/9.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import "KYRememberLastPlayedVC.h"
10 |
11 | #define TheUserDefaults [NSUserDefaults standardUserDefaults]
12 |
13 | @interface KYRememberLastPlayedVC (){
14 | KYVedioPlayer *vedioPlayer;
15 | CGRect playerFrame;
16 | NSString *URLString;
17 | }
18 |
19 | @end
20 |
21 | @implementation KYRememberLastPlayedVC
22 |
23 | - (void)viewDidLoad {
24 | [super viewDidLoad];
25 | // Do any additional setup after loading the view.
26 |
27 | playerFrame = CGRectMake(0, 0, kScreenWidth, (kScreenWidth)*(0.75));
28 | vedioPlayer = [[KYVedioPlayer alloc]initWithFrame:playerFrame];
29 | vedioPlayer.delegate = self;
30 |
31 | URLString = @"http://static.tripbe.com/videofiles/20121214/9533522808.f4v.mp4";
32 | if ([TheUserDefaults doubleForKey:URLString]) {//如果有存上次播放的时间点记录,直接跳到上次纪录时间点播放
33 | double time = [TheUserDefaults doubleForKey:URLString];
34 | vedioPlayer.seekTime = time;
35 | }
36 | [vedioPlayer setURLString:URLString];
37 |
38 | vedioPlayer.titleLabel.text = self.title;
39 | vedioPlayer.closeBtn.hidden = NO;
40 | vedioPlayer.progressColor = [UIColor orangeColor];
41 | [self.view addSubview:vedioPlayer];
42 | [vedioPlayer play];
43 |
44 | }
45 |
46 | - (void)viewWillAppear:(BOOL)animated{
47 | [super viewWillAppear:animated];
48 |
49 | }
50 | -(void)viewDidDisappear:(BOOL)animated{
51 |
52 | [super viewDidAppear:animated];
53 | }
54 |
55 |
56 | - (void)didReceiveMemoryWarning {
57 | [super didReceiveMemoryWarning];
58 | // Dispose of any resources that can be recreated.
59 | }
60 |
61 | /*
62 | #pragma mark - Navigation
63 |
64 | // In a storyboard-based application, you will often want to do a little preparation before navigation
65 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
66 | // Get the new view controller using [segue destinationViewController].
67 | // Pass the selected object to the new view controller.
68 | }
69 | */
70 |
71 | /**
72 | * 注销播放器
73 | **/
74 | - (void)releasePlayer
75 | {
76 | [vedioPlayer resetKYVedioPlayer];
77 | vedioPlayer = nil;
78 | }
79 |
80 | - (void)dealloc
81 | {
82 | //记录播放的时间
83 | double time = [vedioPlayer currentTime];
84 | [TheUserDefaults setDouble:time forKey:URLString];
85 |
86 | [self releasePlayer];
87 | [[NSNotificationCenter defaultCenter] removeObserver:self];
88 | NSLog(@"KYRememberLastPlayedVC dealloc");
89 | }
90 |
91 | /**
92 | * 隐藏状态栏
93 | **/
94 | -(BOOL)prefersStatusBarHidden{
95 | return YES;
96 | }
97 |
98 | #pragma mark - KYVedioPlayerDelegate 播放器委托方法
99 | //点击播放暂停按钮代理方法
100 | -(void)kyvedioPlayer:(KYVedioPlayer *)kyvedioPlayer clickedPlayOrPauseButton:(UIButton *)playOrPauseBtn{
101 |
102 | NSLog(@"[KYVedioPlayer] clickedPlayOrPauseButton ");
103 | }
104 | //点击关闭按钮代理方法
105 | -(void)kyvedioPlayer:(KYVedioPlayer *)kyvedioPlayer clickedCloseButton:(UIButton *)closeBtn{
106 |
107 | NSLog(@"[KYVedioPlayer] clickedCloseButton ");
108 |
109 | }
110 |
111 | //点击分享按钮代理方法
112 | -(void)kyvedioPlayer:(KYVedioPlayer *)kyvedioPlayer onClickShareBtn:(UIButton *)closeBtn{
113 |
114 | NSLog(@"[KYVedioPlayer] onClickShareBtn ");
115 |
116 | }
117 |
118 | //点击全屏按钮代理方法
119 | -(void)kyvedioPlayer:(KYVedioPlayer *)kyvedioPlayer clickedFullScreenButton:(UIButton *)fullScreenBtn{
120 | NSLog(@"[KYVedioPlayer] clickedFullScreenButton ");
121 |
122 | }
123 | //单击WMPlayer的代理方法
124 | -(void)kyvedioPlayer:(KYVedioPlayer *)kyvedioPlayer singleTaped:(UITapGestureRecognizer *)singleTap{
125 |
126 | NSLog(@"[KYVedioPlayer] singleTaped ");
127 | }
128 | //双击WMPlayer的代理方法
129 | -(void)kyvedioPlayer:(KYVedioPlayer *)kyvedioPlayer doubleTaped:(UITapGestureRecognizer *)doubleTap{
130 |
131 | NSLog(@"[KYVedioPlayer] doubleTaped ");
132 | }
133 |
134 | ///播放状态
135 | //播放失败的代理方法
136 | -(void)kyvedioPlayerFailedPlay:(KYVedioPlayer *)kyvedioPlayer playerStatus:(KYVedioPlayerState)state{
137 | NSLog(@"[KYVedioPlayer] kyvedioPlayerFailedPlay 播放失败");
138 | }
139 | //准备播放的代理方法
140 | -(void)kyvedioPlayerReadyToPlay:(KYVedioPlayer *)kyvedioPlayer playerStatus:(KYVedioPlayerState)state{
141 |
142 | NSLog(@"[KYVedioPlayer] kyvedioPlayerReadyToPlay 准备播放");
143 | }
144 | //播放完毕的代理方法
145 | -(void)kyplayerFinishedPlay:(KYVedioPlayer *)kyvedioPlayer{
146 |
147 | NSLog(@"[KYVedioPlayer] kyvedioPlayerReadyToPlay 播放完毕");
148 | }
149 |
150 |
151 | @end
152 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYSwitchFreelyVC.h:
--------------------------------------------------------------------------------
1 | //
2 | // KYSwitchFreelyVC.h
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/9.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import "KYBaseViewController.h"
10 |
11 | @interface KYSwitchFreelyVC : KYBaseViewController
12 |
13 |
14 |
15 |
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYVedioPlayer.xcdatamodeld/.xccurrentversion:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | _XCCurrentVersionName
6 | KYVedioPlayer.xcdatamodel
7 |
8 |
9 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYVedioPlayer.xcdatamodeld/KYVedioPlayer.xcdatamodel/contents:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYVideo.h:
--------------------------------------------------------------------------------
1 | //
2 | // KYVideo.h
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/10.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KYVideo : NSObject
12 |
13 | @property (nonatomic, strong) NSString * title;
14 | @property (nonatomic, strong) NSString * image;
15 | @property (nonatomic, strong) NSString * video;
16 |
17 | /**
18 | *自定义cell的高度
19 | */
20 | @property (nonatomic,assign) CGFloat curCellHeight;
21 |
22 | @property (nonatomic, strong) NSIndexPath *indexPath;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/KYVideo.m:
--------------------------------------------------------------------------------
1 | //
2 | // KYVideo.m
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/10.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import "KYVideo.h"
10 |
11 | @implementation KYVideo
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/MBProgressHUD+Show.h:
--------------------------------------------------------------------------------
1 | //
2 | // MBProgressHUD+Show.h
3 | // weibo
4 | //
5 | // Created by apple on 13-9-1.
6 | // Copyright (c) 2013年 itcast. All rights reserved.
7 | //
8 |
9 | #import "MBProgressHUD.h"
10 |
11 | @interface MBProgressHUD (Show)
12 |
13 | + (void)showErrorWithText:(NSString *)text;
14 | + (void)showSuccessWithText:(NSString *)text;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/MBProgressHUD+Show.m:
--------------------------------------------------------------------------------
1 | //
2 | // MBProgressHUD+Show.m
3 | // weibo
4 | //
5 | // Created by apple on 13-9-1.
6 | // Copyright (c) 2013年 itcast. All rights reserved.
7 | //
8 |
9 | #import "MBProgressHUD+Show.h"
10 |
11 | @implementation MBProgressHUD (Show)
12 | + (void)showText:(NSString *)text name:(NSString *)name
13 | {
14 | // 显示加载失败
15 | MBProgressHUD *hud =[MBProgressHUD showHUDAddedTo:[UIApplication sharedApplication].keyWindow animated:YES];
16 |
17 | // 显示一张图片(mode必须写在customView设置之前)
18 | hud.mode = MBProgressHUDModeCustomView;
19 | // 设置一张图片
20 | name = [NSString stringWithFormat:@"MBProgressHUD.bundle/%@", name];
21 | hud.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:name]];
22 |
23 | hud.label.text = text;
24 |
25 | // 隐藏的时候从父控件中移除
26 | hud.removeFromSuperViewOnHide = YES;
27 |
28 | // 1秒后自动隐藏
29 | [hud hideAnimated:YES afterDelay:1];
30 | }
31 |
32 | + (void)showErrorWithText:(NSString *)text
33 | {
34 | [self showText:text name:@"error.png"];
35 | }
36 |
37 | + (void)showSuccessWithText:(NSString *)text
38 | {
39 | [self showText:text name:@"success.png"];
40 | }
41 |
42 |
43 |
44 | @end
45 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/8.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : KYBaseViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/8.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "KYNetworkVideoCellPlayVC.h"
11 | #import "KYLocalVideoPlayVC.h"
12 | #import "KYRememberLastPlayedVC.h"
13 | #import "KYSwitchFreelyVC.h"
14 |
15 | @interface ViewController (){
16 | UITableView *myTableView;
17 | NSArray *dataSource;//数据源
18 | NSArray *viewControllers; //对应的控制器
19 | }
20 | @end
21 |
22 | @implementation ViewController
23 |
24 | - (void)viewDidLoad {
25 | [super viewDidLoad];
26 | // Do any additional setup after loading the view, typically from a nib.
27 | self.title = @"KYVedioPlayerDemo";
28 | [self loadTableView];
29 | }
30 |
31 | - (void)didReceiveMemoryWarning {
32 | [super didReceiveMemoryWarning];
33 | // Dispose of any resources that can be recreated.
34 | }
35 |
36 | - (void) loadTableView{
37 |
38 | //解决下移的问题
39 | UIView *spaceView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];
40 | [self.view addSubview:spaceView];
41 |
42 | myTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight) style:UITableViewStylePlain];
43 | myTableView.dataSource = self;
44 | myTableView.delegate = self;
45 | [self.view addSubview:myTableView];
46 |
47 | dataSource = @[@"支持网络视频Cell中播放",@"本地视频播放",@"记忆上次播放的位置",@"小屏幕全屏自如切换"];
48 | viewControllers = @[@"KYNetworkVideoCellPlayVC",@"KYLocalVideoPlayVC",@"KYRememberLastPlayedVC",@"KYSwitchFreelyVC"];
49 | [myTableView reloadData];
50 | }
51 |
52 | #pragma mark - UITableViewDataSource
53 | -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
54 | {
55 | return 0.1f;
56 | }
57 | -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
58 | {
59 | return 0.1f;
60 | }
61 | -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
62 | {
63 | return 44.0f;
64 | }
65 | -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
66 | {
67 | return 1;
68 | }
69 | -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
70 | {
71 | return dataSource.count;
72 | }
73 |
74 | -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
75 | {
76 | static NSString *CellIdentifier = @"myCell";
77 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
78 | if (!cell) {
79 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
80 | }
81 | cell.textLabel.text = [dataSource objectAtIndex:indexPath.row];
82 | return cell;
83 | }
84 | -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
85 | {
86 | [tableView deselectRowAtIndexPath:indexPath animated:YES];
87 |
88 | UIViewController *pushViewController = [[NSClassFromString([viewControllers objectAtIndex:indexPath.row]) alloc] init];
89 | pushViewController.title = [dataSource objectAtIndex:indexPath.row];
90 |
91 | UIBarButtonItem *backItem = [[UIBarButtonItem alloc] init];
92 | backItem.title = @"返回";
93 | self.navigationItem.backBarButtonItem = backItem;
94 | [self.navigationController pushViewController:pushViewController animated:YES];
95 | }
96 |
97 |
98 | @end
99 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/8.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/test.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/test.mp4
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer/贝加尔湖畔.3gp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/KYVedioPlayer/贝加尔湖畔.3gp
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayerTests/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 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayerTests/KYVedioPlayerTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // KYVedioPlayerTests.m
3 | // KYVedioPlayerTests
4 | //
5 | // Created by kingly on 16/9/8.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KYVedioPlayerTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation KYVedioPlayerTests
16 |
17 | - (void)setUp {
18 | [super setUp];
19 | // Put setup code here. This method is called before the invocation of each test method in the class.
20 | }
21 |
22 | - (void)tearDown {
23 | // Put teardown code here. This method is called after the invocation of each test method in the class.
24 | [super tearDown];
25 | }
26 |
27 | - (void)testExample {
28 | // This is an example of a functional test case.
29 | // Use XCTAssert and related functions to verify your tests produce the correct results.
30 | }
31 |
32 | - (void)testPerformanceExample {
33 | // This is an example of a performance test case.
34 | [self measureBlock:^{
35 | // Put the code you want to measure the time of here.
36 | }];
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayerUITests/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 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayerUITests/KYVedioPlayerUITests.m:
--------------------------------------------------------------------------------
1 | //
2 | // KYVedioPlayerUITests.m
3 | // KYVedioPlayerUITests
4 | //
5 | // Created by kingly on 16/9/8.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KYVedioPlayerUITests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation KYVedioPlayerUITests
16 |
17 | - (void)setUp {
18 | [super setUp];
19 |
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 |
22 | // In UI tests it is usually best to stop immediately when a failure occurs.
23 | self.continueAfterFailure = NO;
24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
25 | [[[XCUIApplication alloc] init] launch];
26 |
27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
28 | }
29 |
30 | - (void)tearDown {
31 | // Put teardown code here. This method is called after the invocation of each test method in the class.
32 | [super tearDown];
33 | }
34 |
35 | - (void)testExample {
36 | // Use recording to get started writing UI tests.
37 | // Use XCTAssert and related functions to verify your tests produce the correct results.
38 | }
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/KYVedioPlayer/KYVedioPlayer_PrefixHeader.pch:
--------------------------------------------------------------------------------
1 | //
2 | // KYVedioPlayer_PrefixHeader.pch
3 | // KYVedioPlayer
4 | //
5 | // Created by kingly on 16/9/8.
6 | // Copyright © 2016年 https://github.com/kingly09/KYVedioPlayer kingly inc . All rights reserved.
7 | //
8 |
9 | #ifndef KYVedioPlayer_PrefixHeader_pch
10 | #define KYVedioPlayer_PrefixHeader_pch
11 |
12 | // Include any system framework and library headers here that should be included in all compilation units.
13 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
14 | #import "KYBaseNavigationController.h"
15 | #import "KYBaseViewController.h"
16 |
17 | #import "SDWebImageManager.h"
18 | #import "UIImageView+WebCache.h"
19 | #import "KYVedioPlayer.h"
20 | #import "MJRefresh.h"
21 | #import "MBProgressHUD.h"
22 | #import "MBProgressHUD+Show.h"
23 |
24 |
25 | #define kScreenWidth [[UIScreen mainScreen]bounds].size.width //屏幕宽度
26 | #define kScreenHeight [[UIScreen mainScreen]bounds].size.height //屏幕高度
27 | #define kStatusBarHeight ([[UIApplication sharedApplication]statusBarFrame].size.height)//状态栏高度
28 | #define kNavgationBarHeight (64.0f) //NavgationBar的高度
29 |
30 | #define kNavbarHeight 44
31 | #define kIOS7DELTA ((kDeviceVersion>=7.0)? 20 :0 )
32 | //判断iPhoneX 20 44 40
33 | #define kTabBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>40?83:49)//tabBar高
34 | #define kTopHeight (kStatusBarHeight + kNavBarHeight)//导航栏高
35 | #define isiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
36 | #define iPhoneX [[UIScreen mainScreen] bounds].size.width >= 375.0f && [[UIScreen mainScreen] bounds].size.height >= 812.0f && isiPhone
37 |
38 | #define kDeviceVersion [[UIDevice currentDevice].systemVersion floatValue]
39 | #define WS(weakSelf) __weak __typeof(&*self)weakSelf = self;
40 |
41 |
42 |
43 |
44 | #endif /* KYVedioPlayer_PrefixHeader_pch */
45 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Podfile:
--------------------------------------------------------------------------------
1 | source 'https://github.com/CocoaPods/Specs.git'
2 | platform :ios, '8.0'
3 | use_frameworks!
4 |
5 | target "KYVedioPlayer" do
6 |
7 | pod 'Masonry', '~> 1.0.2'
8 | pod 'MJRefresh', '~> 3.1.15'
9 | pod 'SDWebImage', '~> 3.8.2'
10 | pod 'MBProgressHUD', '~> 1.0.0'
11 |
12 | end
13 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Masonry (1.0.2)
3 | - MBProgressHUD (1.0.0)
4 | - MJRefresh (3.1.15)
5 | - SDWebImage (3.8.2):
6 | - SDWebImage/Core (= 3.8.2)
7 | - SDWebImage/Core (3.8.2)
8 |
9 | DEPENDENCIES:
10 | - Masonry (~> 1.0.2)
11 | - MBProgressHUD (~> 1.0.0)
12 | - MJRefresh (~> 3.1.15)
13 | - SDWebImage (~> 3.8.2)
14 |
15 | SPEC CHECKSUMS:
16 | Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e
17 | MBProgressHUD: 4890f671c94e8a0f3cf959aa731e9de2f036d71a
18 | MJRefresh: 9af70f5f9327a2cf87f0fb5929f35fcc2fa638ea
19 | SDWebImage: 098e97e6176540799c27e804c96653ee0833d13c
20 |
21 | PODFILE CHECKSUM: 0c0e8ca572093a5138240a4aa4ca250892b2f8ba
22 |
23 | COCOAPODS: 1.4.0.beta.2
24 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MBProgressHUD/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright © 2009-2016 Matej Bukovinski
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoFooter.m
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoFooter.h"
10 |
11 | @interface MJRefreshAutoFooter()
12 | @end
13 |
14 | @implementation MJRefreshAutoFooter
15 |
16 | #pragma mark - 初始化
17 | - (void)willMoveToSuperview:(UIView *)newSuperview
18 | {
19 | [super willMoveToSuperview:newSuperview];
20 |
21 | if (newSuperview) { // 新的父控件
22 | if (self.hidden == NO) {
23 | self.scrollView.mj_insetB += self.mj_h;
24 | }
25 |
26 | // 设置位置
27 | self.mj_y = _scrollView.mj_contentH;
28 | } else { // 被移除了
29 | if (self.hidden == NO) {
30 | self.scrollView.mj_insetB -= self.mj_h;
31 | }
32 | }
33 | }
34 |
35 | #pragma mark - 过期方法
36 | - (void)setAppearencePercentTriggerAutoRefresh:(CGFloat)appearencePercentTriggerAutoRefresh
37 | {
38 | self.triggerAutomaticallyRefreshPercent = appearencePercentTriggerAutoRefresh;
39 | }
40 |
41 | - (CGFloat)appearencePercentTriggerAutoRefresh
42 | {
43 | return self.triggerAutomaticallyRefreshPercent;
44 | }
45 |
46 | #pragma mark - 实现父类的方法
47 | - (void)prepare
48 | {
49 | [super prepare];
50 |
51 | // 默认底部控件100%出现时才会自动刷新
52 | self.triggerAutomaticallyRefreshPercent = 1.0;
53 |
54 | // 设置为默认状态
55 | self.automaticallyRefresh = YES;
56 | }
57 |
58 | - (void)scrollViewContentSizeDidChange:(NSDictionary *)change
59 | {
60 | [super scrollViewContentSizeDidChange:change];
61 |
62 | // 设置位置
63 | self.mj_y = self.scrollView.mj_contentH;
64 | }
65 |
66 | - (void)scrollViewContentOffsetDidChange:(NSDictionary *)change
67 | {
68 | [super scrollViewContentOffsetDidChange:change];
69 |
70 | if (self.state != MJRefreshStateIdle || !self.automaticallyRefresh || self.mj_y == 0) return;
71 |
72 | if (_scrollView.mj_insetT + _scrollView.mj_contentH > _scrollView.mj_h) { // 内容超过一个屏幕
73 | // 这里的_scrollView.mj_contentH替换掉self.mj_y更为合理
74 | if (_scrollView.mj_offsetY >= _scrollView.mj_contentH - _scrollView.mj_h + self.mj_h * self.triggerAutomaticallyRefreshPercent + _scrollView.mj_insetB - self.mj_h) {
75 | // 防止手松开时连续调用
76 | CGPoint old = [change[@"old"] CGPointValue];
77 | CGPoint new = [change[@"new"] CGPointValue];
78 | if (new.y <= old.y) return;
79 |
80 | // 当底部刷新控件完全出现时,才刷新
81 | [self beginRefreshing];
82 | }
83 | }
84 | }
85 |
86 | - (void)scrollViewPanStateDidChange:(NSDictionary *)change
87 | {
88 | [super scrollViewPanStateDidChange:change];
89 |
90 | if (self.state != MJRefreshStateIdle) return;
91 |
92 | if (_scrollView.panGestureRecognizer.state == UIGestureRecognizerStateEnded) {// 手松开
93 | if (_scrollView.mj_insetT + _scrollView.mj_contentH <= _scrollView.mj_h) { // 不够一个屏幕
94 | if (_scrollView.mj_offsetY >= - _scrollView.mj_insetT) { // 向上拽
95 | [self beginRefreshing];
96 | }
97 | } else { // 超出一个屏幕
98 | if (_scrollView.mj_offsetY >= _scrollView.mj_contentH + _scrollView.mj_insetB - _scrollView.mj_h) {
99 | [self beginRefreshing];
100 | }
101 | }
102 | }
103 | }
104 |
105 | - (void)setState:(MJRefreshState)state
106 | {
107 | MJRefreshCheckState
108 |
109 | if (state == MJRefreshStateRefreshing) {
110 | dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
111 | [self executeRefreshingCallback];
112 | });
113 | } else if (state == MJRefreshStateNoMoreData || state == MJRefreshStateIdle) {
114 | if (MJRefreshStateRefreshing == oldState) {
115 | if (self.endRefreshingCompletionBlock) {
116 | self.endRefreshingCompletionBlock();
117 | }
118 | }
119 | }
120 | }
121 |
122 | - (void)setHidden:(BOOL)hidden
123 | {
124 | BOOL lastHidden = self.isHidden;
125 |
126 | [super setHidden:hidden];
127 |
128 | if (!lastHidden && hidden) {
129 | self.state = MJRefreshStateIdle;
130 |
131 | self.scrollView.mj_insetB -= self.mj_h;
132 | } else if (lastHidden && !hidden) {
133 | self.scrollView.mj_insetB += self.mj_h;
134 |
135 | // 设置位置
136 | self.mj_y = _scrollView.mj_contentH;
137 | }
138 | }
139 | @end
140 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Base/MJRefreshComponent.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // MJRefreshComponent.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/4.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 刷新控件的基类
9 |
10 | #import
11 | #import "MJRefreshConst.h"
12 | #import "UIView+MJExtension.h"
13 | #import "UIScrollView+MJExtension.h"
14 | #import "UIScrollView+MJRefresh.h"
15 | #import "NSBundle+MJRefresh.h"
16 |
17 | /** 刷新控件的状态 */
18 | typedef NS_ENUM(NSInteger, MJRefreshState) {
19 | /** 普通闲置状态 */
20 | MJRefreshStateIdle = 1,
21 | /** 松开就可以进行刷新的状态 */
22 | MJRefreshStatePulling,
23 | /** 正在刷新中的状态 */
24 | MJRefreshStateRefreshing,
25 | /** 即将刷新的状态 */
26 | MJRefreshStateWillRefresh,
27 | /** 所有数据加载完毕,没有更多的数据了 */
28 | MJRefreshStateNoMoreData
29 | };
30 |
31 | /** 进入刷新状态的回调 */
32 | typedef void (^MJRefreshComponentRefreshingBlock)(void);
33 | /** 开始刷新后的回调(进入刷新状态后的回调) */
34 | typedef void (^MJRefreshComponentbeginRefreshingCompletionBlock)(void);
35 | /** 结束刷新后的回调 */
36 | typedef void (^MJRefreshComponentEndRefreshingCompletionBlock)(void);
37 |
38 | /** 刷新控件的基类 */
39 | @interface MJRefreshComponent : UIView
40 | {
41 | /** 记录scrollView刚开始的inset */
42 | UIEdgeInsets _scrollViewOriginalInset;
43 | /** 父控件 */
44 | __weak UIScrollView *_scrollView;
45 | }
46 | #pragma mark - 刷新回调
47 | /** 正在刷新的回调 */
48 | @property (copy, nonatomic) MJRefreshComponentRefreshingBlock refreshingBlock;
49 | /** 设置回调对象和回调方法 */
50 | - (void)setRefreshingTarget:(id)target refreshingAction:(SEL)action;
51 |
52 | /** 回调对象 */
53 | @property (weak, nonatomic) id refreshingTarget;
54 | /** 回调方法 */
55 | @property (assign, nonatomic) SEL refreshingAction;
56 | /** 触发回调(交给子类去调用) */
57 | - (void)executeRefreshingCallback;
58 |
59 | #pragma mark - 刷新状态控制
60 | /** 进入刷新状态 */
61 | - (void)beginRefreshing;
62 | - (void)beginRefreshingWithCompletionBlock:(void (^)(void))completionBlock;
63 | /** 开始刷新后的回调(进入刷新状态后的回调) */
64 | @property (copy, nonatomic) MJRefreshComponentbeginRefreshingCompletionBlock beginRefreshingCompletionBlock;
65 | /** 结束刷新的回调 */
66 | @property (copy, nonatomic) MJRefreshComponentEndRefreshingCompletionBlock endRefreshingCompletionBlock;
67 | /** 结束刷新状态 */
68 | - (void)endRefreshing;
69 | - (void)endRefreshingWithCompletionBlock:(void (^)(void))completionBlock;
70 | /** 是否正在刷新 */
71 | @property (assign, nonatomic, readonly, getter=isRefreshing) BOOL refreshing;
72 | //- (BOOL)isRefreshing;
73 | /** 刷新状态 一般交给子类内部实现 */
74 | @property (assign, nonatomic) MJRefreshState state;
75 |
76 | #pragma mark - 交给子类去访问
77 | /** 记录scrollView刚开始的inset */
78 | @property (assign, nonatomic, readonly) UIEdgeInsets scrollViewOriginalInset;
79 | /** 父控件 */
80 | @property (weak, nonatomic, readonly) UIScrollView *scrollView;
81 |
82 | #pragma mark - 交给子类们去实现
83 | /** 初始化 */
84 | - (void)prepare NS_REQUIRES_SUPER;
85 | /** 摆放子控件frame */
86 | - (void)placeSubviews NS_REQUIRES_SUPER;
87 | /** 当scrollView的contentOffset发生改变的时候调用 */
88 | - (void)scrollViewContentOffsetDidChange:(NSDictionary *)change NS_REQUIRES_SUPER;
89 | /** 当scrollView的contentSize发生改变的时候调用 */
90 | - (void)scrollViewContentSizeDidChange:(NSDictionary *)change NS_REQUIRES_SUPER;
91 | /** 当scrollView的拖拽状态发生改变的时候调用 */
92 | - (void)scrollViewPanStateDidChange:(NSDictionary *)change NS_REQUIRES_SUPER;
93 |
94 |
95 | #pragma mark - 其他
96 | /** 拉拽的百分比(交给子类重写) */
97 | @property (assign, nonatomic) CGFloat pullingPercent;
98 | /** 根据拖拽比例自动切换透明度 */
99 | @property (assign, nonatomic, getter=isAutoChangeAlpha) BOOL autoChangeAlpha MJRefreshDeprecated("请使用automaticallyChangeAlpha属性");
100 | /** 根据拖拽比例自动切换透明度 */
101 | @property (assign, nonatomic, getter=isAutomaticallyChangeAlpha) BOOL automaticallyChangeAlpha;
102 | @end
103 |
104 | @interface UILabel(MJRefresh)
105 | + (instancetype)mj_label;
106 | - (CGFloat)mj_textWith;
107 | @end
108 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // MJRefreshFooter.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/5.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 上拉刷新控件
9 |
10 | #import "MJRefreshComponent.h"
11 |
12 | @interface MJRefreshFooter : MJRefreshComponent
13 | /** 创建footer */
14 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
15 | /** 创建footer */
16 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
17 |
18 | /** 提示没有更多的数据 */
19 | - (void)endRefreshingWithNoMoreData;
20 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData");
21 |
22 | /** 重置没有更多的数据(消除没有更多数据的状态) */
23 | - (void)resetNoMoreData;
24 |
25 | /** 忽略多少scrollView的contentInset的bottom */
26 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom;
27 |
28 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */
29 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden;
30 | @end
31 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.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 | // MJRefreshFooter.m
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/5.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | //
9 |
10 | #import "MJRefreshFooter.h"
11 |
12 | @interface MJRefreshFooter()
13 |
14 | @end
15 |
16 | @implementation MJRefreshFooter
17 | #pragma mark - 构造方法
18 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock
19 | {
20 | MJRefreshFooter *cmp = [[self alloc] init];
21 | cmp.refreshingBlock = refreshingBlock;
22 | return cmp;
23 | }
24 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action
25 | {
26 | MJRefreshFooter *cmp = [[self alloc] init];
27 | [cmp setRefreshingTarget:target refreshingAction:action];
28 | return cmp;
29 | }
30 |
31 | #pragma mark - 重写父类的方法
32 | - (void)prepare
33 | {
34 | [super prepare];
35 |
36 | // 设置自己的高度
37 | self.mj_h = MJRefreshFooterHeight;
38 |
39 | // 默认不会自动隐藏
40 | self.automaticallyHidden = NO;
41 | }
42 |
43 | - (void)willMoveToSuperview:(UIView *)newSuperview
44 | {
45 | [super willMoveToSuperview:newSuperview];
46 |
47 | if (newSuperview) {
48 | // 监听scrollView数据的变化
49 | if ([self.scrollView isKindOfClass:[UITableView class]] || [self.scrollView isKindOfClass:[UICollectionView class]]) {
50 | [self.scrollView setMj_reloadDataBlock:^(NSInteger totalDataCount) {
51 | if (self.isAutomaticallyHidden) {
52 | self.hidden = (totalDataCount == 0);
53 | }
54 | }];
55 | }
56 | }
57 | }
58 |
59 | #pragma mark - 公共方法
60 | - (void)endRefreshingWithNoMoreData
61 | {
62 | dispatch_async(dispatch_get_main_queue(), ^{
63 | self.state = MJRefreshStateNoMoreData;
64 | });
65 | }
66 |
67 | - (void)noticeNoMoreData
68 | {
69 | [self endRefreshingWithNoMoreData];
70 | }
71 |
72 | - (void)resetNoMoreData
73 | {
74 | dispatch_async(dispatch_get_main_queue(), ^{
75 | self.state = MJRefreshStateIdle;
76 | });
77 | }
78 | @end
79 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoGifFooter.m
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoGifFooter.h"
10 |
11 | @interface MJRefreshAutoGifFooter()
12 | {
13 | __unsafe_unretained UIImageView *_gifView;
14 | }
15 | /** 所有状态对应的动画图片 */
16 | @property (strong, nonatomic) NSMutableDictionary *stateImages;
17 | /** 所有状态对应的动画时间 */
18 | @property (strong, nonatomic) NSMutableDictionary *stateDurations;
19 | @end
20 |
21 | @implementation MJRefreshAutoGifFooter
22 | #pragma mark - 懒加载
23 | - (UIImageView *)gifView
24 | {
25 | if (!_gifView) {
26 | UIImageView *gifView = [[UIImageView alloc] init];
27 | [self addSubview:_gifView = gifView];
28 | }
29 | return _gifView;
30 | }
31 |
32 | - (NSMutableDictionary *)stateImages
33 | {
34 | if (!_stateImages) {
35 | self.stateImages = [NSMutableDictionary dictionary];
36 | }
37 | return _stateImages;
38 | }
39 |
40 | - (NSMutableDictionary *)stateDurations
41 | {
42 | if (!_stateDurations) {
43 | self.stateDurations = [NSMutableDictionary dictionary];
44 | }
45 | return _stateDurations;
46 | }
47 |
48 | #pragma mark - 公共方法
49 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state
50 | {
51 | if (images == nil) return;
52 |
53 | self.stateImages[@(state)] = images;
54 | self.stateDurations[@(state)] = @(duration);
55 |
56 | /* 根据图片设置控件的高度 */
57 | UIImage *image = [images firstObject];
58 | if (image.size.height > self.mj_h) {
59 | self.mj_h = image.size.height;
60 | }
61 | }
62 |
63 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state
64 | {
65 | [self setImages:images duration:images.count * 0.1 forState:state];
66 | }
67 |
68 | #pragma mark - 实现父类的方法
69 | - (void)prepare
70 | {
71 | [super prepare];
72 |
73 | // 初始化间距
74 | self.labelLeftInset = 20;
75 | }
76 |
77 | - (void)placeSubviews
78 | {
79 | [super placeSubviews];
80 |
81 | if (self.gifView.constraints.count) return;
82 |
83 | self.gifView.frame = self.bounds;
84 | if (self.isRefreshingTitleHidden) {
85 | self.gifView.contentMode = UIViewContentModeCenter;
86 | } else {
87 | self.gifView.contentMode = UIViewContentModeRight;
88 | self.gifView.mj_w = self.mj_w * 0.5 - self.labelLeftInset - self.stateLabel.mj_textWith * 0.5;
89 | }
90 | }
91 |
92 | - (void)setState:(MJRefreshState)state
93 | {
94 | MJRefreshCheckState
95 |
96 | // 根据状态做事情
97 | if (state == MJRefreshStateRefreshing) {
98 | NSArray *images = self.stateImages[@(state)];
99 | if (images.count == 0) return;
100 | [self.gifView stopAnimating];
101 |
102 | self.gifView.hidden = NO;
103 | if (images.count == 1) { // 单张图片
104 | self.gifView.image = [images lastObject];
105 | } else { // 多张图片
106 | self.gifView.animationImages = images;
107 | self.gifView.animationDuration = [self.stateDurations[@(state)] doubleValue];
108 | [self.gifView startAnimating];
109 | }
110 | } else if (state == MJRefreshStateNoMoreData || state == MJRefreshStateIdle) {
111 | [self.gifView stopAnimating];
112 | self.gifView.hidden = YES;
113 | }
114 | }
115 | @end
116 |
117 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoNormalFooter.m
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoNormalFooter.h"
10 |
11 | @interface MJRefreshAutoNormalFooter()
12 | @property (weak, nonatomic) UIActivityIndicatorView *loadingView;
13 | @end
14 |
15 | @implementation MJRefreshAutoNormalFooter
16 | #pragma mark - 懒加载子控件
17 | - (UIActivityIndicatorView *)loadingView
18 | {
19 | if (!_loadingView) {
20 | UIActivityIndicatorView *loadingView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:self.activityIndicatorViewStyle];
21 | loadingView.hidesWhenStopped = YES;
22 | [self addSubview:_loadingView = loadingView];
23 | }
24 | return _loadingView;
25 | }
26 |
27 | - (void)setActivityIndicatorViewStyle:(UIActivityIndicatorViewStyle)activityIndicatorViewStyle
28 | {
29 | _activityIndicatorViewStyle = activityIndicatorViewStyle;
30 |
31 | self.loadingView = nil;
32 | [self setNeedsLayout];
33 | }
34 | #pragma mark - 重写父类的方法
35 | - (void)prepare
36 | {
37 | [super prepare];
38 |
39 | self.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
40 | }
41 |
42 | - (void)placeSubviews
43 | {
44 | [super placeSubviews];
45 |
46 | if (self.loadingView.constraints.count) return;
47 |
48 | // 圈圈
49 | CGFloat loadingCenterX = self.mj_w * 0.5;
50 | if (!self.isRefreshingTitleHidden) {
51 | loadingCenterX -= self.stateLabel.mj_textWith * 0.5 + self.labelLeftInset;
52 | }
53 | CGFloat loadingCenterY = self.mj_h * 0.5;
54 | self.loadingView.center = CGPointMake(loadingCenterX, loadingCenterY);
55 | }
56 |
57 | - (void)setState:(MJRefreshState)state
58 | {
59 | MJRefreshCheckState
60 |
61 | // 根据状态做事情
62 | if (state == MJRefreshStateNoMoreData || state == MJRefreshStateIdle) {
63 | [self.loadingView stopAnimating];
64 | } else if (state == MJRefreshStateRefreshing) {
65 | [self.loadingView startAnimating];
66 | }
67 | }
68 |
69 | @end
70 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoStateFooter.m
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/6/13.
6 | // Copyright © 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoStateFooter.h"
10 |
11 | @interface MJRefreshAutoStateFooter()
12 | {
13 | /** 显示刷新状态的label */
14 | __unsafe_unretained UILabel *_stateLabel;
15 | }
16 | /** 所有状态对应的文字 */
17 | @property (strong, nonatomic) NSMutableDictionary *stateTitles;
18 | @end
19 |
20 | @implementation MJRefreshAutoStateFooter
21 | #pragma mark - 懒加载
22 | - (NSMutableDictionary *)stateTitles
23 | {
24 | if (!_stateTitles) {
25 | self.stateTitles = [NSMutableDictionary dictionary];
26 | }
27 | return _stateTitles;
28 | }
29 |
30 | - (UILabel *)stateLabel
31 | {
32 | if (!_stateLabel) {
33 | [self addSubview:_stateLabel = [UILabel mj_label]];
34 | }
35 | return _stateLabel;
36 | }
37 |
38 | #pragma mark - 公共方法
39 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state
40 | {
41 | if (title == nil) return;
42 | self.stateTitles[@(state)] = title;
43 | self.stateLabel.text = self.stateTitles[@(self.state)];
44 | }
45 |
46 | #pragma mark - 私有方法
47 | - (void)stateLabelClick
48 | {
49 | if (self.state == MJRefreshStateIdle) {
50 | [self beginRefreshing];
51 | }
52 | }
53 |
54 | #pragma mark - 重写父类的方法
55 | - (void)prepare
56 | {
57 | [super prepare];
58 |
59 | // 初始化间距
60 | self.labelLeftInset = MJRefreshLabelLeftInset;
61 |
62 | // 初始化文字
63 | [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterIdleText] forState:MJRefreshStateIdle];
64 | [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterRefreshingText] forState:MJRefreshStateRefreshing];
65 | [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshAutoFooterNoMoreDataText] forState:MJRefreshStateNoMoreData];
66 |
67 | // 监听label
68 | self.stateLabel.userInteractionEnabled = YES;
69 | [self.stateLabel addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(stateLabelClick)]];
70 | }
71 |
72 | - (void)placeSubviews
73 | {
74 | [super placeSubviews];
75 |
76 | if (self.stateLabel.constraints.count) return;
77 |
78 | // 状态标签
79 | self.stateLabel.frame = self.bounds;
80 | }
81 |
82 | - (void)setState:(MJRefreshState)state
83 | {
84 | MJRefreshCheckState
85 |
86 | if (self.isRefreshingTitleHidden && state == MJRefreshStateRefreshing) {
87 | self.stateLabel.text = nil;
88 | } else {
89 | self.stateLabel.text = self.stateTitles[@(state)];
90 | }
91 | }
92 | @end
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackGifFooter.m
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackGifFooter.h"
10 |
11 | @interface MJRefreshBackGifFooter()
12 | {
13 | __unsafe_unretained UIImageView *_gifView;
14 | }
15 | /** 所有状态对应的动画图片 */
16 | @property (strong, nonatomic) NSMutableDictionary *stateImages;
17 | /** 所有状态对应的动画时间 */
18 | @property (strong, nonatomic) NSMutableDictionary *stateDurations;
19 | @end
20 |
21 | @implementation MJRefreshBackGifFooter
22 | #pragma mark - 懒加载
23 | - (UIImageView *)gifView
24 | {
25 | if (!_gifView) {
26 | UIImageView *gifView = [[UIImageView alloc] init];
27 | [self addSubview:_gifView = gifView];
28 | }
29 | return _gifView;
30 | }
31 |
32 | - (NSMutableDictionary *)stateImages
33 | {
34 | if (!_stateImages) {
35 | self.stateImages = [NSMutableDictionary dictionary];
36 | }
37 | return _stateImages;
38 | }
39 |
40 | - (NSMutableDictionary *)stateDurations
41 | {
42 | if (!_stateDurations) {
43 | self.stateDurations = [NSMutableDictionary dictionary];
44 | }
45 | return _stateDurations;
46 | }
47 |
48 | #pragma mark - 公共方法
49 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state
50 | {
51 | if (images == nil) return;
52 |
53 | self.stateImages[@(state)] = images;
54 | self.stateDurations[@(state)] = @(duration);
55 |
56 | /* 根据图片设置控件的高度 */
57 | UIImage *image = [images firstObject];
58 | if (image.size.height > self.mj_h) {
59 | self.mj_h = image.size.height;
60 | }
61 | }
62 |
63 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state
64 | {
65 | [self setImages:images duration:images.count * 0.1 forState:state];
66 | }
67 |
68 | #pragma mark - 实现父类的方法
69 | - (void)prepare
70 | {
71 | [super prepare];
72 |
73 | // 初始化间距
74 | self.labelLeftInset = 20;
75 | }
76 |
77 | - (void)setPullingPercent:(CGFloat)pullingPercent
78 | {
79 | [super setPullingPercent:pullingPercent];
80 | NSArray *images = self.stateImages[@(MJRefreshStateIdle)];
81 | if (self.state != MJRefreshStateIdle || images.count == 0) return;
82 | [self.gifView stopAnimating];
83 | NSUInteger index = images.count * pullingPercent;
84 | if (index >= images.count) index = images.count - 1;
85 | self.gifView.image = images[index];
86 | }
87 |
88 | - (void)placeSubviews
89 | {
90 | [super placeSubviews];
91 |
92 | if (self.gifView.constraints.count) return;
93 |
94 | self.gifView.frame = self.bounds;
95 | if (self.stateLabel.hidden) {
96 | self.gifView.contentMode = UIViewContentModeCenter;
97 | } else {
98 | self.gifView.contentMode = UIViewContentModeRight;
99 | self.gifView.mj_w = self.mj_w * 0.5 - self.labelLeftInset - self.stateLabel.mj_textWith * 0.5;
100 | }
101 | }
102 |
103 | - (void)setState:(MJRefreshState)state
104 | {
105 | MJRefreshCheckState
106 |
107 | // 根据状态做事情
108 | if (state == MJRefreshStatePulling || state == MJRefreshStateRefreshing) {
109 | NSArray *images = self.stateImages[@(state)];
110 | if (images.count == 0) return;
111 |
112 | self.gifView.hidden = NO;
113 | [self.gifView stopAnimating];
114 | if (images.count == 1) { // 单张图片
115 | self.gifView.image = [images lastObject];
116 | } else { // 多张图片
117 | self.gifView.animationImages = images;
118 | self.gifView.animationDuration = [self.stateDurations[@(state)] doubleValue];
119 | [self.gifView startAnimating];
120 | }
121 | } else if (state == MJRefreshStateIdle) {
122 | self.gifView.hidden = NO;
123 | } else if (state == MJRefreshStateNoMoreData) {
124 | self.gifView.hidden = YES;
125 | }
126 | }
127 | @end
128 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackNormalFooter.m
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackNormalFooter.h"
10 | #import "NSBundle+MJRefresh.h"
11 |
12 | @interface MJRefreshBackNormalFooter()
13 | {
14 | __unsafe_unretained UIImageView *_arrowView;
15 | }
16 | @property (weak, nonatomic) UIActivityIndicatorView *loadingView;
17 | @end
18 |
19 | @implementation MJRefreshBackNormalFooter
20 | #pragma mark - 懒加载子控件
21 | - (UIImageView *)arrowView
22 | {
23 | if (!_arrowView) {
24 | UIImageView *arrowView = [[UIImageView alloc] initWithImage:[NSBundle mj_arrowImage]];
25 | [self addSubview:_arrowView = arrowView];
26 | }
27 | return _arrowView;
28 | }
29 |
30 |
31 | - (UIActivityIndicatorView *)loadingView
32 | {
33 | if (!_loadingView) {
34 | UIActivityIndicatorView *loadingView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:self.activityIndicatorViewStyle];
35 | loadingView.hidesWhenStopped = YES;
36 | [self addSubview:_loadingView = loadingView];
37 | }
38 | return _loadingView;
39 | }
40 |
41 | - (void)setActivityIndicatorViewStyle:(UIActivityIndicatorViewStyle)activityIndicatorViewStyle
42 | {
43 | _activityIndicatorViewStyle = activityIndicatorViewStyle;
44 |
45 | self.loadingView = nil;
46 | [self setNeedsLayout];
47 | }
48 | #pragma mark - 重写父类的方法
49 | - (void)prepare
50 | {
51 | [super prepare];
52 |
53 | self.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
54 | }
55 |
56 | - (void)placeSubviews
57 | {
58 | [super placeSubviews];
59 |
60 | // 箭头的中心点
61 | CGFloat arrowCenterX = self.mj_w * 0.5;
62 | if (!self.stateLabel.hidden) {
63 | arrowCenterX -= self.labelLeftInset + self.stateLabel.mj_textWith * 0.5;
64 | }
65 | CGFloat arrowCenterY = self.mj_h * 0.5;
66 | CGPoint arrowCenter = CGPointMake(arrowCenterX, arrowCenterY);
67 |
68 | // 箭头
69 | if (self.arrowView.constraints.count == 0) {
70 | self.arrowView.mj_size = self.arrowView.image.size;
71 | self.arrowView.center = arrowCenter;
72 | }
73 |
74 | // 圈圈
75 | if (self.loadingView.constraints.count == 0) {
76 | self.loadingView.center = arrowCenter;
77 | }
78 |
79 | self.arrowView.tintColor = self.stateLabel.textColor;
80 | }
81 |
82 | - (void)setState:(MJRefreshState)state
83 | {
84 | MJRefreshCheckState
85 |
86 | // 根据状态做事情
87 | if (state == MJRefreshStateIdle) {
88 | if (oldState == MJRefreshStateRefreshing) {
89 | self.arrowView.transform = CGAffineTransformMakeRotation(0.000001 - M_PI);
90 | [UIView animateWithDuration:MJRefreshSlowAnimationDuration animations:^{
91 | self.loadingView.alpha = 0.0;
92 | } completion:^(BOOL finished) {
93 | self.loadingView.alpha = 1.0;
94 | [self.loadingView stopAnimating];
95 |
96 | self.arrowView.hidden = NO;
97 | }];
98 | } else {
99 | self.arrowView.hidden = NO;
100 | [self.loadingView stopAnimating];
101 | [UIView animateWithDuration:MJRefreshFastAnimationDuration animations:^{
102 | self.arrowView.transform = CGAffineTransformMakeRotation(0.000001 - M_PI);
103 | }];
104 | }
105 | } else if (state == MJRefreshStatePulling) {
106 | self.arrowView.hidden = NO;
107 | [self.loadingView stopAnimating];
108 | [UIView animateWithDuration:MJRefreshFastAnimationDuration animations:^{
109 | self.arrowView.transform = CGAffineTransformIdentity;
110 | }];
111 | } else if (state == MJRefreshStateRefreshing) {
112 | self.arrowView.hidden = YES;
113 | [self.loadingView startAnimating];
114 | } else if (state == MJRefreshStateNoMoreData) {
115 | self.arrowView.hidden = YES;
116 | [self.loadingView stopAnimating];
117 | }
118 | }
119 |
120 | @end
121 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackStateFooter.m
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/6/13.
6 | // Copyright © 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackStateFooter.h"
10 |
11 | @interface MJRefreshBackStateFooter()
12 | {
13 | /** 显示刷新状态的label */
14 | __unsafe_unretained UILabel *_stateLabel;
15 | }
16 | /** 所有状态对应的文字 */
17 | @property (strong, nonatomic) NSMutableDictionary *stateTitles;
18 | @end
19 |
20 | @implementation MJRefreshBackStateFooter
21 | #pragma mark - 懒加载
22 | - (NSMutableDictionary *)stateTitles
23 | {
24 | if (!_stateTitles) {
25 | self.stateTitles = [NSMutableDictionary dictionary];
26 | }
27 | return _stateTitles;
28 | }
29 |
30 | - (UILabel *)stateLabel
31 | {
32 | if (!_stateLabel) {
33 | [self addSubview:_stateLabel = [UILabel mj_label]];
34 | }
35 | return _stateLabel;
36 | }
37 |
38 | #pragma mark - 公共方法
39 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state
40 | {
41 | if (title == nil) return;
42 | self.stateTitles[@(state)] = title;
43 | self.stateLabel.text = self.stateTitles[@(self.state)];
44 | }
45 |
46 | - (NSString *)titleForState:(MJRefreshState)state {
47 | return self.stateTitles[@(state)];
48 | }
49 |
50 | #pragma mark - 重写父类的方法
51 | - (void)prepare
52 | {
53 | [super prepare];
54 |
55 | // 初始化间距
56 | self.labelLeftInset = MJRefreshLabelLeftInset;
57 |
58 | // 初始化文字
59 | [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterIdleText] forState:MJRefreshStateIdle];
60 | [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterPullingText] forState:MJRefreshStatePulling];
61 | [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterRefreshingText] forState:MJRefreshStateRefreshing];
62 | [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterNoMoreDataText] forState:MJRefreshStateNoMoreData];
63 | }
64 |
65 | - (void)placeSubviews
66 | {
67 | [super placeSubviews];
68 |
69 | if (self.stateLabel.constraints.count) return;
70 |
71 | // 状态标签
72 | self.stateLabel.frame = self.bounds;
73 | }
74 |
75 | - (void)setState:(MJRefreshState)state
76 | {
77 | MJRefreshCheckState
78 |
79 | // 设置状态文字
80 | self.stateLabel.text = self.stateTitles[@(state)];
81 | }
82 | @end
83 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshGifHeader.m
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshGifHeader.h"
10 |
11 | @interface MJRefreshGifHeader()
12 | {
13 | __unsafe_unretained UIImageView *_gifView;
14 | }
15 | /** 所有状态对应的动画图片 */
16 | @property (strong, nonatomic) NSMutableDictionary *stateImages;
17 | /** 所有状态对应的动画时间 */
18 | @property (strong, nonatomic) NSMutableDictionary *stateDurations;
19 | @end
20 |
21 | @implementation MJRefreshGifHeader
22 | #pragma mark - 懒加载
23 | - (UIImageView *)gifView
24 | {
25 | if (!_gifView) {
26 | UIImageView *gifView = [[UIImageView alloc] init];
27 | [self addSubview:_gifView = gifView];
28 | }
29 | return _gifView;
30 | }
31 |
32 | - (NSMutableDictionary *)stateImages
33 | {
34 | if (!_stateImages) {
35 | self.stateImages = [NSMutableDictionary dictionary];
36 | }
37 | return _stateImages;
38 | }
39 |
40 | - (NSMutableDictionary *)stateDurations
41 | {
42 | if (!_stateDurations) {
43 | self.stateDurations = [NSMutableDictionary dictionary];
44 | }
45 | return _stateDurations;
46 | }
47 |
48 | #pragma mark - 公共方法
49 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state
50 | {
51 | if (images == nil) return;
52 |
53 | self.stateImages[@(state)] = images;
54 | self.stateDurations[@(state)] = @(duration);
55 |
56 | /* 根据图片设置控件的高度 */
57 | UIImage *image = [images firstObject];
58 | if (image.size.height > self.mj_h) {
59 | self.mj_h = image.size.height;
60 | }
61 | }
62 |
63 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state
64 | {
65 | [self setImages:images duration:images.count * 0.1 forState:state];
66 | }
67 |
68 | #pragma mark - 实现父类的方法
69 | - (void)prepare
70 | {
71 | [super prepare];
72 |
73 | // 初始化间距
74 | self.labelLeftInset = 20;
75 | }
76 |
77 | - (void)setPullingPercent:(CGFloat)pullingPercent
78 | {
79 | [super setPullingPercent:pullingPercent];
80 | NSArray *images = self.stateImages[@(MJRefreshStateIdle)];
81 | if (self.state != MJRefreshStateIdle || images.count == 0) return;
82 | // 停止动画
83 | [self.gifView stopAnimating];
84 | // 设置当前需要显示的图片
85 | NSUInteger index = images.count * pullingPercent;
86 | if (index >= images.count) index = images.count - 1;
87 | self.gifView.image = images[index];
88 | }
89 |
90 | - (void)placeSubviews
91 | {
92 | [super placeSubviews];
93 |
94 | if (self.gifView.constraints.count) return;
95 |
96 | self.gifView.frame = self.bounds;
97 | if (self.stateLabel.hidden && self.lastUpdatedTimeLabel.hidden) {
98 | self.gifView.contentMode = UIViewContentModeCenter;
99 | } else {
100 | self.gifView.contentMode = UIViewContentModeRight;
101 |
102 | CGFloat stateWidth = self.stateLabel.mj_textWith;
103 | CGFloat timeWidth = 0.0;
104 | if (!self.lastUpdatedTimeLabel.hidden) {
105 | timeWidth = self.lastUpdatedTimeLabel.mj_textWith;
106 | }
107 | CGFloat textWidth = MAX(stateWidth, timeWidth);
108 | self.gifView.mj_w = self.mj_w * 0.5 - textWidth * 0.5 - self.labelLeftInset;
109 | }
110 | }
111 |
112 | - (void)setState:(MJRefreshState)state
113 | {
114 | MJRefreshCheckState
115 |
116 | // 根据状态做事情
117 | if (state == MJRefreshStatePulling || state == MJRefreshStateRefreshing) {
118 | NSArray *images = self.stateImages[@(state)];
119 | if (images.count == 0) return;
120 |
121 | [self.gifView stopAnimating];
122 | if (images.count == 1) { // 单张图片
123 | self.gifView.image = [images lastObject];
124 | } else { // 多张图片
125 | self.gifView.animationImages = images;
126 | self.gifView.animationDuration = [self.stateDurations[@(state)] doubleValue];
127 | [self.gifView startAnimating];
128 | }
129 | } else if (state == MJRefreshStateIdle) {
130 | [self.gifView stopAnimating];
131 | }
132 | }
133 | @end
134 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshNormalHeader.m
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshNormalHeader.h"
10 | #import "NSBundle+MJRefresh.h"
11 |
12 | @interface MJRefreshNormalHeader()
13 | {
14 | __unsafe_unretained UIImageView *_arrowView;
15 | }
16 | @property (weak, nonatomic) UIActivityIndicatorView *loadingView;
17 | @end
18 |
19 | @implementation MJRefreshNormalHeader
20 | #pragma mark - 懒加载子控件
21 | - (UIImageView *)arrowView
22 | {
23 | if (!_arrowView) {
24 | UIImageView *arrowView = [[UIImageView alloc] initWithImage:[NSBundle mj_arrowImage]];
25 | [self addSubview:_arrowView = arrowView];
26 | }
27 | return _arrowView;
28 | }
29 |
30 | - (UIActivityIndicatorView *)loadingView
31 | {
32 | if (!_loadingView) {
33 | UIActivityIndicatorView *loadingView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:self.activityIndicatorViewStyle];
34 | loadingView.hidesWhenStopped = YES;
35 | [self addSubview:_loadingView = loadingView];
36 | }
37 | return _loadingView;
38 | }
39 |
40 | #pragma mark - 公共方法
41 | - (void)setActivityIndicatorViewStyle:(UIActivityIndicatorViewStyle)activityIndicatorViewStyle
42 | {
43 | _activityIndicatorViewStyle = activityIndicatorViewStyle;
44 |
45 | self.loadingView = nil;
46 | [self setNeedsLayout];
47 | }
48 |
49 | #pragma mark - 重写父类的方法
50 | - (void)prepare
51 | {
52 | [super prepare];
53 |
54 | self.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
55 | }
56 |
57 | - (void)placeSubviews
58 | {
59 | [super placeSubviews];
60 |
61 | // 箭头的中心点
62 | CGFloat arrowCenterX = self.mj_w * 0.5;
63 | if (!self.stateLabel.hidden) {
64 | CGFloat stateWidth = self.stateLabel.mj_textWith;
65 | CGFloat timeWidth = 0.0;
66 | if (!self.lastUpdatedTimeLabel.hidden) {
67 | timeWidth = self.lastUpdatedTimeLabel.mj_textWith;
68 | }
69 | CGFloat textWidth = MAX(stateWidth, timeWidth);
70 | arrowCenterX -= textWidth / 2 + self.labelLeftInset;
71 | }
72 | CGFloat arrowCenterY = self.mj_h * 0.5;
73 | CGPoint arrowCenter = CGPointMake(arrowCenterX, arrowCenterY);
74 |
75 | // 箭头
76 | if (self.arrowView.constraints.count == 0) {
77 | self.arrowView.mj_size = self.arrowView.image.size;
78 | self.arrowView.center = arrowCenter;
79 | }
80 |
81 | // 圈圈
82 | if (self.loadingView.constraints.count == 0) {
83 | self.loadingView.center = arrowCenter;
84 | }
85 |
86 | self.arrowView.tintColor = self.stateLabel.textColor;
87 | }
88 |
89 | - (void)setState:(MJRefreshState)state
90 | {
91 | MJRefreshCheckState
92 |
93 | // 根据状态做事情
94 | if (state == MJRefreshStateIdle) {
95 | if (oldState == MJRefreshStateRefreshing) {
96 | self.arrowView.transform = CGAffineTransformIdentity;
97 |
98 | [UIView animateWithDuration:MJRefreshSlowAnimationDuration animations:^{
99 | self.loadingView.alpha = 0.0;
100 | } completion:^(BOOL finished) {
101 | // 如果执行完动画发现不是idle状态,就直接返回,进入其他状态
102 | if (self.state != MJRefreshStateIdle) return;
103 |
104 | self.loadingView.alpha = 1.0;
105 | [self.loadingView stopAnimating];
106 | self.arrowView.hidden = NO;
107 | }];
108 | } else {
109 | [self.loadingView stopAnimating];
110 | self.arrowView.hidden = NO;
111 | [UIView animateWithDuration:MJRefreshFastAnimationDuration animations:^{
112 | self.arrowView.transform = CGAffineTransformIdentity;
113 | }];
114 | }
115 | } else if (state == MJRefreshStatePulling) {
116 | [self.loadingView stopAnimating];
117 | self.arrowView.hidden = NO;
118 | [UIView animateWithDuration:MJRefreshFastAnimationDuration animations:^{
119 | self.arrowView.transform = CGAffineTransformMakeRotation(0.000001 - M_PI);
120 | }];
121 | } else if (state == MJRefreshStateRefreshing) {
122 | self.loadingView.alpha = 1.0; // 防止refreshing -> idle的动画完毕动作没有被执行
123 | [self.loadingView startAnimating];
124 | self.arrowView.hidden = YES;
125 | }
126 | }
127 | @end
128 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayer/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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"
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/MJRefreshConst.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | #import
4 | #import
5 |
6 | // 弱引用
7 | #define MJWeakSelf __weak typeof(self) weakSelf = self;
8 |
9 | // 日志输出
10 | #ifdef DEBUG
11 | #define MJRefreshLog(...) NSLog(__VA_ARGS__)
12 | #else
13 | #define MJRefreshLog(...)
14 | #endif
15 |
16 | // 过期提醒
17 | #define MJRefreshDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead)
18 |
19 | // 运行时objc_msgSend
20 | #define MJRefreshMsgSend(...) ((void (*)(void *, SEL, UIView *))objc_msgSend)(__VA_ARGS__)
21 | #define MJRefreshMsgTarget(target) (__bridge void *)(target)
22 |
23 | // RGB颜色
24 | #define MJRefreshColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
25 |
26 | // 文字颜色
27 | #define MJRefreshLabelTextColor MJRefreshColor(90, 90, 90)
28 |
29 | // 字体大小
30 | #define MJRefreshLabelFont [UIFont boldSystemFontOfSize:14]
31 |
32 | // 常量
33 | UIKIT_EXTERN const CGFloat MJRefreshLabelLeftInset;
34 | UIKIT_EXTERN const CGFloat MJRefreshHeaderHeight;
35 | UIKIT_EXTERN const CGFloat MJRefreshFooterHeight;
36 | UIKIT_EXTERN const CGFloat MJRefreshFastAnimationDuration;
37 | UIKIT_EXTERN const CGFloat MJRefreshSlowAnimationDuration;
38 |
39 | UIKIT_EXTERN NSString *const MJRefreshKeyPathContentOffset;
40 | UIKIT_EXTERN NSString *const MJRefreshKeyPathContentSize;
41 | UIKIT_EXTERN NSString *const MJRefreshKeyPathContentInset;
42 | UIKIT_EXTERN NSString *const MJRefreshKeyPathPanState;
43 |
44 | UIKIT_EXTERN NSString *const MJRefreshHeaderLastUpdatedTimeKey;
45 |
46 | UIKIT_EXTERN NSString *const MJRefreshHeaderIdleText;
47 | UIKIT_EXTERN NSString *const MJRefreshHeaderPullingText;
48 | UIKIT_EXTERN NSString *const MJRefreshHeaderRefreshingText;
49 |
50 | UIKIT_EXTERN NSString *const MJRefreshAutoFooterIdleText;
51 | UIKIT_EXTERN NSString *const MJRefreshAutoFooterRefreshingText;
52 | UIKIT_EXTERN NSString *const MJRefreshAutoFooterNoMoreDataText;
53 |
54 | UIKIT_EXTERN NSString *const MJRefreshBackFooterIdleText;
55 | UIKIT_EXTERN NSString *const MJRefreshBackFooterPullingText;
56 | UIKIT_EXTERN NSString *const MJRefreshBackFooterRefreshingText;
57 | UIKIT_EXTERN NSString *const MJRefreshBackFooterNoMoreDataText;
58 |
59 | UIKIT_EXTERN NSString *const MJRefreshHeaderLastTimeText;
60 | UIKIT_EXTERN NSString *const MJRefreshHeaderDateTodayText;
61 | UIKIT_EXTERN NSString *const MJRefreshHeaderNoneLastDateText;
62 |
63 | // 状态检查
64 | #define MJRefreshCheckState \
65 | MJRefreshState oldState = self.state; \
66 | if (state == oldState) return; \
67 | [super setState:state];
68 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/MJRefreshConst.m:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | #import
4 |
5 | const CGFloat MJRefreshLabelLeftInset = 25;
6 | const CGFloat MJRefreshHeaderHeight = 54.0;
7 | const CGFloat MJRefreshFooterHeight = 44.0;
8 | const CGFloat MJRefreshFastAnimationDuration = 0.25;
9 | const CGFloat MJRefreshSlowAnimationDuration = 0.4;
10 |
11 | NSString *const MJRefreshKeyPathContentOffset = @"contentOffset";
12 | NSString *const MJRefreshKeyPathContentInset = @"contentInset";
13 | NSString *const MJRefreshKeyPathContentSize = @"contentSize";
14 | NSString *const MJRefreshKeyPathPanState = @"state";
15 |
16 | NSString *const MJRefreshHeaderLastUpdatedTimeKey = @"MJRefreshHeaderLastUpdatedTimeKey";
17 |
18 | NSString *const MJRefreshHeaderIdleText = @"MJRefreshHeaderIdleText";
19 | NSString *const MJRefreshHeaderPullingText = @"MJRefreshHeaderPullingText";
20 | NSString *const MJRefreshHeaderRefreshingText = @"MJRefreshHeaderRefreshingText";
21 |
22 | NSString *const MJRefreshAutoFooterIdleText = @"MJRefreshAutoFooterIdleText";
23 | NSString *const MJRefreshAutoFooterRefreshingText = @"MJRefreshAutoFooterRefreshingText";
24 | NSString *const MJRefreshAutoFooterNoMoreDataText = @"MJRefreshAutoFooterNoMoreDataText";
25 |
26 | NSString *const MJRefreshBackFooterIdleText = @"MJRefreshBackFooterIdleText";
27 | NSString *const MJRefreshBackFooterPullingText = @"MJRefreshBackFooterPullingText";
28 | NSString *const MJRefreshBackFooterRefreshingText = @"MJRefreshBackFooterRefreshingText";
29 | NSString *const MJRefreshBackFooterNoMoreDataText = @"MJRefreshBackFooterNoMoreDataText";
30 |
31 | NSString *const MJRefreshHeaderLastTimeText = @"MJRefreshHeaderLastTimeText";
32 | NSString *const MJRefreshHeaderDateTodayText = @"MJRefreshHeaderDateTodayText";
33 | NSString *const MJRefreshHeaderNoneLastDateText = @"MJRefreshHeaderNoneLastDateText";
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSBundle+MJRefresh.m
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 16/6/13.
6 | // Copyright © 2016年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "NSBundle+MJRefresh.h"
10 | #import "MJRefreshComponent.h"
11 |
12 | @implementation NSBundle (MJRefresh)
13 | + (instancetype)mj_refreshBundle
14 | {
15 | static NSBundle *refreshBundle = nil;
16 | if (refreshBundle == nil) {
17 | // 这里不使用mainBundle是为了适配pod 1.x和0.x
18 | refreshBundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[MJRefreshComponent class]] pathForResource:@"MJRefresh" ofType:@"bundle"]];
19 | }
20 | return refreshBundle;
21 | }
22 |
23 | + (UIImage *)mj_arrowImage
24 | {
25 | static UIImage *arrowImage = nil;
26 | if (arrowImage == nil) {
27 | arrowImage = [[UIImage imageWithContentsOfFile:[[self mj_refreshBundle] pathForResource:@"arrow@2x" ofType:@"png"]] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
28 | }
29 | return arrowImage;
30 | }
31 |
32 | + (NSString *)mj_localizedStringForKey:(NSString *)key
33 | {
34 | return [self mj_localizedStringForKey:key value:nil];
35 | }
36 |
37 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value
38 | {
39 | static NSBundle *bundle = nil;
40 | if (bundle == nil) {
41 | // (iOS获取的语言字符串比较不稳定)目前框架只处理en、zh-Hans、zh-Hant三种情况,其他按照系统默认处理
42 | NSString *language = [NSLocale preferredLanguages].firstObject;
43 | if ([language hasPrefix:@"en"]) {
44 | language = @"en";
45 | } else if ([language hasPrefix:@"zh"]) {
46 | if ([language rangeOfString:@"Hans"].location != NSNotFound) {
47 | language = @"zh-Hans"; // 简体中文
48 | } else { // zh-Hant\zh-HK\zh-TW
49 | language = @"zh-Hant"; // 繁體中文
50 | }
51 | } else {
52 | language = @"en";
53 | }
54 |
55 | // 从MJRefresh.bundle中查找资源
56 | bundle = [NSBundle bundleWithPath:[[NSBundle mj_refreshBundle] pathForResource:language ofType:@"lproj"]];
57 | }
58 | value = [bundle localizedStringForKey:key value:value table:nil];
59 | return [[NSBundle mainBundle] localizedStringForKey:key value:value table:nil];
60 | }
61 | @end
62 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.m:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIScrollView+Extension.m
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 14-5-28.
7 | // Copyright (c) 2014年 小码哥. All rights reserved.
8 | //
9 |
10 | #import "UIScrollView+MJExtension.h"
11 | #import
12 |
13 | #define SYSTEM_VERSION_GREATER_NOT_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
14 |
15 | #pragma clang diagnostic push
16 | #pragma clang diagnostic ignored "-Wunguarded-availability-new"
17 |
18 | @implementation UIScrollView (MJExtension)
19 |
20 | - (UIEdgeInsets)mj_inset
21 | {
22 | #ifdef __IPHONE_11_0
23 | if (SYSTEM_VERSION_GREATER_NOT_LESS_THAN(@"11.0")) {
24 | return self.adjustedContentInset;
25 | }
26 | #endif
27 | return self.contentInset;
28 | }
29 |
30 | - (void)setMj_insetT:(CGFloat)mj_insetT
31 | {
32 | UIEdgeInsets inset = self.contentInset;
33 | inset.top = mj_insetT;
34 | #ifdef __IPHONE_11_0
35 | if (SYSTEM_VERSION_GREATER_NOT_LESS_THAN(@"11.0")) {
36 | inset.top -= (self.adjustedContentInset.top - self.contentInset.top);
37 | }
38 | #endif
39 | self.contentInset = inset;
40 | }
41 |
42 | - (CGFloat)mj_insetT
43 | {
44 | return self.mj_inset.top;
45 | }
46 |
47 | - (void)setMj_insetB:(CGFloat)mj_insetB
48 | {
49 | UIEdgeInsets inset = self.contentInset;
50 | inset.bottom = mj_insetB;
51 | #ifdef __IPHONE_11_0
52 | if (SYSTEM_VERSION_GREATER_NOT_LESS_THAN(@"11.0")) {
53 | inset.bottom -= (self.adjustedContentInset.bottom - self.contentInset.bottom);
54 | }
55 | #endif
56 | self.contentInset = inset;
57 | }
58 |
59 | - (CGFloat)mj_insetB
60 | {
61 | return self.mj_inset.bottom;
62 | }
63 |
64 | - (void)setMj_insetL:(CGFloat)mj_insetL
65 | {
66 | UIEdgeInsets inset = self.contentInset;
67 | inset.left = mj_insetL;
68 | #ifdef __IPHONE_11_0
69 | if (SYSTEM_VERSION_GREATER_NOT_LESS_THAN(@"11.0")) {
70 | inset.left -= (self.adjustedContentInset.left - self.contentInset.left);
71 | }
72 | #endif
73 | self.contentInset = inset;
74 | }
75 |
76 | - (CGFloat)mj_insetL
77 | {
78 | return self.mj_inset.left;
79 | }
80 |
81 | - (void)setMj_insetR:(CGFloat)mj_insetR
82 | {
83 | UIEdgeInsets inset = self.contentInset;
84 | inset.right = mj_insetR;
85 | #ifdef __IPHONE_11_0
86 | if (SYSTEM_VERSION_GREATER_NOT_LESS_THAN(@"11.0")) {
87 | inset.right -= (self.adjustedContentInset.right - self.contentInset.right);
88 | }
89 | #endif
90 | self.contentInset = inset;
91 | }
92 |
93 | - (CGFloat)mj_insetR
94 | {
95 | return self.mj_inset.right;
96 | }
97 |
98 | - (void)setMj_offsetX:(CGFloat)mj_offsetX
99 | {
100 | CGPoint offset = self.contentOffset;
101 | offset.x = mj_offsetX;
102 | self.contentOffset = offset;
103 | }
104 |
105 | - (CGFloat)mj_offsetX
106 | {
107 | return self.contentOffset.x;
108 | }
109 |
110 | - (void)setMj_offsetY:(CGFloat)mj_offsetY
111 | {
112 | CGPoint offset = self.contentOffset;
113 | offset.y = mj_offsetY;
114 | self.contentOffset = offset;
115 | }
116 |
117 | - (CGFloat)mj_offsetY
118 | {
119 | return self.contentOffset.y;
120 | }
121 |
122 | - (void)setMj_contentW:(CGFloat)mj_contentW
123 | {
124 | CGSize size = self.contentSize;
125 | size.width = mj_contentW;
126 | self.contentSize = size;
127 | }
128 |
129 | - (CGFloat)mj_contentW
130 | {
131 | return self.contentSize.width;
132 | }
133 |
134 | - (void)setMj_contentH:(CGFloat)mj_contentH
135 | {
136 | CGSize size = self.contentSize;
137 | size.height = mj_contentH;
138 | self.contentSize = size;
139 | }
140 |
141 | - (CGFloat)mj_contentH
142 | {
143 | return self.contentSize.height;
144 | }
145 | @end
146 | #pragma clang diagnostic pop
147 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Masonry (1.0.2)
3 | - MBProgressHUD (1.0.0)
4 | - MJRefresh (3.1.15)
5 | - SDWebImage (3.8.2):
6 | - SDWebImage/Core (= 3.8.2)
7 | - SDWebImage/Core (3.8.2)
8 |
9 | DEPENDENCIES:
10 | - Masonry (~> 1.0.2)
11 | - MBProgressHUD (~> 1.0.0)
12 | - MJRefresh (~> 3.1.15)
13 | - SDWebImage (~> 3.8.2)
14 |
15 | SPEC CHECKSUMS:
16 | Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e
17 | MBProgressHUD: 4890f671c94e8a0f3cf959aa731e9de2f036d71a
18 | MJRefresh: 9af70f5f9327a2cf87f0fb5929f35fcc2fa638ea
19 | SDWebImage: 098e97e6176540799c27e804c96653ee0833d13c
20 |
21 | PODFILE CHECKSUM: 0c0e8ca572093a5138240a4aa4ca250892b2f8ba
22 |
23 | COCOAPODS: 1.4.0.beta.2
24 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/MASCompositeConstraint.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASCompositeConstraint.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 21/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASConstraint.h"
10 | #import "MASUtilities.h"
11 |
12 | /**
13 | * A group of MASConstraint objects
14 | */
15 | @interface MASCompositeConstraint : MASConstraint
16 |
17 | /**
18 | * Creates a composite with a predefined array of children
19 | *
20 | * @param children child MASConstraints
21 | *
22 | * @return a composite constraint
23 | */
24 | - (id)initWithChildren:(NSArray *)children;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/MASConstraint+Private.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASConstraint+Private.h
3 | // Masonry
4 | //
5 | // Created by Nick Tymchenko on 29/04/14.
6 | // Copyright (c) 2014 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASConstraint.h"
10 |
11 | @protocol MASConstraintDelegate;
12 |
13 |
14 | @interface MASConstraint ()
15 |
16 | /**
17 | * Whether or not to check for an existing constraint instead of adding constraint
18 | */
19 | @property (nonatomic, assign) BOOL updateExisting;
20 |
21 | /**
22 | * Usually MASConstraintMaker but could be a parent MASConstraint
23 | */
24 | @property (nonatomic, weak) id delegate;
25 |
26 | /**
27 | * Based on a provided value type, is equal to calling:
28 | * NSNumber - setOffset:
29 | * NSValue with CGPoint - setPointOffset:
30 | * NSValue with CGSize - setSizeOffset:
31 | * NSValue with MASEdgeInsets - setInsets:
32 | */
33 | - (void)setLayoutConstantWithValue:(NSValue *)value;
34 |
35 | @end
36 |
37 |
38 | @interface MASConstraint (Abstract)
39 |
40 | /**
41 | * Sets the constraint relation to given NSLayoutRelation
42 | * returns a block which accepts one of the following:
43 | * MASViewAttribute, UIView, NSValue, NSArray
44 | * see readme for more details.
45 | */
46 | - (MASConstraint * (^)(id, NSLayoutRelation))equalToWithRelation;
47 |
48 | /**
49 | * Override to set a custom chaining behaviour
50 | */
51 | - (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute;
52 |
53 | @end
54 |
55 |
56 | @protocol MASConstraintDelegate
57 |
58 | /**
59 | * Notifies the delegate when the constraint needs to be replaced with another constraint. For example
60 | * A MASViewConstraint may turn into a MASCompositeConstraint when an array is passed to one of the equality blocks
61 | */
62 | - (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(MASConstraint *)replacementConstraint;
63 |
64 | - (MASConstraint *)constraint:(MASConstraint *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute;
65 |
66 | @end
67 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/MASLayoutConstraint.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASLayoutConstraint.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 |
11 | /**
12 | * When you are debugging or printing the constraints attached to a view this subclass
13 | * makes it easier to identify which constraints have been created via Masonry
14 | */
15 | @interface MASLayoutConstraint : NSLayoutConstraint
16 |
17 | /**
18 | * a key to associate with this constraint
19 | */
20 | @property (nonatomic, strong) id mas_key;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/MASLayoutConstraint.m:
--------------------------------------------------------------------------------
1 | //
2 | // MASLayoutConstraint.m
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASLayoutConstraint.h"
10 |
11 | @implementation MASLayoutConstraint
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/MASViewAttribute.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASAttribute.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 21/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 |
11 | /**
12 | * An immutable tuple which stores the view and the related NSLayoutAttribute.
13 | * Describes part of either the left or right hand side of a constraint equation
14 | */
15 | @interface MASViewAttribute : NSObject
16 |
17 | /**
18 | * The view which the reciever relates to. Can be nil if item is not a view.
19 | */
20 | @property (nonatomic, weak, readonly) MAS_VIEW *view;
21 |
22 | /**
23 | * The item which the reciever relates to.
24 | */
25 | @property (nonatomic, weak, readonly) id item;
26 |
27 | /**
28 | * The attribute which the reciever relates to
29 | */
30 | @property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute;
31 |
32 | /**
33 | * Convenience initializer.
34 | */
35 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute;
36 |
37 | /**
38 | * The designated initializer.
39 | */
40 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute;
41 |
42 | /**
43 | * Determine whether the layoutAttribute is a size attribute
44 | *
45 | * @return YES if layoutAttribute is equal to NSLayoutAttributeWidth or NSLayoutAttributeHeight
46 | */
47 | - (BOOL)isSizeAttribute;
48 |
49 | @end
50 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/MASViewAttribute.m:
--------------------------------------------------------------------------------
1 | //
2 | // MASAttribute.m
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 21/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASViewAttribute.h"
10 |
11 | @implementation MASViewAttribute
12 |
13 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute {
14 | self = [self initWithView:view item:view layoutAttribute:layoutAttribute];
15 | return self;
16 | }
17 |
18 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute {
19 | self = [super init];
20 | if (!self) return nil;
21 |
22 | _view = view;
23 | _item = item;
24 | _layoutAttribute = layoutAttribute;
25 |
26 | return self;
27 | }
28 |
29 | - (BOOL)isSizeAttribute {
30 | return self.layoutAttribute == NSLayoutAttributeWidth
31 | || self.layoutAttribute == NSLayoutAttributeHeight;
32 | }
33 |
34 | - (BOOL)isEqual:(MASViewAttribute *)viewAttribute {
35 | if ([viewAttribute isKindOfClass:self.class]) {
36 | return self.view == viewAttribute.view
37 | && self.layoutAttribute == viewAttribute.layoutAttribute;
38 | }
39 | return [super isEqual:viewAttribute];
40 | }
41 |
42 | - (NSUInteger)hash {
43 | return MAS_NSUINTROTATE([self.view hash], MAS_NSUINT_BIT / 2) ^ self.layoutAttribute;
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/MASViewConstraint.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASConstraint.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 20/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASViewAttribute.h"
10 | #import "MASConstraint.h"
11 | #import "MASLayoutConstraint.h"
12 | #import "MASUtilities.h"
13 |
14 | /**
15 | * A single constraint.
16 | * Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view
17 | */
18 | @interface MASViewConstraint : MASConstraint
19 |
20 | /**
21 | * First item/view and first attribute of the NSLayoutConstraint
22 | */
23 | @property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute;
24 |
25 | /**
26 | * Second item/view and second attribute of the NSLayoutConstraint
27 | */
28 | @property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute;
29 |
30 | /**
31 | * initialises the MASViewConstraint with the first part of the equation
32 | *
33 | * @param firstViewAttribute view.mas_left, view.mas_width etc.
34 | *
35 | * @return a new view constraint
36 | */
37 | - (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute;
38 |
39 | /**
40 | * Returns all MASViewConstraints installed with this view as a first item.
41 | *
42 | * @param view A view to retrieve constraints for.
43 | *
44 | * @return An array of MASViewConstraints.
45 | */
46 | + (NSArray *)installedConstraintsForView:(MAS_VIEW *)view;
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/Masonry.h:
--------------------------------------------------------------------------------
1 | //
2 | // Masonry.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 20/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | //! Project version number for Masonry.
12 | FOUNDATION_EXPORT double MasonryVersionNumber;
13 |
14 | //! Project version string for Masonry.
15 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[];
16 |
17 | #import "MASUtilities.h"
18 | #import "View+MASAdditions.h"
19 | #import "View+MASShorthandAdditions.h"
20 | #import "ViewController+MASAdditions.h"
21 | #import "NSArray+MASAdditions.h"
22 | #import "NSArray+MASShorthandAdditions.h"
23 | #import "MASConstraint.h"
24 | #import "MASCompositeConstraint.h"
25 | #import "MASViewAttribute.h"
26 | #import "MASViewConstraint.h"
27 | #import "MASConstraintMaker.h"
28 | #import "MASLayoutConstraint.h"
29 | #import "NSLayoutConstraint+MASDebugAdditions.h"
30 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/NSArray+MASAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+MASAdditions.h
3 | //
4 | //
5 | // Created by Daniel Hammond on 11/26/13.
6 | //
7 | //
8 |
9 | #import "MASUtilities.h"
10 | #import "MASConstraintMaker.h"
11 | #import "MASViewAttribute.h"
12 |
13 | typedef NS_ENUM(NSUInteger, MASAxisType) {
14 | MASAxisTypeHorizontal,
15 | MASAxisTypeVertical
16 | };
17 |
18 | @interface NSArray (MASAdditions)
19 |
20 | /**
21 | * Creates a MASConstraintMaker with each view in the callee.
22 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing on each view
23 | *
24 | * @param block scope within which you can build up the constraints which you wish to apply to each view.
25 | *
26 | * @return Array of created MASConstraints
27 | */
28 | - (NSArray *)mas_makeConstraints:(void (^)(MASConstraintMaker *make))block;
29 |
30 | /**
31 | * Creates a MASConstraintMaker with each view in the callee.
32 | * Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view.
33 | * If an existing constraint exists then it will be updated instead.
34 | *
35 | * @param block scope within which you can build up the constraints which you wish to apply to each view.
36 | *
37 | * @return Array of created/updated MASConstraints
38 | */
39 | - (NSArray *)mas_updateConstraints:(void (^)(MASConstraintMaker *make))block;
40 |
41 | /**
42 | * Creates a MASConstraintMaker with each view in the callee.
43 | * Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view.
44 | * All constraints previously installed for the views will be removed.
45 | *
46 | * @param block scope within which you can build up the constraints which you wish to apply to each view.
47 | *
48 | * @return Array of created/updated MASConstraints
49 | */
50 | - (NSArray *)mas_remakeConstraints:(void (^)(MASConstraintMaker *make))block;
51 |
52 | /**
53 | * distribute with fixed spacing
54 | *
55 | * @param axisType which axis to distribute items along
56 | * @param fixedSpacing the spacing between each item
57 | * @param leadSpacing the spacing before the first item and the container
58 | * @param tailSpacing the spacing after the last item and the container
59 | */
60 | - (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedSpacing:(CGFloat)fixedSpacing leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;
61 |
62 | /**
63 | * distribute with fixed item size
64 | *
65 | * @param axisType which axis to distribute items along
66 | * @param fixedItemLength the fixed length of each item
67 | * @param leadSpacing the spacing before the first item and the container
68 | * @param tailSpacing the spacing after the last item and the container
69 | */
70 | - (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedItemLength:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;
71 |
72 | @end
73 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/NSArray+MASShorthandAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+MASShorthandAdditions.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 22/07/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "NSArray+MASAdditions.h"
10 |
11 | #ifdef MAS_SHORTHAND
12 |
13 | /**
14 | * Shorthand array additions without the 'mas_' prefixes,
15 | * only enabled if MAS_SHORTHAND is defined
16 | */
17 | @interface NSArray (MASShorthandAdditions)
18 |
19 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block;
20 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block;
21 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block;
22 |
23 | @end
24 |
25 | @implementation NSArray (MASShorthandAdditions)
26 |
27 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block {
28 | return [self mas_makeConstraints:block];
29 | }
30 |
31 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block {
32 | return [self mas_updateConstraints:block];
33 | }
34 |
35 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block {
36 | return [self mas_remakeConstraints:block];
37 | }
38 |
39 | @end
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSLayoutConstraint+MASDebugAdditions.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 |
11 | /**
12 | * makes debug and log output of NSLayoutConstraints more readable
13 | */
14 | @interface NSLayoutConstraint (MASDebugAdditions)
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/View+MASAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+MASAdditions.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 20/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 | #import "MASConstraintMaker.h"
11 | #import "MASViewAttribute.h"
12 |
13 | /**
14 | * Provides constraint maker block
15 | * and convience methods for creating MASViewAttribute which are view + NSLayoutAttribute pairs
16 | */
17 | @interface MAS_VIEW (MASAdditions)
18 |
19 | /**
20 | * following properties return a new MASViewAttribute with current view and appropriate NSLayoutAttribute
21 | */
22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_left;
23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_top;
24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_right;
25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottom;
26 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_leading;
27 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_trailing;
28 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_width;
29 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_height;
30 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerX;
31 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerY;
32 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_baseline;
33 | @property (nonatomic, strong, readonly) MASViewAttribute *(^mas_attribute)(NSLayoutAttribute attr);
34 |
35 | #if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
36 |
37 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_firstBaseline;
38 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_lastBaseline;
39 |
40 | #endif
41 |
42 | #if TARGET_OS_IPHONE || TARGET_OS_TV
43 |
44 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_leftMargin;
45 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_rightMargin;
46 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topMargin;
47 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomMargin;
48 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_leadingMargin;
49 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_trailingMargin;
50 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerXWithinMargins;
51 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerYWithinMargins;
52 |
53 | #endif
54 |
55 | /**
56 | * a key to associate with this view
57 | */
58 | @property (nonatomic, strong) id mas_key;
59 |
60 | /**
61 | * Finds the closest common superview between this view and another view
62 | *
63 | * @param view other view
64 | *
65 | * @return returns nil if common superview could not be found
66 | */
67 | - (instancetype)mas_closestCommonSuperview:(MAS_VIEW *)view;
68 |
69 | /**
70 | * Creates a MASConstraintMaker with the callee view.
71 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing
72 | *
73 | * @param block scope within which you can build up the constraints which you wish to apply to the view.
74 | *
75 | * @return Array of created MASConstraints
76 | */
77 | - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block;
78 |
79 | /**
80 | * Creates a MASConstraintMaker with the callee view.
81 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing.
82 | * If an existing constraint exists then it will be updated instead.
83 | *
84 | * @param block scope within which you can build up the constraints which you wish to apply to the view.
85 | *
86 | * @return Array of created/updated MASConstraints
87 | */
88 | - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block;
89 |
90 | /**
91 | * Creates a MASConstraintMaker with the callee view.
92 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing.
93 | * All constraints previously installed for the view will be removed.
94 | *
95 | * @param block scope within which you can build up the constraints which you wish to apply to the view.
96 | *
97 | * @return Array of created/updated MASConstraints
98 | */
99 | - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block;
100 |
101 | @end
102 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/View+MASShorthandAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+MASShorthandAdditions.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 22/07/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "View+MASAdditions.h"
10 |
11 | #ifdef MAS_SHORTHAND
12 |
13 | /**
14 | * Shorthand view additions without the 'mas_' prefixes,
15 | * only enabled if MAS_SHORTHAND is defined
16 | */
17 | @interface MAS_VIEW (MASShorthandAdditions)
18 |
19 | @property (nonatomic, strong, readonly) MASViewAttribute *left;
20 | @property (nonatomic, strong, readonly) MASViewAttribute *top;
21 | @property (nonatomic, strong, readonly) MASViewAttribute *right;
22 | @property (nonatomic, strong, readonly) MASViewAttribute *bottom;
23 | @property (nonatomic, strong, readonly) MASViewAttribute *leading;
24 | @property (nonatomic, strong, readonly) MASViewAttribute *trailing;
25 | @property (nonatomic, strong, readonly) MASViewAttribute *width;
26 | @property (nonatomic, strong, readonly) MASViewAttribute *height;
27 | @property (nonatomic, strong, readonly) MASViewAttribute *centerX;
28 | @property (nonatomic, strong, readonly) MASViewAttribute *centerY;
29 | @property (nonatomic, strong, readonly) MASViewAttribute *baseline;
30 | @property (nonatomic, strong, readonly) MASViewAttribute *(^attribute)(NSLayoutAttribute attr);
31 |
32 | #if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
33 |
34 | @property (nonatomic, strong, readonly) MASViewAttribute *firstBaseline;
35 | @property (nonatomic, strong, readonly) MASViewAttribute *lastBaseline;
36 |
37 | #endif
38 |
39 | #if TARGET_OS_IPHONE || TARGET_OS_TV
40 |
41 | @property (nonatomic, strong, readonly) MASViewAttribute *leftMargin;
42 | @property (nonatomic, strong, readonly) MASViewAttribute *rightMargin;
43 | @property (nonatomic, strong, readonly) MASViewAttribute *topMargin;
44 | @property (nonatomic, strong, readonly) MASViewAttribute *bottomMargin;
45 | @property (nonatomic, strong, readonly) MASViewAttribute *leadingMargin;
46 | @property (nonatomic, strong, readonly) MASViewAttribute *trailingMargin;
47 | @property (nonatomic, strong, readonly) MASViewAttribute *centerXWithinMargins;
48 | @property (nonatomic, strong, readonly) MASViewAttribute *centerYWithinMargins;
49 |
50 | #endif
51 |
52 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block;
53 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block;
54 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block;
55 |
56 | @end
57 |
58 | #define MAS_ATTR_FORWARD(attr) \
59 | - (MASViewAttribute *)attr { \
60 | return [self mas_##attr]; \
61 | }
62 |
63 | @implementation MAS_VIEW (MASShorthandAdditions)
64 |
65 | MAS_ATTR_FORWARD(top);
66 | MAS_ATTR_FORWARD(left);
67 | MAS_ATTR_FORWARD(bottom);
68 | MAS_ATTR_FORWARD(right);
69 | MAS_ATTR_FORWARD(leading);
70 | MAS_ATTR_FORWARD(trailing);
71 | MAS_ATTR_FORWARD(width);
72 | MAS_ATTR_FORWARD(height);
73 | MAS_ATTR_FORWARD(centerX);
74 | MAS_ATTR_FORWARD(centerY);
75 | MAS_ATTR_FORWARD(baseline);
76 |
77 | #if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
78 |
79 | MAS_ATTR_FORWARD(firstBaseline);
80 | MAS_ATTR_FORWARD(lastBaseline);
81 |
82 | #endif
83 |
84 | #if TARGET_OS_IPHONE || TARGET_OS_TV
85 |
86 | MAS_ATTR_FORWARD(leftMargin);
87 | MAS_ATTR_FORWARD(rightMargin);
88 | MAS_ATTR_FORWARD(topMargin);
89 | MAS_ATTR_FORWARD(bottomMargin);
90 | MAS_ATTR_FORWARD(leadingMargin);
91 | MAS_ATTR_FORWARD(trailingMargin);
92 | MAS_ATTR_FORWARD(centerXWithinMargins);
93 | MAS_ATTR_FORWARD(centerYWithinMargins);
94 |
95 | #endif
96 |
97 | - (MASViewAttribute *(^)(NSLayoutAttribute))attribute {
98 | return [self mas_attribute];
99 | }
100 |
101 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block {
102 | return [self mas_makeConstraints:block];
103 | }
104 |
105 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block {
106 | return [self mas_updateConstraints:block];
107 | }
108 |
109 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block {
110 | return [self mas_remakeConstraints:block];
111 | }
112 |
113 | @end
114 |
115 | #endif
116 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/ViewController+MASAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+MASAdditions.h
3 | // Masonry
4 | //
5 | // Created by Craig Siemens on 2015-06-23.
6 | //
7 | //
8 |
9 | #import "MASUtilities.h"
10 | #import "MASConstraintMaker.h"
11 | #import "MASViewAttribute.h"
12 |
13 | #ifdef MAS_VIEW_CONTROLLER
14 |
15 | @interface MAS_VIEW_CONTROLLER (MASAdditions)
16 |
17 | /**
18 | * following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute
19 | */
20 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide;
21 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide;
22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop;
23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom;
24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop;
25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom;
26 |
27 |
28 | @end
29 |
30 | #endif
31 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Masonry/Masonry/ViewController+MASAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+MASAdditions.m
3 | // Masonry
4 | //
5 | // Created by Craig Siemens on 2015-06-23.
6 | //
7 | //
8 |
9 | #import "ViewController+MASAdditions.h"
10 |
11 | #ifdef MAS_VIEW_CONTROLLER
12 |
13 | @implementation MAS_VIEW_CONTROLLER (MASAdditions)
14 |
15 | - (MASViewAttribute *)mas_topLayoutGuide {
16 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
17 | }
18 | - (MASViewAttribute *)mas_topLayoutGuideTop {
19 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeTop];
20 | }
21 | - (MASViewAttribute *)mas_topLayoutGuideBottom {
22 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
23 | }
24 |
25 | - (MASViewAttribute *)mas_bottomLayoutGuide {
26 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop];
27 | }
28 | - (MASViewAttribute *)mas_bottomLayoutGuideTop {
29 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop];
30 | }
31 | - (MASViewAttribute *)mas_bottomLayoutGuideBottom {
32 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
33 | }
34 |
35 |
36 |
37 | @end
38 |
39 | #endif
40 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2016 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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Fabrice Aneche on 06/01/14.
3 | // Copyright (c) 2014 Dailymotion. All rights reserved.
4 | //
5 |
6 | #import
7 |
8 | @interface NSData (ImageContentType)
9 |
10 | /**
11 | * Compute the content type for an image data
12 | *
13 | * @param data the input data
14 | *
15 | * @return the content type as string (i.e. image/jpeg, image/gif)
16 | */
17 | + (NSString *)sd_contentTypeForImageData:(NSData *)data;
18 |
19 | @end
20 |
21 |
22 | @interface NSData (ImageContentTypeDeprecated)
23 |
24 | + (NSString *)contentTypeForImageData:(NSData *)data __deprecated_msg("Use `sd_contentTypeForImageData:`");
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Fabrice Aneche on 06/01/14.
3 | // Copyright (c) 2014 Dailymotion. All rights reserved.
4 | //
5 |
6 | #import "NSData+ImageContentType.h"
7 |
8 |
9 | @implementation NSData (ImageContentType)
10 |
11 | + (NSString *)sd_contentTypeForImageData:(NSData *)data {
12 | uint8_t c;
13 | [data getBytes:&c length:1];
14 | switch (c) {
15 | case 0xFF:
16 | return @"image/jpeg";
17 | case 0x89:
18 | return @"image/png";
19 | case 0x47:
20 | return @"image/gif";
21 | case 0x49:
22 | case 0x4D:
23 | return @"image/tiff";
24 | case 0x52:
25 | // R as RIFF for WEBP
26 | if ([data length] < 12) {
27 | return nil;
28 | }
29 |
30 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
31 | if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
32 | return @"image/webp";
33 | }
34 |
35 | return nil;
36 | }
37 | return nil;
38 | }
39 |
40 | @end
41 |
42 |
43 | @implementation NSData (ImageContentTypeDeprecated)
44 |
45 | + (NSString *)contentTypeForImageData:(NSData *)data {
46 | return [self sd_contentTypeForImageData:data];
47 | }
48 |
49 | @end
50 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/SDWebImage/SDWebImageCompat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Jamie Pinkham
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 |
12 | #ifdef __OBJC_GC__
13 | #error SDWebImage does not support Objective-C Garbage Collection
14 | #endif
15 |
16 | #if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0
17 | #error SDWebImage doesn't support Deployment Target version < 5.0
18 | #endif
19 |
20 | #if !TARGET_OS_IPHONE
21 | #import
22 | #ifndef UIImage
23 | #define UIImage NSImage
24 | #endif
25 | #ifndef UIImageView
26 | #define UIImageView NSImageView
27 | #endif
28 | #else
29 |
30 | #import
31 |
32 | #endif
33 |
34 | #ifndef NS_ENUM
35 | #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
36 | #endif
37 |
38 | #ifndef NS_OPTIONS
39 | #define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type
40 | #endif
41 |
42 | #if OS_OBJECT_USE_OBJC
43 | #undef SDDispatchQueueRelease
44 | #undef SDDispatchQueueSetterSementics
45 | #define SDDispatchQueueRelease(q)
46 | #define SDDispatchQueueSetterSementics strong
47 | #else
48 | #undef SDDispatchQueueRelease
49 | #undef SDDispatchQueueSetterSementics
50 | #define SDDispatchQueueRelease(q) (dispatch_release(q))
51 | #define SDDispatchQueueSetterSementics assign
52 | #endif
53 |
54 | extern UIImage *SDScaledImageForKey(NSString *key, UIImage *image);
55 |
56 | typedef void(^SDWebImageNoParamsBlock)();
57 |
58 | extern NSString *const SDWebImageErrorDomain;
59 |
60 | #define dispatch_main_sync_safe(block)\
61 | if ([NSThread isMainThread]) {\
62 | block();\
63 | } else {\
64 | dispatch_sync(dispatch_get_main_queue(), block);\
65 | }
66 |
67 | #define dispatch_main_async_safe(block)\
68 | if ([NSThread isMainThread]) {\
69 | block();\
70 | } else {\
71 | dispatch_async(dispatch_get_main_queue(), block);\
72 | }
73 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m:
--------------------------------------------------------------------------------
1 | //
2 | // SDWebImageCompat.m
3 | // SDWebImage
4 | //
5 | // Created by Olivier Poitrey on 11/12/12.
6 | // Copyright (c) 2012 Dailymotion. All rights reserved.
7 | //
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if !__has_feature(objc_arc)
12 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag
13 | #endif
14 |
15 | inline UIImage *SDScaledImageForKey(NSString *key, UIImage *image) {
16 | if (!image) {
17 | return nil;
18 | }
19 |
20 | if ([image.images count] > 0) {
21 | NSMutableArray *scaledImages = [NSMutableArray array];
22 |
23 | for (UIImage *tempImage in image.images) {
24 | [scaledImages addObject:SDScaledImageForKey(key, tempImage)];
25 | }
26 |
27 | return [UIImage animatedImageWithImages:scaledImages duration:image.duration];
28 | }
29 | else {
30 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
31 | CGFloat scale = 1;
32 | if (key.length >= 8) {
33 | NSRange range = [key rangeOfString:@"@2x."];
34 | if (range.location != NSNotFound) {
35 | scale = 2.0;
36 | }
37 |
38 | range = [key rangeOfString:@"@3x."];
39 | if (range.location != NSNotFound) {
40 | scale = 3.0;
41 | }
42 | }
43 |
44 | UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation];
45 | image = scaledImage;
46 | }
47 | return image;
48 | }
49 | }
50 |
51 | NSString *const SDWebImageErrorDomain = @"SDWebImageErrorDomain";
52 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/SDWebImage/SDWebImageDecoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * Created by james on 9/28/11.
6 | *
7 | * For the full copyright and license information, please view the LICENSE
8 | * file that was distributed with this source code.
9 | */
10 |
11 | #import
12 | #import "SDWebImageCompat.h"
13 |
14 | @interface UIImage (ForceDecode)
15 |
16 | + (UIImage *)decodedImageWithImage:(UIImage *)image;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/SDWebImage/SDWebImageDecoder.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * Created by james on 9/28/11.
6 | *
7 | * For the full copyright and license information, please view the LICENSE
8 | * file that was distributed with this source code.
9 | */
10 |
11 | #import "SDWebImageDecoder.h"
12 |
13 | @implementation UIImage (ForceDecode)
14 |
15 | + (UIImage *)decodedImageWithImage:(UIImage *)image {
16 | // while downloading huge amount of images
17 | // autorelease the bitmap context
18 | // and all vars to help system to free memory
19 | // when there are memory warning.
20 | // on iOS7, do not forget to call
21 | // [[SDImageCache sharedImageCache] clearMemory];
22 |
23 | if (image == nil) { // Prevent "CGBitmapContextCreateImage: invalid context 0x0" error
24 | return nil;
25 | }
26 |
27 | @autoreleasepool{
28 | // do not decode animated images
29 | if (image.images != nil) {
30 | return image;
31 | }
32 |
33 | CGImageRef imageRef = image.CGImage;
34 |
35 | CGImageAlphaInfo alpha = CGImageGetAlphaInfo(imageRef);
36 | BOOL anyAlpha = (alpha == kCGImageAlphaFirst ||
37 | alpha == kCGImageAlphaLast ||
38 | alpha == kCGImageAlphaPremultipliedFirst ||
39 | alpha == kCGImageAlphaPremultipliedLast);
40 | if (anyAlpha) {
41 | return image;
42 | }
43 |
44 | // current
45 | CGColorSpaceModel imageColorSpaceModel = CGColorSpaceGetModel(CGImageGetColorSpace(imageRef));
46 | CGColorSpaceRef colorspaceRef = CGImageGetColorSpace(imageRef);
47 |
48 | BOOL unsupportedColorSpace = (imageColorSpaceModel == kCGColorSpaceModelUnknown ||
49 | imageColorSpaceModel == kCGColorSpaceModelMonochrome ||
50 | imageColorSpaceModel == kCGColorSpaceModelCMYK ||
51 | imageColorSpaceModel == kCGColorSpaceModelIndexed);
52 | if (unsupportedColorSpace) {
53 | colorspaceRef = CGColorSpaceCreateDeviceRGB();
54 | }
55 |
56 | size_t width = CGImageGetWidth(imageRef);
57 | size_t height = CGImageGetHeight(imageRef);
58 | NSUInteger bytesPerPixel = 4;
59 | NSUInteger bytesPerRow = bytesPerPixel * width;
60 | NSUInteger bitsPerComponent = 8;
61 |
62 |
63 | // kCGImageAlphaNone is not supported in CGBitmapContextCreate.
64 | // Since the original image here has no alpha info, use kCGImageAlphaNoneSkipLast
65 | // to create bitmap graphics contexts without alpha info.
66 | CGContextRef context = CGBitmapContextCreate(NULL,
67 | width,
68 | height,
69 | bitsPerComponent,
70 | bytesPerRow,
71 | colorspaceRef,
72 | kCGBitmapByteOrderDefault|kCGImageAlphaNoneSkipLast);
73 |
74 | // Draw the image into the context and retrieve the new bitmap image without alpha
75 | CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
76 | CGImageRef imageRefWithoutAlpha = CGBitmapContextCreateImage(context);
77 | UIImage *imageWithoutAlpha = [UIImage imageWithCGImage:imageRefWithoutAlpha
78 | scale:image.scale
79 | orientation:image.imageOrientation];
80 |
81 | if (unsupportedColorSpace) {
82 | CGColorSpaceRelease(colorspaceRef);
83 | }
84 |
85 | CGContextRelease(context);
86 | CGImageRelease(imageRefWithoutAlpha);
87 |
88 | return imageWithoutAlpha;
89 | }
90 | }
91 |
92 | @end
93 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.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 "SDWebImageManager.h"
11 |
12 | @class SDWebImagePrefetcher;
13 |
14 | @protocol SDWebImagePrefetcherDelegate
15 |
16 | @optional
17 |
18 | /**
19 | * Called when an image was prefetched.
20 | *
21 | * @param imagePrefetcher The current image prefetcher
22 | * @param imageURL The image url that was prefetched
23 | * @param finishedCount The total number of images that were prefetched (successful or not)
24 | * @param totalCount The total number of images that were to be prefetched
25 | */
26 | - (void)imagePrefetcher:(SDWebImagePrefetcher *)imagePrefetcher didPrefetchURL:(NSURL *)imageURL finishedCount:(NSUInteger)finishedCount totalCount:(NSUInteger)totalCount;
27 |
28 | /**
29 | * Called when all images are prefetched.
30 | * @param imagePrefetcher The current image prefetcher
31 | * @param totalCount The total number of images that were prefetched (whether successful or not)
32 | * @param skippedCount The total number of images that were skipped
33 | */
34 | - (void)imagePrefetcher:(SDWebImagePrefetcher *)imagePrefetcher didFinishWithTotalCount:(NSUInteger)totalCount skippedCount:(NSUInteger)skippedCount;
35 |
36 | @end
37 |
38 | typedef void(^SDWebImagePrefetcherProgressBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls);
39 | typedef void(^SDWebImagePrefetcherCompletionBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls);
40 |
41 | /**
42 | * Prefetch some URLs in the cache for future use. Images are downloaded in low priority.
43 | */
44 | @interface SDWebImagePrefetcher : NSObject
45 |
46 | /**
47 | * The web image manager
48 | */
49 | @property (strong, nonatomic, readonly) SDWebImageManager *manager;
50 |
51 | /**
52 | * Maximum number of URLs to prefetch at the same time. Defaults to 3.
53 | */
54 | @property (nonatomic, assign) NSUInteger maxConcurrentDownloads;
55 |
56 | /**
57 | * SDWebImageOptions for prefetcher. Defaults to SDWebImageLowPriority.
58 | */
59 | @property (nonatomic, assign) SDWebImageOptions options;
60 |
61 | /**
62 | * Queue options for Prefetcher. Defaults to Main Queue.
63 | */
64 | @property (nonatomic, assign) dispatch_queue_t prefetcherQueue;
65 |
66 | @property (weak, nonatomic) id delegate;
67 |
68 | /**
69 | * Return the global image prefetcher instance.
70 | */
71 | + (SDWebImagePrefetcher *)sharedImagePrefetcher;
72 |
73 | /**
74 | * Allows you to instantiate a prefetcher with any arbitrary image manager.
75 | */
76 | - (id)initWithImageManager:(SDWebImageManager *)manager;
77 |
78 | /**
79 | * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching,
80 | * currently one image is downloaded at a time,
81 | * and skips images for failed downloads and proceed to the next image in the list
82 | *
83 | * @param urls list of URLs to prefetch
84 | */
85 | - (void)prefetchURLs:(NSArray *)urls;
86 |
87 | /**
88 | * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching,
89 | * currently one image is downloaded at a time,
90 | * and skips images for failed downloads and proceed to the next image in the list
91 | *
92 | * @param urls list of URLs to prefetch
93 | * @param progressBlock block to be called when progress updates;
94 | * first parameter is the number of completed (successful or not) requests,
95 | * second parameter is the total number of images originally requested to be prefetched
96 | * @param completionBlock block to be called when prefetching is completed
97 | * first param is the number of completed (successful or not) requests,
98 | * second parameter is the number of skipped requests
99 | */
100 | - (void)prefetchURLs:(NSArray *)urls progress:(SDWebImagePrefetcherProgressBlock)progressBlock completed:(SDWebImagePrefetcherCompletionBlock)completionBlock;
101 |
102 | /**
103 | * Remove and cancel queued list
104 | */
105 | - (void)cancelPrefetching;
106 |
107 |
108 | @end
109 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/SDWebImage/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+GIF.h
3 | // LBGIFImage
4 | //
5 | // Created by Laurin Brandner on 06.01.12.
6 | // Copyright (c) 2012 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIImage (GIF)
12 |
13 | + (UIImage *)sd_animatedGIFNamed:(NSString *)name;
14 |
15 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data;
16 |
17 | - (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+MultiFormat.h
3 | // SDWebImage
4 | //
5 | // Created by Olivier Poitrey on 07/06/13.
6 | // Copyright (c) 2013 Dailymotion. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIImage (MultiFormat)
12 |
13 | + (UIImage *)sd_imageWithData:(NSData *)data;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+MultiFormat.m
3 | // SDWebImage
4 | //
5 | // Created by Olivier Poitrey on 07/06/13.
6 | // Copyright (c) 2013 Dailymotion. All rights reserved.
7 | //
8 |
9 | #import "UIImage+MultiFormat.h"
10 | #import "UIImage+GIF.h"
11 | #import "NSData+ImageContentType.h"
12 | #import
13 |
14 | #ifdef SD_WEBP
15 | #import "UIImage+WebP.h"
16 | #endif
17 |
18 | @implementation UIImage (MultiFormat)
19 |
20 | + (UIImage *)sd_imageWithData:(NSData *)data {
21 | if (!data) {
22 | return nil;
23 | }
24 |
25 | UIImage *image;
26 | NSString *imageContentType = [NSData sd_contentTypeForImageData:data];
27 | if ([imageContentType isEqualToString:@"image/gif"]) {
28 | image = [UIImage sd_animatedGIFWithData:data];
29 | }
30 | #ifdef SD_WEBP
31 | else if ([imageContentType isEqualToString:@"image/webp"])
32 | {
33 | image = [UIImage sd_imageWithWebPData:data];
34 | }
35 | #endif
36 | else {
37 | image = [[UIImage alloc] initWithData:data];
38 | UIImageOrientation orientation = [self sd_imageOrientationFromImageData:data];
39 | if (orientation != UIImageOrientationUp) {
40 | image = [UIImage imageWithCGImage:image.CGImage
41 | scale:image.scale
42 | orientation:orientation];
43 | }
44 | }
45 |
46 |
47 | return image;
48 | }
49 |
50 |
51 | +(UIImageOrientation)sd_imageOrientationFromImageData:(NSData *)imageData {
52 | UIImageOrientation result = UIImageOrientationUp;
53 | CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
54 | if (imageSource) {
55 | CFDictionaryRef properties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, NULL);
56 | if (properties) {
57 | CFTypeRef val;
58 | int exifOrientation;
59 | val = CFDictionaryGetValue(properties, kCGImagePropertyOrientation);
60 | if (val) {
61 | CFNumberGetValue(val, kCFNumberIntType, &exifOrientation);
62 | result = [self sd_exifOrientationToiOSOrientation:exifOrientation];
63 | } // else - if it's not set it remains at up
64 | CFRelease((CFTypeRef) properties);
65 | } else {
66 | //NSLog(@"NO PROPERTIES, FAIL");
67 | }
68 | CFRelease(imageSource);
69 | }
70 | return result;
71 | }
72 |
73 | #pragma mark EXIF orientation tag converter
74 | // Convert an EXIF image orientation to an iOS one.
75 | // reference see here: http://sylvana.net/jpegcrop/exif_orientation.html
76 | + (UIImageOrientation) sd_exifOrientationToiOSOrientation:(int)exifOrientation {
77 | UIImageOrientation orientation = UIImageOrientationUp;
78 | switch (exifOrientation) {
79 | case 1:
80 | orientation = UIImageOrientationUp;
81 | break;
82 |
83 | case 3:
84 | orientation = UIImageOrientationDown;
85 | break;
86 |
87 | case 8:
88 | orientation = UIImageOrientationLeft;
89 | break;
90 |
91 | case 6:
92 | orientation = UIImageOrientationRight;
93 | break;
94 |
95 | case 2:
96 | orientation = UIImageOrientationUpMirrored;
97 | break;
98 |
99 | case 4:
100 | orientation = UIImageOrientationDownMirrored;
101 | break;
102 |
103 | case 5:
104 | orientation = UIImageOrientationLeftMirrored;
105 | break;
106 |
107 | case 7:
108 | orientation = UIImageOrientationRightMirrored;
109 | break;
110 | default:
111 | break;
112 | }
113 | return orientation;
114 | }
115 |
116 |
117 |
118 | @end
119 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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
10 | #import "SDWebImageManager.h"
11 |
12 | @interface UIView (WebCacheOperation)
13 |
14 | /**
15 | * Set the image load operation (storage in a UIView based dictionary)
16 | *
17 | * @param operation the operation
18 | * @param key key for storing the operation
19 | */
20 | - (void)sd_setImageLoadOperation:(id)operation forKey:(NSString *)key;
21 |
22 | /**
23 | * Cancel all operations for the current UIView and key
24 | *
25 | * @param key key for identifying the operations
26 | */
27 | - (void)sd_cancelImageLoadOperationWithKey:(NSString *)key;
28 |
29 | /**
30 | * Just remove the operations corresponding to the current UIView and key without cancelling them
31 | *
32 | * @param key key for identifying the operations
33 | */
34 | - (void)sd_removeImageLoadOperationWithKey:(NSString *)key;
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.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 "UIView+WebCacheOperation.h"
10 | #import "objc/runtime.h"
11 |
12 | static char loadOperationKey;
13 |
14 | @implementation UIView (WebCacheOperation)
15 |
16 | - (NSMutableDictionary *)operationDictionary {
17 | NSMutableDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey);
18 | if (operations) {
19 | return operations;
20 | }
21 | operations = [NSMutableDictionary dictionary];
22 | objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
23 | return operations;
24 | }
25 |
26 | - (void)sd_setImageLoadOperation:(id)operation forKey:(NSString *)key {
27 | [self sd_cancelImageLoadOperationWithKey:key];
28 | NSMutableDictionary *operationDictionary = [self operationDictionary];
29 | [operationDictionary setObject:operation forKey:key];
30 | }
31 |
32 | - (void)sd_cancelImageLoadOperationWithKey:(NSString *)key {
33 | // Cancel in progress downloader from queue
34 | NSMutableDictionary *operationDictionary = [self operationDictionary];
35 | id operations = [operationDictionary objectForKey:key];
36 | if (operations) {
37 | if ([operations isKindOfClass:[NSArray class]]) {
38 | for (id operation in operations) {
39 | if (operation) {
40 | [operation cancel];
41 | }
42 | }
43 | } else if ([operations conformsToProtocol:@protocol(SDWebImageOperation)]){
44 | [(id) operations cancel];
45 | }
46 | [operationDictionary removeObjectForKey:key];
47 | }
48 | }
49 |
50 | - (void)sd_removeImageLoadOperationWithKey:(NSString *)key {
51 | NSMutableDictionary *operationDictionary = [self operationDictionary];
52 | [operationDictionary removeObjectForKey:key];
53 | }
54 |
55 | @end
56 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/MBProgressHUD/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/MBProgressHUD/MBProgressHUD-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_MBProgressHUD : NSObject
3 | @end
4 | @implementation PodsDummy_MBProgressHUD
5 | @end
6 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/MBProgressHUD/MBProgressHUD-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "MBProgressHUD.h"
14 |
15 | FOUNDATION_EXPORT double MBProgressHUDVersionNumber;
16 | FOUNDATION_EXPORT const unsigned char MBProgressHUDVersionString[];
17 |
18 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/MBProgressHUD/MBProgressHUD.modulemap:
--------------------------------------------------------------------------------
1 | framework module MBProgressHUD {
2 | umbrella header "MBProgressHUD-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/MBProgressHUD/MBProgressHUD.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_LDFLAGS = -framework "CoreGraphics" -framework "QuartzCore"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MBProgressHUD
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/MJRefresh/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.1.15
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_MJRefresh : NSObject
3 | @end
4 | @implementation PodsDummy_MJRefresh
5 | @end
6 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/MJRefresh/MJRefresh-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "MJRefreshAutoFooter.h"
14 | #import "MJRefreshBackFooter.h"
15 | #import "MJRefreshComponent.h"
16 | #import "MJRefreshFooter.h"
17 | #import "MJRefreshHeader.h"
18 | #import "MJRefreshAutoGifFooter.h"
19 | #import "MJRefreshAutoNormalFooter.h"
20 | #import "MJRefreshAutoStateFooter.h"
21 | #import "MJRefreshBackGifFooter.h"
22 | #import "MJRefreshBackNormalFooter.h"
23 | #import "MJRefreshBackStateFooter.h"
24 | #import "MJRefreshGifHeader.h"
25 | #import "MJRefreshNormalHeader.h"
26 | #import "MJRefreshStateHeader.h"
27 | #import "MJRefresh.h"
28 | #import "MJRefreshConst.h"
29 | #import "NSBundle+MJRefresh.h"
30 | #import "UIScrollView+MJExtension.h"
31 | #import "UIScrollView+MJRefresh.h"
32 | #import "UIView+MJExtension.h"
33 |
34 | FOUNDATION_EXPORT double MJRefreshVersionNumber;
35 | FOUNDATION_EXPORT const unsigned char MJRefreshVersionString[];
36 |
37 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/MJRefresh/MJRefresh.modulemap:
--------------------------------------------------------------------------------
1 | framework module MJRefresh {
2 | umbrella header "MJRefresh-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Masonry/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Masonry/Masonry-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Masonry : NSObject
3 | @end
4 | @implementation PodsDummy_Masonry
5 | @end
6 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Masonry/Masonry-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Masonry/Masonry-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "MASCompositeConstraint.h"
14 | #import "MASConstraint+Private.h"
15 | #import "MASConstraint.h"
16 | #import "MASConstraintMaker.h"
17 | #import "MASLayoutConstraint.h"
18 | #import "Masonry.h"
19 | #import "MASUtilities.h"
20 | #import "MASViewAttribute.h"
21 | #import "MASViewConstraint.h"
22 | #import "NSArray+MASAdditions.h"
23 | #import "NSArray+MASShorthandAdditions.h"
24 | #import "NSLayoutConstraint+MASDebugAdditions.h"
25 | #import "View+MASAdditions.h"
26 | #import "View+MASShorthandAdditions.h"
27 | #import "ViewController+MASAdditions.h"
28 |
29 | FOUNDATION_EXPORT double MasonryVersionNumber;
30 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[];
31 |
32 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Masonry/Masonry.modulemap:
--------------------------------------------------------------------------------
1 | framework module Masonry {
2 | umbrella header "Masonry-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Masonry/Masonry.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Pods-KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Pods-KYVedioPlayer/Pods-KYVedioPlayer-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_KYVedioPlayer : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_KYVedioPlayer
5 | @end
6 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Pods-KYVedioPlayer/Pods-KYVedioPlayer-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_KYVedioPlayerVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_KYVedioPlayerVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Pods-KYVedioPlayer/Pods-KYVedioPlayer.debug.xcconfig:
--------------------------------------------------------------------------------
1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage"
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers"
5 | OTHER_LDFLAGS = $(inherited) -framework "MBProgressHUD" -framework "MJRefresh" -framework "Masonry" -framework "SDWebImage"
6 | PODS_BUILD_DIR = ${BUILD_DIR}
7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Pods-KYVedioPlayer/Pods-KYVedioPlayer.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_KYVedioPlayer {
2 | umbrella header "Pods-KYVedioPlayer-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/Pods-KYVedioPlayer/Pods-KYVedioPlayer.release.xcconfig:
--------------------------------------------------------------------------------
1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage"
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers"
5 | OTHER_LDFLAGS = $(inherited) -framework "MBProgressHUD" -framework "MJRefresh" -framework "Masonry" -framework "SDWebImage"
6 | PODS_BUILD_DIR = ${BUILD_DIR}
7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/SDWebImage/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.8.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/KYVedioPlayer/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 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/SDWebImage/SDWebImage-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "NSData+ImageContentType.h"
14 | #import "SDImageCache.h"
15 | #import "SDWebImageCompat.h"
16 | #import "SDWebImageDecoder.h"
17 | #import "SDWebImageDownloader.h"
18 | #import "SDWebImageDownloaderOperation.h"
19 | #import "SDWebImageManager.h"
20 | #import "SDWebImageOperation.h"
21 | #import "SDWebImagePrefetcher.h"
22 | #import "UIButton+WebCache.h"
23 | #import "UIImage+GIF.h"
24 | #import "UIImage+MultiFormat.h"
25 | #import "UIImageView+HighlightedWebCache.h"
26 | #import "UIImageView+WebCache.h"
27 | #import "UIView+WebCacheOperation.h"
28 |
29 | FOUNDATION_EXPORT double SDWebImageVersionNumber;
30 | FOUNDATION_EXPORT const unsigned char SDWebImageVersionString[];
31 |
32 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module SDWebImage {
2 | umbrella header "SDWebImage-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/KYVedioPlayer/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
4 | OTHER_LDFLAGS = -framework "ImageIO"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/KYVedioPlayerLib/KYVedioPlayer.bundle/Assets.car:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayerLib/KYVedioPlayer.bundle/Assets.car
--------------------------------------------------------------------------------
/KYVedioPlayerLib/KYVedioPlayer.bundle/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/KYVedioPlayerLib/KYVedioPlayer.bundle/Info.plist
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 KYVedioPlayer Software Foundation (https://github.com/kingly09/KYVedioPlayer) kingly09 inc.
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 |
--------------------------------------------------------------------------------
/vedio01.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/vedio01.gif
--------------------------------------------------------------------------------
/vedio02.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/vedio02.gif
--------------------------------------------------------------------------------
/vedio03.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kingly09/KYVedioPlayer/127c456e8a6be1ce1ff2662eb28b9cf06aa08c95/vedio03.gif
--------------------------------------------------------------------------------