├── .gitignore ├── Demo ├── .idea │ ├── .name │ ├── Demo.iml │ ├── modules.xml │ ├── workspace.xml │ └── xcode.xml ├── CodeDemo.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── CodeDemo.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── CodeDemo │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ └── WX20180115-171757@2x.png │ │ ├── Contents.json │ │ ├── bottomImage.imageset │ │ │ ├── 938A54DAB0905290EBBE392AE73286DC.jpg │ │ │ └── Contents.json │ │ ├── custom │ │ │ ├── Contents.json │ │ │ └── back.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── back@2x.png │ │ │ │ └── back@3x.png │ │ ├── image1.imageset │ │ │ ├── Contents.json │ │ │ └── image1.jpg │ │ ├── image2.imageset │ │ │ ├── Contents.json │ │ │ └── image2.jpg │ │ ├── image3.imageset │ │ │ ├── Contents.json │ │ │ └── DF0999B79D020D160165A612636482E9.jpg │ │ ├── image4.imageset │ │ │ ├── Contents.json │ │ │ └── 椭圆 2.png │ │ ├── image5.imageset │ │ │ ├── Contents.json │ │ │ └── 我3.png │ │ ├── image6.imageset │ │ │ ├── B56C24FF94B6EB94E1DD1931343B37D3.jpg │ │ │ └── Contents.json │ │ ├── image7.imageset │ │ │ ├── Contents.json │ │ │ └── image7.jpg │ │ ├── image8.imageset │ │ │ ├── Contents.json │ │ │ └── image8.jpeg │ │ ├── imageNav.imageset │ │ │ ├── Contents.json │ │ │ └── imageNav.jpg │ │ ├── lagou0.imageset │ │ │ ├── 49579a134be8167.jpg!ww800.jpeg │ │ │ └── Contents.json │ │ ├── lagou1.imageset │ │ │ ├── 65579958bb0ec9a.jpg!ww800.jpeg │ │ │ └── Contents.json │ │ ├── lagou2.imageset │ │ │ ├── 25584561477469d.jpg!ww800.jpeg │ │ │ └── Contents.json │ │ ├── lagou3.imageset │ │ │ ├── 995846cfae60cd3.jpg!ww800.jpeg │ │ │ └── Contents.json │ │ ├── localImg10.imageset │ │ │ ├── Contents.json │ │ │ └── localImg10.jpg │ │ ├── localImg6.imageset │ │ │ ├── 6.jpg │ │ │ └── Contents.json │ │ ├── localImg7.imageset │ │ │ ├── Contents.json │ │ │ └── localImg7.jpg │ │ ├── localImg8.imageset │ │ │ ├── Contents.json │ │ │ └── localImg8.jpg │ │ ├── localImg9.imageset │ │ │ ├── Contents.json │ │ │ └── localImg9.jpg │ │ ├── makeup.imageset │ │ │ ├── Contents.json │ │ │ └── makeup.png │ │ ├── millcolorGrad.imageset │ │ │ ├── Contents.json │ │ │ └── millcolorGrad.png │ │ ├── mine.imageset │ │ │ ├── Contents.json │ │ │ ├── mine@2x.png │ │ │ └── mine@3x.png │ │ ├── mineHighlight.imageset │ │ │ ├── Contents.json │ │ │ ├── mineHighlight@2x.png │ │ │ └── mineHighlight@3x.png │ │ ├── mysl.imageset │ │ │ ├── Contents.json │ │ │ └── WechatIMG52.png │ │ ├── navLeft.imageset │ │ │ ├── Contents.json │ │ │ └── 返回-3.png │ │ ├── navRight.imageset │ │ │ ├── Contents.json │ │ │ └── 二维码-2.png │ │ ├── search.imageset │ │ │ ├── Contents.json │ │ │ └── 搜索背景@3x.png │ │ ├── test.imageset │ │ │ ├── Contents.json │ │ │ └── test.jpg │ │ └── wbBG.imageset │ │ │ ├── Contents.json │ │ │ └── wbBG.png │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── BaseNavigationController.h │ ├── BaseNavigationController.m │ ├── Info.plist │ ├── WRImageHelper │ │ ├── WRImageHelper.h │ │ └── WRImageHelper.m │ ├── WRNavigationBar │ │ ├── WRCustomNavigationBar.h │ │ ├── WRCustomNavigationBar.m │ │ ├── WRNavigationBar.h │ │ └── WRNavigationBar.m │ ├── main.m │ ├── 普通 │ │ ├── AllTransparent.h │ │ ├── AllTransparent.m │ │ ├── AntForestController.h │ │ ├── AntForestController.m │ │ ├── LaGouController.h │ │ ├── LaGouController.m │ │ ├── NormalListController.h │ │ ├── NormalListController.m │ │ ├── QQAppController.h │ │ ├── QQAppController.m │ │ ├── QQMineController.h │ │ ├── QQMineController.m │ │ ├── QQZoneController.h │ │ ├── QQZoneController.m │ │ ├── SpecialController.h │ │ ├── SpecialController.m │ │ ├── TestController.h │ │ ├── TestController.m │ │ ├── WeiBoMineController.h │ │ ├── WeiBoMineController.m │ │ ├── ZhiHuController.h │ │ └── ZhiHuController.m │ ├── 移动导航栏 │ │ ├── MoveListController.h │ │ ├── MoveListController.m │ │ ├── SecondViewController.h │ │ ├── SecondViewController.m │ │ ├── SixthViewController.h │ │ └── SixthViewController.m │ └── 自定义导航栏 │ │ ├── BaseViewController.h │ │ ├── BaseViewController.m │ │ ├── CustomListController.h │ │ ├── CustomListController.m │ │ ├── CustomNavBarController.h │ │ ├── CustomNavBarController.m │ │ ├── ImageNavController.h │ │ ├── ImageNavController.m │ │ ├── MillcolorGradController.h │ │ └── MillcolorGradController.m ├── CodeDemoTests │ ├── CodeDemoTests.m │ └── Info.plist ├── Podfile ├── Podfile.lock └── Pods │ ├── IQKeyboardManager │ ├── IQKeyboardManager │ │ ├── Categories │ │ │ ├── IQNSArray+Sort.h │ │ │ ├── IQNSArray+Sort.m │ │ │ ├── IQUIScrollView+Additions.h │ │ │ ├── IQUIScrollView+Additions.m │ │ │ ├── IQUITextFieldView+Additions.h │ │ │ ├── IQUITextFieldView+Additions.m │ │ │ ├── IQUIView+Hierarchy.h │ │ │ ├── IQUIView+Hierarchy.m │ │ │ ├── IQUIViewController+Additions.h │ │ │ └── IQUIViewController+Additions.m │ │ ├── Constants │ │ │ ├── IQKeyboardManagerConstants.h │ │ │ └── IQKeyboardManagerConstantsInternal.h │ │ ├── IQKeyboardManager.h │ │ ├── IQKeyboardManager.m │ │ ├── IQKeyboardReturnKeyHandler.h │ │ ├── IQKeyboardReturnKeyHandler.m │ │ ├── IQTextView │ │ │ ├── IQTextView.h │ │ │ └── IQTextView.m │ │ └── IQToolbar │ │ │ ├── IQBarButtonItem.h │ │ │ ├── IQBarButtonItem.m │ │ │ ├── IQPreviousNextView.h │ │ │ ├── IQPreviousNextView.m │ │ │ ├── IQTitleBarButtonItem.h │ │ │ ├── IQTitleBarButtonItem.m │ │ │ ├── IQToolbar.h │ │ │ ├── IQToolbar.m │ │ │ ├── IQUIView+IQKeyboardToolbar.h │ │ │ └── IQUIView+IQKeyboardToolbar.m │ ├── LICENSE.md │ └── README.md │ ├── Manifest.lock │ ├── Pods.xcodeproj │ └── project.pbxproj │ ├── SDCycleScrollView │ ├── LICENSE │ ├── README.md │ └── SDCycleScrollView │ │ └── Lib │ │ └── SDCycleScrollView │ │ ├── PageControl │ │ ├── TAAbstractDotView.h │ │ ├── TAAbstractDotView.m │ │ ├── TAAnimatedDotView.h │ │ ├── TAAnimatedDotView.m │ │ ├── TADotView.h │ │ ├── TADotView.m │ │ ├── TAPageControl.h │ │ └── TAPageControl.m │ │ ├── SDCollectionViewCell.h │ │ ├── SDCollectionViewCell.m │ │ ├── SDCycleScrollView.h │ │ ├── SDCycleScrollView.m │ │ ├── UIView+SDExtension.h │ │ └── UIView+SDExtension.m │ ├── SDWebImage │ ├── LICENSE │ ├── README.md │ └── SDWebImage │ │ ├── NSData+ImageContentType.h │ │ ├── NSData+ImageContentType.m │ │ ├── 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 │ ├── TZImagePickerController │ ├── LICENSE │ ├── README.md │ └── TZImagePickerController │ │ └── TZImagePickerController │ │ ├── NSBundle+TZImagePicker.h │ │ ├── NSBundle+TZImagePicker.m │ │ ├── TZAssetCell.h │ │ ├── TZAssetCell.m │ │ ├── TZAssetModel.h │ │ ├── TZAssetModel.m │ │ ├── TZGifPhotoPreviewController.h │ │ ├── TZGifPhotoPreviewController.m │ │ ├── TZImageCropManager.h │ │ ├── TZImageCropManager.m │ │ ├── TZImageManager.h │ │ ├── TZImageManager.m │ │ ├── TZImagePickerController.bundle │ │ ├── MMVideoPreviewPlay@2x.png │ │ ├── MMVideoPreviewPlayHL@2x.png │ │ ├── Root.plist │ │ ├── VideoSendIcon@2x.png │ │ ├── en.lproj │ │ │ └── Localizable.strings │ │ ├── navi_back@2x.png │ │ ├── photo_def_photoPickerVc@2x.png │ │ ├── photo_def_previewVc@2x.png │ │ ├── photo_number_icon@2x.png │ │ ├── photo_original_def@2x.png │ │ ├── photo_original_sel@2x.png │ │ ├── photo_sel_photoPickerVc@2x.png │ │ ├── photo_sel_previewVc@2x.png │ │ ├── preview_number_icon@2x.png │ │ ├── preview_original_def@2x.png │ │ ├── takePicture@2x.png │ │ └── zh-Hans.lproj │ │ │ └── Localizable.strings │ │ ├── TZImagePickerController.h │ │ ├── TZImagePickerController.m │ │ ├── TZLocationManager.h │ │ ├── TZLocationManager.m │ │ ├── TZPhotoPickerController.h │ │ ├── TZPhotoPickerController.m │ │ ├── TZPhotoPreviewCell.h │ │ ├── TZPhotoPreviewCell.m │ │ ├── TZPhotoPreviewController.h │ │ ├── TZPhotoPreviewController.m │ │ ├── TZProgressView.h │ │ ├── TZProgressView.m │ │ ├── TZVideoPlayerController.h │ │ ├── TZVideoPlayerController.m │ │ ├── UIView+Layout.h │ │ └── UIView+Layout.m │ └── Target Support Files │ ├── IQKeyboardManager │ ├── IQKeyboardManager-Info.plist │ ├── IQKeyboardManager-dummy.m │ ├── IQKeyboardManager-prefix.pch │ ├── IQKeyboardManager-umbrella.h │ ├── IQKeyboardManager.debug.xcconfig │ ├── IQKeyboardManager.modulemap │ ├── IQKeyboardManager.release.xcconfig │ ├── IQKeyboardManager.xcconfig │ └── Info.plist │ ├── Pods-CodeDemo │ ├── Info.plist │ ├── Pods-CodeDemo-Info.plist │ ├── Pods-CodeDemo-acknowledgements.markdown │ ├── Pods-CodeDemo-acknowledgements.plist │ ├── Pods-CodeDemo-dummy.m │ ├── Pods-CodeDemo-frameworks.sh │ ├── Pods-CodeDemo-resources.sh │ ├── Pods-CodeDemo-umbrella.h │ ├── Pods-CodeDemo.debug.xcconfig │ ├── Pods-CodeDemo.modulemap │ └── Pods-CodeDemo.release.xcconfig │ ├── SDCycleScrollView │ ├── Info.plist │ ├── SDCycleScrollView-Info.plist │ ├── SDCycleScrollView-dummy.m │ ├── SDCycleScrollView-prefix.pch │ ├── SDCycleScrollView-umbrella.h │ ├── SDCycleScrollView.debug.xcconfig │ ├── SDCycleScrollView.modulemap │ ├── SDCycleScrollView.release.xcconfig │ └── SDCycleScrollView.xcconfig │ ├── SDWebImage │ ├── Info.plist │ ├── SDWebImage-Info.plist │ ├── SDWebImage-dummy.m │ ├── SDWebImage-prefix.pch │ ├── SDWebImage-umbrella.h │ ├── SDWebImage.debug.xcconfig │ ├── SDWebImage.modulemap │ ├── SDWebImage.release.xcconfig │ └── SDWebImage.xcconfig │ └── TZImagePickerController │ ├── Info.plist │ ├── TZImagePickerController-Info.plist │ ├── TZImagePickerController-dummy.m │ ├── TZImagePickerController-prefix.pch │ ├── TZImagePickerController-umbrella.h │ ├── TZImagePickerController.debug.xcconfig │ ├── TZImagePickerController.modulemap │ ├── TZImagePickerController.release.xcconfig │ └── TZImagePickerController.xcconfig ├── LICENSE ├── README.md ├── WRNavigationBar.podspec ├── WRNavigationBar ├── WRCustomNavigationBar.h ├── WRCustomNavigationBar.m ├── WRNavigationBar.h └── WRNavigationBar.m └── screenshots ├── QQ我的资料页.gif ├── WRNavigationBar.png ├── apps.png ├── mysl.gif ├── mysl滑动.gif ├── qq空间.gif ├── 处理右滑中断后.gif ├── 处理右滑返回手势后.gif ├── 导航栏显示图片.gif ├── 导航栏显示渐变色.gif ├── 拉钩App首页.gif ├── 效果图.png ├── 新浪微博个人中心.gif ├── 未处理右滑中断.gif ├── 未处理右滑返回手势.gif ├── 知乎日报.gif ├── 移动导航栏.gif ├── 自定义导航栏.gif ├── 蚂蚁森林.gif └── 连续多个界面导航栏透明.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 | -------------------------------------------------------------------------------- /Demo/.idea/.name: -------------------------------------------------------------------------------- 1 | CodeDemo -------------------------------------------------------------------------------- /Demo/.idea/Demo.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Demo/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo/.idea/xcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Demo/CodeDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo/CodeDemo.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Demo/CodeDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demo/CodeDemo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/11. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | FOUNDATION_EXTERN UIColor *MainNavBarColor; 13 | FOUNDATION_EXTERN UIColor *MainViewColor; 14 | 15 | @interface AppDelegate : UIResponder 16 | 17 | @property (strong, nonatomic) UIWindow *window; 18 | 19 | 20 | @end 21 | 22 | -------------------------------------------------------------------------------- /Demo/CodeDemo/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 | "size" : "60x60", 40 | "idiom" : "iphone", 41 | "filename" : "WX20180115-171757@2x.png", 42 | "scale" : "3x" 43 | }, 44 | { 45 | "idiom" : "ipad", 46 | "size" : "20x20", 47 | "scale" : "1x" 48 | }, 49 | { 50 | "idiom" : "ipad", 51 | "size" : "20x20", 52 | "scale" : "2x" 53 | }, 54 | { 55 | "idiom" : "ipad", 56 | "size" : "29x29", 57 | "scale" : "1x" 58 | }, 59 | { 60 | "idiom" : "ipad", 61 | "size" : "29x29", 62 | "scale" : "2x" 63 | }, 64 | { 65 | "idiom" : "ipad", 66 | "size" : "40x40", 67 | "scale" : "1x" 68 | }, 69 | { 70 | "idiom" : "ipad", 71 | "size" : "40x40", 72 | "scale" : "2x" 73 | }, 74 | { 75 | "idiom" : "ipad", 76 | "size" : "76x76", 77 | "scale" : "1x" 78 | }, 79 | { 80 | "idiom" : "ipad", 81 | "size" : "76x76", 82 | "scale" : "2x" 83 | }, 84 | { 85 | "idiom" : "ipad", 86 | "size" : "83.5x83.5", 87 | "scale" : "2x" 88 | }, 89 | { 90 | "idiom" : "ios-marketing", 91 | "size" : "1024x1024", 92 | "scale" : "1x" 93 | } 94 | ], 95 | "info" : { 96 | "version" : 1, 97 | "author" : "xcode" 98 | } 99 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/AppIcon.appiconset/WX20180115-171757@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/AppIcon.appiconset/WX20180115-171757@2x.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/bottomImage.imageset/938A54DAB0905290EBBE392AE73286DC.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/bottomImage.imageset/938A54DAB0905290EBBE392AE73286DC.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/bottomImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "938A54DAB0905290EBBE392AE73286DC.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/custom/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/custom/back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "back@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "back@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/custom/back.imageset/back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/custom/back.imageset/back@2x.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/custom/back.imageset/back@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/custom/back.imageset/back@3x.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "image1.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image1.imageset/image1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/image1.imageset/image1.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "image2.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image2.imageset/image2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/image2.imageset/image2.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "DF0999B79D020D160165A612636482E9.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image3.imageset/DF0999B79D020D160165A612636482E9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/image3.imageset/DF0999B79D020D160165A612636482E9.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image4.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "椭圆 2.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image4.imageset/椭圆 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/image4.imageset/椭圆 2.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image5.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "我3.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image5.imageset/我3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/image5.imageset/我3.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image6.imageset/B56C24FF94B6EB94E1DD1931343B37D3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/image6.imageset/B56C24FF94B6EB94E1DD1931343B37D3.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image6.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "B56C24FF94B6EB94E1DD1931343B37D3.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image7.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "image7.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image7.imageset/image7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/image7.imageset/image7.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image8.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "image8.jpeg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/image8.imageset/image8.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/image8.imageset/image8.jpeg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/imageNav.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "imageNav.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/imageNav.imageset/imageNav.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/imageNav.imageset/imageNav.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/lagou0.imageset/49579a134be8167.jpg!ww800.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/lagou0.imageset/49579a134be8167.jpg!ww800.jpeg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/lagou0.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "49579a134be8167.jpg!ww800.jpeg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/lagou1.imageset/65579958bb0ec9a.jpg!ww800.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/lagou1.imageset/65579958bb0ec9a.jpg!ww800.jpeg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/lagou1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "65579958bb0ec9a.jpg!ww800.jpeg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/lagou2.imageset/25584561477469d.jpg!ww800.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/lagou2.imageset/25584561477469d.jpg!ww800.jpeg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/lagou2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "25584561477469d.jpg!ww800.jpeg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/lagou3.imageset/995846cfae60cd3.jpg!ww800.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/lagou3.imageset/995846cfae60cd3.jpg!ww800.jpeg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/lagou3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "995846cfae60cd3.jpg!ww800.jpeg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/localImg10.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "localImg10.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/localImg10.imageset/localImg10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/localImg10.imageset/localImg10.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/localImg6.imageset/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/localImg6.imageset/6.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/localImg6.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "6.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/localImg7.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "localImg7.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/localImg7.imageset/localImg7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/localImg7.imageset/localImg7.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/localImg8.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "localImg8.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/localImg8.imageset/localImg8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/localImg8.imageset/localImg8.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/localImg9.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "localImg9.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/localImg9.imageset/localImg9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/localImg9.imageset/localImg9.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/makeup.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "makeup.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/makeup.imageset/makeup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/makeup.imageset/makeup.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/millcolorGrad.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "millcolorGrad.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/millcolorGrad.imageset/millcolorGrad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/millcolorGrad.imageset/millcolorGrad.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/mine.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mine@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mine@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/mine.imageset/mine@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/mine.imageset/mine@2x.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/mine.imageset/mine@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/mine.imageset/mine@3x.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/mineHighlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mineHighlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mineHighlight@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/mineHighlight.imageset/mineHighlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/mineHighlight.imageset/mineHighlight@2x.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/mineHighlight.imageset/mineHighlight@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/mineHighlight.imageset/mineHighlight@3x.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/mysl.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "WechatIMG52.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/mysl.imageset/WechatIMG52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/mysl.imageset/WechatIMG52.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/navLeft.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "返回-3.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/navLeft.imageset/返回-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/navLeft.imageset/返回-3.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/navRight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "二维码-2.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | }, 21 | "properties" : { 22 | "template-rendering-intent" : "original" 23 | } 24 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/navRight.imageset/二维码-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/navRight.imageset/二维码-2.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/search.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "alignment-insets" : { 9 | "top" : 0, 10 | "left" : 0, 11 | "bottom" : -2, 12 | "right" : 0 13 | }, 14 | "idiom" : "universal", 15 | "filename" : "搜索背景@3x.png", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "universal", 20 | "scale" : "3x" 21 | } 22 | ], 23 | "info" : { 24 | "version" : 1, 25 | "author" : "xcode" 26 | } 27 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/search.imageset/搜索背景@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/search.imageset/搜索背景@3x.png -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/test.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "test.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/test.imageset/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/test.imageset/test.jpg -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/wbBG.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "wbBG.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Demo/CodeDemo/Assets.xcassets/wbBG.imageset/wbBG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/CodeDemo/Assets.xcassets/wbBG.imageset/wbBG.png -------------------------------------------------------------------------------- /Demo/CodeDemo/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 | -------------------------------------------------------------------------------- /Demo/CodeDemo/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 | -------------------------------------------------------------------------------- /Demo/CodeDemo/BaseNavigationController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BaseNavigationController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/19. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface BaseNavigationController : UINavigationController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/BaseNavigationController.m: -------------------------------------------------------------------------------- 1 | // 2 | // BaseNavigationController.m 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/19. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import "BaseNavigationController.h" 11 | 12 | @interface BaseNavigationController () 13 | 14 | @end 15 | 16 | @implementation BaseNavigationController 17 | 18 | - (void)viewDidLoad { 19 | [super viewDidLoad]; 20 | self.view.backgroundColor = [UIColor whiteColor]; 21 | } 22 | 23 | - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated 24 | { 25 | if (self.childViewControllers.count > 0) { 26 | viewController.hidesBottomBarWhenPushed = YES; 27 | } 28 | [super pushViewController:viewController animated:animated]; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Demo/CodeDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | NSCameraUsageDescription 26 | 请点击“好”以允许访问 27 | NSPhotoLibraryUsageDescription 28 | 请点击“好”以允许访问 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Demo/CodeDemo/WRImageHelper/WRImageHelper.h: -------------------------------------------------------------------------------- 1 | // 2 | // WRImageHelper.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/7/25. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (WRHelper) 12 | 13 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color; 14 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color alpha:(CGFloat)alpha; 15 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color rect:(CGRect)rect; 16 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color insets:(UIEdgeInsets)insets; 17 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color alpha:(CGFloat)alpha insets:(UIEdgeInsets)insets; 18 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color alpha:(CGFloat)alpha rect:(CGRect)rect; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Demo/CodeDemo/WRImageHelper/WRImageHelper.m: -------------------------------------------------------------------------------- 1 | // 2 | // WRImageHelper.m 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/7/25. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | 9 | #import "WRImageHelper.h" 10 | 11 | @implementation UIImage (WRHelper) 12 | 13 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color 14 | { 15 | return [self wr_updateImageWithTintColor:color alpha:1.0f]; 16 | } 17 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color alpha:(CGFloat)alpha 18 | { 19 | CGRect rect = CGRectMake(.0f, .0f, self.size.width, self.size.height); 20 | return [self wr_updateImageWithTintColor:color alpha:alpha rect:rect]; 21 | } 22 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color rect:(CGRect)rect 23 | { 24 | return [self wr_updateImageWithTintColor:color alpha:1.0f rect:rect]; 25 | } 26 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color insets:(UIEdgeInsets)insets 27 | { 28 | return [self wr_updateImageWithTintColor:color alpha:1.0f insets:insets]; 29 | } 30 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color alpha:(CGFloat)alpha insets:(UIEdgeInsets)insets 31 | { 32 | CGRect originRect = CGRectMake(.0f, .0f, self.size.width, self.size.height); 33 | CGRect tintImageRect = UIEdgeInsetsInsetRect(originRect, insets); 34 | return [self wr_updateImageWithTintColor:color alpha:alpha rect:tintImageRect]; 35 | } 36 | 37 | #pragma mark - 全能初始化方法 38 | -(UIImage *)wr_updateImageWithTintColor:(UIColor*)color alpha:(CGFloat)alpha rect:(CGRect)rect 39 | { 40 | CGRect imageRect = CGRectMake(.0f, .0f, self.size.width, self.size.height); 41 | 42 | // 启动图形上下文 43 | UIGraphicsBeginImageContextWithOptions(imageRect.size, NO, self.scale); 44 | // 获取图片上下文 45 | CGContextRef contextRef = UIGraphicsGetCurrentContext(); 46 | // 利用drawInRect方法绘制图片到layer, 是通过拉伸原有图片 47 | [self drawInRect:imageRect]; 48 | // 设置图形上下文的填充颜色 49 | CGContextSetFillColorWithColor(contextRef, [color CGColor]); 50 | // 设置图形上下文的透明度 51 | CGContextSetAlpha(contextRef, alpha); 52 | // 设置混合模式 53 | CGContextSetBlendMode(contextRef, kCGBlendModeSourceAtop); 54 | // 填充当前rect 55 | CGContextFillRect(contextRef, rect); 56 | 57 | // 根据位图上下文创建一个CGImage图片,并转换成UIImage 58 | CGImageRef imageRef = CGBitmapContextCreateImage(contextRef); 59 | UIImage *tintedImage = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation]; 60 | // 释放 imageRef,否则内存泄漏 61 | CGImageRelease(imageRef); 62 | // 从堆栈的顶部移除图形上下文 63 | UIGraphicsEndImageContext(); 64 | 65 | return tintedImage; 66 | } 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /Demo/CodeDemo/WRNavigationBar/WRCustomNavigationBar.h: -------------------------------------------------------------------------------- 1 | // 2 | // WRCustomNavigationBar.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/10/22. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface WRCustomNavigationBar : UIView 13 | 14 | @property (nonatomic, copy) void(^onClickLeftButton)(void); 15 | @property (nonatomic, copy) void(^onClickRightButton)(void); 16 | 17 | @property (nonatomic, copy) NSString *title; 18 | @property (nonatomic, strong) UIColor *titleLabelColor; 19 | @property (nonatomic, strong) UIFont *titleLabelFont; 20 | @property (nonatomic, strong) UIColor *barBackgroundColor; 21 | @property (nonatomic, strong) UIImage *barBackgroundImage; 22 | 23 | + (instancetype)CustomNavigationBar; 24 | 25 | - (void)wr_setBottomLineHidden:(BOOL)hidden; 26 | - (void)wr_setBackgroundAlpha:(CGFloat)alpha; 27 | - (void)wr_setTintColor:(UIColor *)color; 28 | 29 | // 默认返回事件 30 | //- (void)wr_setLeftButtonWithNormal:(UIImage *)normal highlighted:(UIImage *)highlighted title:(NSString *)title titleColor:(UIColor *)titleColor; 31 | //- (void)wr_setLeftButtonWithImage:(UIImage *)image title:(NSString *)title titleColor:(UIColor *)titleColor; 32 | - (void)wr_setLeftButtonWithNormal:(UIImage *)normal highlighted:(UIImage *)highlighted; 33 | - (void)wr_setLeftButtonWithImage:(UIImage *)image; 34 | - (void)wr_setLeftButtonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor; 35 | 36 | //- (void)wr_setRightButtonWithNormal:(UIImage *)normal highlighted:(UIImage *)highlighted title:(NSString *)title titleColor:(UIColor *)titleColor; 37 | //- (void)wr_setRightButtonWithImage:(UIImage *)image title:(NSString *)title titleColor:(UIColor *)titleColor; 38 | - (void)wr_setRightButtonWithNormal:(UIImage *)normal highlighted:(UIImage *)highlighted; 39 | - (void)wr_setRightButtonWithImage:(UIImage *)image; 40 | - (void)wr_setRightButtonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor; 41 | 42 | 43 | 44 | @end 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /Demo/CodeDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/11. 6 | // Copyright © 2017年 wangrui. 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 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/AllTransparent.h: -------------------------------------------------------------------------------- 1 | // 2 | // WeiBoMineController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/11. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface AllTransparent : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/AntForestController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AntForestController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/14. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface AntForestController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/LaGouController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZhiHuController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/14. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface LaGouController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/NormalListController.h: -------------------------------------------------------------------------------- 1 | // 2 | // NormalListController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/14. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface NormalListController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/QQAppController.h: -------------------------------------------------------------------------------- 1 | // 2 | // QQAppController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/12. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface QQAppController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/QQMineController.h: -------------------------------------------------------------------------------- 1 | // 2 | // QQMineController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/11. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface QQMineController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/QQZoneController.h: -------------------------------------------------------------------------------- 1 | // 2 | // QQZoneController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/14. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface QQZoneController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/SpecialController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SpecialController.h 3 | // CodeDemo 4 | // 5 | // Created by itwangrui on 2017/12/10. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SpecialController : UIViewController 12 | 13 | @end 14 | 15 | 16 | 17 | 18 | 19 | @interface InnerController : UIViewController 20 | @end 21 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/TestController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TestController.h 3 | // CodeDemo 4 | // 5 | // Created by itwangrui on 2018/1/19. 6 | // Copyright © 2018年 wangrui. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TestController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/TestController.m: -------------------------------------------------------------------------------- 1 | // 2 | // TestController.m 3 | // CodeDemo 4 | // 5 | // Created by itwangrui on 2018/1/19. 6 | // Copyright © 2018年 wangrui. All rights reserved. 7 | // 8 | 9 | #import "TestController.h" 10 | 11 | @interface TestController () 12 | 13 | @end 14 | 15 | @implementation TestController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | 20 | self.view.backgroundColor = [UIColor whiteColor]; 21 | 22 | UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(20, 500, 290, 30)]; 23 | tf.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:0.5]; 24 | tf.placeholder = @"测试 IQKeyboardManager 导致的问题"; 25 | [self.view addSubview:tf]; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/WeiBoMineController.h: -------------------------------------------------------------------------------- 1 | // 2 | // WeiBoMineController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/11. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface WeiBoMineController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/普通/ZhiHuController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZhiHuController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/14. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface ZhiHuController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/移动导航栏/MoveListController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MoveListController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/14. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface MoveListController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/移动导航栏/MoveListController.m: -------------------------------------------------------------------------------- 1 | // 2 | // MoveListController.m 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/14. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import "MoveListController.h" 11 | #import "SecondViewController.h" 12 | #import "SixthViewController.h" 13 | 14 | @interface MoveListController () 15 | @property (nonatomic, strong) UITableView *tableView; 16 | @end 17 | 18 | @implementation MoveListController 19 | 20 | - (void)viewDidLoad 21 | { 22 | [super viewDidLoad]; 23 | self.automaticallyAdjustsScrollViewInsets = NO; 24 | self.view.backgroundColor = [UIColor whiteColor]; 25 | self.title = @"移动导航栏"; 26 | [self.view addSubview:self.tableView]; 27 | } 28 | 29 | #pragma mark - tableview delegate / dataSource 30 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 31 | { 32 | return 5; 33 | } 34 | 35 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 36 | { 37 | UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 38 | reuseIdentifier:nil]; 39 | NSString *str = nil; 40 | switch (indexPath.row) { 41 | case 0: 42 | str = @"超过临界点移动导航栏"; 43 | break; 44 | case 1: 45 | str = @"没有系统返回按钮的情况"; 46 | break; 47 | 48 | default: 49 | break; 50 | } 51 | cell.textLabel.text = str; 52 | cell.textLabel.font = [UIFont systemFontOfSize:15]; 53 | return cell; 54 | } 55 | 56 | - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 57 | { 58 | return 60; 59 | } 60 | 61 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 62 | { 63 | [tableView deselectRowAtIndexPath:indexPath animated:YES]; 64 | switch (indexPath.row) { 65 | case 0: 66 | { 67 | SecondViewController *secondVC = [SecondViewController new]; 68 | [self.navigationController pushViewController:secondVC animated:YES]; 69 | } 70 | break; 71 | case 1: 72 | { 73 | SixthViewController *sixVC = [SixthViewController new]; 74 | [self.navigationController pushViewController:sixVC animated:YES]; 75 | } 76 | break; 77 | default: 78 | break; 79 | } 80 | } 81 | 82 | #pragma mark - getter / setter 83 | - (UITableView *)tableView 84 | { 85 | if (_tableView == nil) { 86 | CGRect frame = CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height-64-49); 87 | _tableView = [[UITableView alloc] initWithFrame:frame 88 | style:UITableViewStylePlain]; 89 | _tableView.delegate = self; 90 | _tableView.dataSource = self; 91 | } 92 | return _tableView; 93 | } 94 | 95 | @end 96 | -------------------------------------------------------------------------------- /Demo/CodeDemo/移动导航栏/SecondViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SecondViewController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/11. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface SecondViewController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/移动导航栏/SixthViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SixthViewController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/14. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface SixthViewController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/自定义导航栏/BaseViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BaseViewController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/5/16. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | #import "WRCustomNavigationBar.h" 12 | 13 | @interface BaseViewController : UIViewController 14 | @property (nonatomic, strong) WRCustomNavigationBar *customNavBar; 15 | @end 16 | -------------------------------------------------------------------------------- /Demo/CodeDemo/自定义导航栏/BaseViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // BaseViewController.m 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/5/16. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import "BaseViewController.h" 11 | #import "AppDelegate.h" 12 | #import "WRNavigationBar.h" 13 | 14 | #define kScreenWidth [UIScreen mainScreen].bounds.size.width 15 | 16 | @interface BaseViewController () 17 | @end 18 | 19 | @implementation BaseViewController 20 | 21 | - (void)viewDidLoad 22 | { 23 | [super viewDidLoad]; 24 | self.navigationController.navigationBar.hidden = YES; 25 | self.automaticallyAdjustsScrollViewInsets = NO; 26 | [self setupNavBar]; 27 | } 28 | 29 | - (void)setupNavBar 30 | { 31 | [self.view addSubview:self.customNavBar]; 32 | 33 | // 设置自定义导航栏背景图片 34 | self.customNavBar.barBackgroundImage = [UIImage imageNamed:@"millcolorGrad"]; 35 | 36 | // 设置自定义导航栏标题颜色 37 | self.customNavBar.titleLabelColor = [UIColor whiteColor]; 38 | 39 | if (self.navigationController.childViewControllers.count != 1) { 40 | [self.customNavBar wr_setLeftButtonWithTitle:@"<<" titleColor:[UIColor whiteColor]]; 41 | } 42 | } 43 | 44 | - (WRCustomNavigationBar *)customNavBar 45 | { 46 | if (_customNavBar == nil) { 47 | _customNavBar = [WRCustomNavigationBar CustomNavigationBar]; 48 | } 49 | return _customNavBar; 50 | } 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /Demo/CodeDemo/自定义导航栏/CustomListController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CustomListController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/14. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import "BaseViewController.h" 11 | 12 | @interface CustomListController : BaseViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/自定义导航栏/CustomNavBarController.h: -------------------------------------------------------------------------------- 1 | // 2 | // FirstViewController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/11. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import "BaseViewController.h" 11 | 12 | @interface CustomNavBarController : BaseViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/自定义导航栏/ImageNavController.h: -------------------------------------------------------------------------------- 1 | // 2 | // WeiBoMineController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/11. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import "BaseViewController.h" 11 | 12 | @interface ImageNavController : BaseViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemo/自定义导航栏/MillcolorGradController.h: -------------------------------------------------------------------------------- 1 | // 2 | // WeiBoMineController.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/4/11. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import "BaseViewController.h" 11 | 12 | @interface MillcolorGradController : BaseViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demo/CodeDemoTests/CodeDemoTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // CodeDemoTests.m 3 | // CodeDemoTests 4 | // 5 | // Created by wangrui on 2017/4/11. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CodeDemoTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation CodeDemoTests 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 | -------------------------------------------------------------------------------- /Demo/CodeDemoTests/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 | 22 | 23 | -------------------------------------------------------------------------------- /Demo/Podfile: -------------------------------------------------------------------------------- 1 | 2 | platform :ios, '8.0' 3 | use_frameworks! 4 | 5 | target ‘CodeDemo’ do 6 | pod 'SDWebImage', '~> 3.7.6' 7 | pod 'TZImagePickerController' 8 | pod 'IQKeyboardManager', '~> 6.5.6' 9 | 10 | #UI 11 | pod 'SDCycleScrollView','~> 1.64' 12 | 13 | end 14 | 15 | post_install do |installer| 16 | installer.pods_project.targets.each do |target| 17 | target.build_configurations.each do |config| 18 | config.build_settings['ENABLE_BITCODE'] = 'NO' 19 | end 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /Demo/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - IQKeyboardManager (6.5.6) 3 | - SDCycleScrollView (1.65): 4 | - SDWebImage (~> 3.7) 5 | - SDWebImage (3.7.6): 6 | - SDWebImage/Core (= 3.7.6) 7 | - SDWebImage/Core (3.7.6) 8 | - TZImagePickerController (1.9.8) 9 | 10 | DEPENDENCIES: 11 | - IQKeyboardManager (~> 6.5.6) 12 | - SDCycleScrollView (~> 1.64) 13 | - SDWebImage (~> 3.7.6) 14 | - TZImagePickerController 15 | 16 | SPEC REPOS: 17 | trunk: 18 | - IQKeyboardManager 19 | - SDCycleScrollView 20 | - SDWebImage 21 | - TZImagePickerController 22 | 23 | SPEC CHECKSUMS: 24 | IQKeyboardManager: 2a6e97afdafc7becf0cb17a9a8d795e3a980717f 25 | SDCycleScrollView: f72904c77698a7f93a41bcbbc2d78b073bf7326c 26 | SDWebImage: c325cf02c30337336b95beff20a13df489ec0ec9 27 | TZImagePickerController: 3b9413ae5d049b1fdc5b0c720ad283f35b679a50 28 | 29 | PODFILE CHECKSUM: 012d0f11e1ca916afee8fc72555e17e5d422f5d8 30 | 31 | COCOAPODS: 1.10.1 32 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQNSArray+Sort.h: -------------------------------------------------------------------------------- 1 | // 2 | // IQNSArray+Sort.h 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import 25 | 26 | @class UIView; 27 | 28 | /** 29 | UIView.subviews sorting category. 30 | */ 31 | @interface NSArray (IQ_NSArray_Sort) 32 | 33 | ///-------------- 34 | /// @name Sorting 35 | ///-------------- 36 | 37 | /** 38 | Returns the array by sorting the UIView's by their tag property. 39 | */ 40 | @property (nonnull, nonatomic, readonly, copy) NSArray<__kindof UIView*> * sortedArrayByTag; 41 | 42 | /** 43 | Returns the array by sorting the UIView's by their tag property. 44 | */ 45 | @property (nonnull, nonatomic, readonly, copy) NSArray<__kindof UIView*> * sortedArrayByPosition; 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQNSArray+Sort.m: -------------------------------------------------------------------------------- 1 | // 2 | // IQNSArray+Sort.m 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import "IQNSArray+Sort.h" 25 | #import "IQUIView+Hierarchy.h" 26 | 27 | #import 28 | 29 | @implementation NSArray (IQ_NSArray_Sort) 30 | 31 | - (NSArray*)sortedArrayByTag 32 | { 33 | return [self sortedArrayUsingComparator:^NSComparisonResult(UIView *view1, UIView *view2) { 34 | 35 | if ([view1 respondsToSelector:@selector(tag)] && [view2 respondsToSelector:@selector(tag)]) 36 | { 37 | if ([view1 tag] < [view2 tag]) return NSOrderedAscending; 38 | 39 | else if ([view1 tag] > [view2 tag]) return NSOrderedDescending; 40 | 41 | else return NSOrderedSame; 42 | } 43 | else 44 | return NSOrderedSame; 45 | }]; 46 | } 47 | 48 | - (NSArray*)sortedArrayByPosition 49 | { 50 | return [self sortedArrayUsingComparator:^NSComparisonResult(UIView *view1, UIView *view2) { 51 | 52 | CGFloat x1 = CGRectGetMinX(view1.frame); 53 | CGFloat y1 = CGRectGetMinY(view1.frame); 54 | CGFloat x2 = CGRectGetMinX(view2.frame); 55 | CGFloat y2 = CGRectGetMinY(view2.frame); 56 | 57 | if (y1 < y2) return NSOrderedAscending; 58 | 59 | else if (y1 > y2) return NSOrderedDescending; 60 | 61 | //Else both y are same so checking for x positions 62 | else if (x1 < x2) return NSOrderedAscending; 63 | 64 | else if (x1 > x2) return NSOrderedDescending; 65 | 66 | else return NSOrderedSame; 67 | }]; 68 | } 69 | 70 | 71 | @end 72 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIScrollView+Additions.h: -------------------------------------------------------------------------------- 1 | // 2 | // IQUIScrollView+Additions.h 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import 25 | #import 26 | 27 | 28 | @interface UIScrollView (Additions) 29 | 30 | /** 31 | If YES, then scrollview will ignore scrolling (simply not scroll it) for adjusting textfield position. Default is NO. 32 | */ 33 | @property(nonatomic, assign) BOOL shouldIgnoreScrollingAdjustment; 34 | 35 | /** 36 | If YES, then scrollview will ignore content inset adjustment (simply not updating it) when keyboard is shown. Default is NO. 37 | */ 38 | @property(nonatomic, assign) BOOL shouldIgnoreContentInsetAdjustment; 39 | 40 | /** 41 | Restore scrollViewContentOffset when resigning from scrollView. Default is NO. 42 | */ 43 | @property(nonatomic, assign) BOOL shouldRestoreScrollViewContentOffset; 44 | 45 | 46 | @end 47 | 48 | @interface UITableView (PreviousNextIndexPath) 49 | 50 | -(nullable NSIndexPath*)previousIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath; 51 | //-(nullable NSIndexPath*)nextIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath; 52 | 53 | @end 54 | 55 | @interface UICollectionView (PreviousNextIndexPath) 56 | 57 | -(nullable NSIndexPath*)previousIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath; 58 | //-(nullable NSIndexPath*)nextIndexPathOfIndexPath:(nonnull NSIndexPath*)indexPath; 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUITextFieldView+Additions.h: -------------------------------------------------------------------------------- 1 | // 2 | // IQUITextFieldView+Additions.h 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import 25 | #import "IQKeyboardManagerConstants.h" 26 | 27 | /** 28 | UIView category for managing UITextField/UITextView 29 | */ 30 | 31 | @interface UIView (Additions) 32 | 33 | /** 34 | To set customized distance from keyboard for textField/textView. Can't be less than zero 35 | */ 36 | @property(nonatomic, assign) CGFloat keyboardDistanceFromTextField; 37 | 38 | /** 39 | If shouldIgnoreSwitchingByNextPrevious is YES then library will ignore this textField/textView while moving to other textField/textView using keyboard toolbar next previous buttons. Default is NO 40 | */ 41 | @property(nonatomic, assign) BOOL ignoreSwitchingByNextPrevious; 42 | 43 | ///** 44 | // Override Enable/disable managing distance between keyboard and textField behaviour for this particular textField. 45 | // */ 46 | @property(nonatomic, assign) IQEnableMode enableMode; 47 | 48 | /** 49 | Override resigns Keyboard on touching outside of UITextField/View behaviour for this particular textField. 50 | */ 51 | @property(nonatomic, assign) IQEnableMode shouldResignOnTouchOutsideMode; 52 | 53 | @end 54 | 55 | ///------------------------------------------- 56 | /// @name Custom KeyboardDistanceFromTextField 57 | ///------------------------------------------- 58 | 59 | /** 60 | Uses default keyboard distance for textField. 61 | */ 62 | extern CGFloat const kIQUseDefaultKeyboardDistance; 63 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIViewController+Additions.h: -------------------------------------------------------------------------------- 1 | // 2 | // IQUIViewController+Additions.h 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import 25 | 26 | @class NSLayoutConstraint; 27 | 28 | @interface UIViewController (Additions) 29 | 30 | /** 31 | This method is provided to override by viewController's if the library lifts a viewController which you doesn't want to lift . This may happen if you have implemented side menu feature in your app and the library try to lift the side menu controller. Overriding this method in side menu class to return correct controller should fix the problem. 32 | */ 33 | -(nullable UIViewController*)parentIQContainerViewController; 34 | 35 | /** 36 | Top/Bottom Layout constraint which help library to manage keyboardTextField distance 37 | 38 | @deprecated Due to change in core-logic of handling distance between textField and keyboard distance, this layout contraint tweak is no longer needed and things will just work out of the box regardless of constraint pinned with safeArea/layoutGuide/superview. 39 | */ 40 | @property(nullable, nonatomic, strong) IBOutlet NSLayoutConstraint *IQLayoutGuideConstraint __attribute__((deprecated("Due to change in core-logic of handling distance between textField and keyboard distance, this layout contraint tweak is no longer needed and things will just work out of the box regardless of constraint pinned with safeArea/layoutGuide/superview."))); 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/Categories/IQUIViewController+Additions.m: -------------------------------------------------------------------------------- 1 | // 2 | // IQUIViewController+Additions.m 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import "IQUIViewController+Additions.h" 25 | #import 26 | #import 27 | 28 | @implementation UIViewController (Additions) 29 | 30 | -(nullable UIViewController*)parentIQContainerViewController 31 | { 32 | return self; 33 | } 34 | 35 | -(void)setIQLayoutGuideConstraint:(NSLayoutConstraint *)IQLayoutGuideConstraint 36 | { 37 | objc_setAssociatedObject(self, @selector(IQLayoutGuideConstraint), IQLayoutGuideConstraint, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 38 | } 39 | 40 | -(NSLayoutConstraint *)IQLayoutGuideConstraint 41 | { 42 | return objc_getAssociatedObject(self, @selector(IQLayoutGuideConstraint)); 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/Constants/IQKeyboardManagerConstantsInternal.h: -------------------------------------------------------------------------------- 1 | // 2 | // IQKeyboardManagerConstantsInternal.h 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #ifndef IQKeyboardManagerConstantsInternal_h 25 | #define IQKeyboardManagerConstantsInternal_h 26 | 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/IQTextView/IQTextView.h: -------------------------------------------------------------------------------- 1 | // 2 | // IQTextView.h 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import "IQKeyboardManagerConstants.h" 25 | 26 | #import 27 | 28 | /** 29 | UITextView with placeholder support 30 | */ 31 | @interface IQTextView : UITextView 32 | 33 | /** 34 | Set textView's placeholder text. Default is nil. 35 | */ 36 | @property(nullable, nonatomic,copy) IBInspectable NSString *placeholder; 37 | 38 | /** 39 | Set textView's placeholder attributed text. Default is nil. 40 | */ 41 | @property(nullable, nonatomic,copy) IBInspectable NSAttributedString *attributedPlaceholder; 42 | 43 | /** 44 | To set textView's placeholder text color. Default is nil. 45 | */ 46 | @property(nullable, nonatomic,copy) IBInspectable UIColor *placeholderTextColor; 47 | 48 | @end 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQBarButtonItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // IQBarButtonItem.h 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import 25 | 26 | @class NSInvocation; 27 | 28 | /** 29 | IQBarButtonItem used for IQToolbar. 30 | */ 31 | @interface IQBarButtonItem : UIBarButtonItem 32 | 33 | /** 34 | Boolean to know if it's a system item or custom item 35 | */ 36 | @property (nonatomic, readonly) BOOL isSystemItem; 37 | 38 | /** 39 | Additional target & action to do get callback action. Note that setting custom target & selector doesn't affect native functionality, this is just an additional target to get a callback. 40 | 41 | @param target Target object. 42 | @param action Target Selector. 43 | */ 44 | -(void)setTarget:(nullable id)target action:(nullable SEL)action; 45 | 46 | /** 47 | Customized Invocation to be called when button is pressed. invocation is internally created using setTarget:action: method. 48 | */ 49 | @property (nullable, strong, nonatomic) NSInvocation *invocation; 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQPreviousNextView.h: -------------------------------------------------------------------------------- 1 | // 2 | // IQPreviousNextView.h 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import 25 | /** 26 | If you need to enable previous/next toolbar button with some complex hierarchy where your textFields are not in same view, then make the top view as IQPreviousNextView. 27 | */ 28 | @interface IQPreviousNextView : UIView 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQPreviousNextView.m: -------------------------------------------------------------------------------- 1 | // 2 | // IQPreviousNextView.m 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import "IQPreviousNextView.h" 25 | 26 | @implementation IQPreviousNextView 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQTitleBarButtonItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // IQTitleBarButtonItem.h 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import "IQKeyboardManagerConstants.h" 25 | #import "IQBarButtonItem.h" 26 | 27 | #import 28 | 29 | /** 30 | BarButtonItem with title text. 31 | */ 32 | @interface IQTitleBarButtonItem : IQBarButtonItem 33 | 34 | /** 35 | Font to be used in bar button. Default is (system font 12.0 bold). 36 | */ 37 | @property(nullable, nonatomic, strong) UIFont *titleFont; 38 | 39 | /** 40 | titleColor to be used for displaying button text when displaying title (disabled state). 41 | */ 42 | @property(nullable, nonatomic, strong) UIColor *titleColor; 43 | 44 | /** 45 | selectableTitleColor to be used for displaying button text when button is enabled. 46 | */ 47 | @property(nullable, nonatomic, strong) UIColor *selectableTitleColor; 48 | 49 | /** 50 | Initialize with frame and title. 51 | 52 | @param title Title of barButtonItem. 53 | */ 54 | -(nonnull instancetype)initWithTitle:(nullable NSString *)title NS_DESIGNATED_INITIALIZER; 55 | 56 | /** 57 | Unavailable. Please use initWithFrame:title: method 58 | */ 59 | -(nonnull instancetype)init NS_UNAVAILABLE; 60 | 61 | /** 62 | Unavailable. Please use initWithFrame:title: method 63 | */ 64 | -(nonnull instancetype)initWithCoder:(nullable NSCoder *)aDecoder NS_UNAVAILABLE; 65 | 66 | /** 67 | Unavailable. Please use initWithFrame:title: method 68 | */ 69 | + (nonnull instancetype)new NS_UNAVAILABLE; 70 | 71 | @end 72 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/IQKeyboardManager/IQToolbar/IQToolbar.h: -------------------------------------------------------------------------------- 1 | // 2 | // IQToolbar.h 3 | // https://github.com/hackiftekhar/IQKeyboardManager 4 | // Copyright (c) 2013-16 Iftekhar Qurashi. 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #import "IQTitleBarButtonItem.h" 25 | 26 | #import 27 | #import 28 | 29 | /** 30 | IQToolbar for IQKeyboardManager. 31 | */ 32 | @interface IQToolbar : UIToolbar 33 | 34 | /** 35 | Previous bar button of toolbar. 36 | */ 37 | @property(nonnull, nonatomic, strong) IQBarButtonItem *previousBarButton; 38 | 39 | /** 40 | Next bar button of toolbar. 41 | */ 42 | @property(nonnull, nonatomic, strong) IQBarButtonItem *nextBarButton; 43 | 44 | /** 45 | Title bar button of toolbar. 46 | */ 47 | @property(nonnull, nonatomic, strong, readonly) IQTitleBarButtonItem *titleBarButton; 48 | 49 | /** 50 | Done bar button of toolbar. 51 | */ 52 | @property(nonnull, nonatomic, strong) IQBarButtonItem *doneBarButton; 53 | 54 | /** 55 | Fixed space bar button of toolbar. 56 | */ 57 | @property(nonnull, nonatomic, strong) IQBarButtonItem *fixedSpaceBarButton; 58 | 59 | @end 60 | 61 | -------------------------------------------------------------------------------- /Demo/Pods/IQKeyboardManager/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2013-2017 Iftekhar Qurashi 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 | -------------------------------------------------------------------------------- /Demo/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - IQKeyboardManager (6.5.6) 3 | - SDCycleScrollView (1.65): 4 | - SDWebImage (~> 3.7) 5 | - SDWebImage (3.7.6): 6 | - SDWebImage/Core (= 3.7.6) 7 | - SDWebImage/Core (3.7.6) 8 | - TZImagePickerController (1.9.8) 9 | 10 | DEPENDENCIES: 11 | - IQKeyboardManager (~> 6.5.6) 12 | - SDCycleScrollView (~> 1.64) 13 | - SDWebImage (~> 3.7.6) 14 | - TZImagePickerController 15 | 16 | SPEC REPOS: 17 | trunk: 18 | - IQKeyboardManager 19 | - SDCycleScrollView 20 | - SDWebImage 21 | - TZImagePickerController 22 | 23 | SPEC CHECKSUMS: 24 | IQKeyboardManager: 2a6e97afdafc7becf0cb17a9a8d795e3a980717f 25 | SDCycleScrollView: f72904c77698a7f93a41bcbbc2d78b073bf7326c 26 | SDWebImage: c325cf02c30337336b95beff20a13df489ec0ec9 27 | TZImagePickerController: 3b9413ae5d049b1fdc5b0c720ad283f35b679a50 28 | 29 | PODFILE CHECKSUM: 012d0f11e1ca916afee8fc72555e17e5d422f5d8 30 | 31 | COCOAPODS: 1.10.1 32 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 GSD_iOS 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/README.md: -------------------------------------------------------------------------------- 1 | # SDCycleScrollView(新建QQ交流群:185534916) 2 | ## ☆☆☆ “iOS图片、文字轮播器” ☆☆☆ 3 | 4 | ### 支持pod导入 5 | pod 'SDCycleScrollView','~> 1.64' 6 | 7 | 如果发现pod search SDCycleScrollView 搜索出来的不是最新版本,需要在终端执行cd转换文件路径命令退回到desktop,然后执行pod setup命令更新本地spec缓存(可能需要几分钟),然后再搜索就可以了 8 | 9 | ### 更改记录: 10 | 11 | 2016.05.27 -- 新增纯文字轮播、增加viewController在来回push时候出现的图片卡在中间的解决方案“解决viewWillAppear时出现时轮播图卡在一半的问题,在控制器viewWillAppear时调用 adjustWhenControllerViewWillAppera” 12 | 13 | 2016.04.21 -- 修复自定义图片的pagecontrol刷新图片数据时崩溃bug;设置单张图片时停止轮播 14 | 15 | 2016.03.31 -- 增加垂直方向滚动功能 16 | 17 | 2016.01.21 -- 修复加载时出现item size zero提示问题 18 | 19 | 2016.01.15 -- 兼容assets存放的本地图片 20 | 21 | 2016.01.06 -- 0.图片管理使用SDWebImage;1.优化内存,提升性能;2.添加图片contentmode接口;3.block监听点击接口;4.滚动到某张图片监听;5.增加自定义图片pageControl接口;6.其他等等。其中有一处接口改动:pagecontrol的小圆点自定义接口改为:currentPageDotColor、pageDotColor、currentPageDotImage、pageDotImage。 22 | 23 | 24 | ### 无限循环自动图片轮播器(一步设置即可使用) 25 | 26 | // 网络加载图片的轮播器 27 | SDCycleScrollView *cycleScrollView = [cycleScrollViewWithFrame:frame delegate:delegate placeholderImage:placeholderImage]; 28 | cycleScrollView.imageURLStringsGroup = imagesURLStrings; 29 | 30 | // 本地加载图片的轮播器 31 | SDCycleScrollView *cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame: imagesGroup:图片数组]; 32 | 33 | 34 | --------------------------------------------------------------------------------------------------------------- 35 | 36 | ## ??? 为什么我用这个轮播期会在顶部出现一块空白区域 37 | 以下是本库的使用者给出的一些解决方法放在这里供大家参考: 38 | 在iOS 7以后,controller 会对其中唯一的scrollView或其子类调整内边距,从而导致位置不准确。设置self.automaticallyAdjustsScrollViewInsets = NO;或者controller中放置不止一个scrollView或其子类时,就不会出现这种问题。以上原因是我的猜测,只要我设置了 self.automaticallyAdjustsScrollViewInsets = NO就没有那个问题了。 39 | 40 | #PS: 41 | 42 | 如需更详细的设置,参考如下: 43 | 44 | 1. cycleScrollView.pageControlAliment = SDCycleScrollViewPageContolAlimentRight; // 设置pageControl居右,默认居中 45 | 46 | 2. cycleScrollView.titlesGroup = 标题数组(数组元素个数必须和图片数组元素个数保持一致); // 如果设置title数组,则会在图片下面添加标题 47 | 48 | 3. cycleScrollView.delegate = ; // 如需监听图片点击,请设置代理,实现代理方法 49 | 50 | 4. cycleScrollView.autoScrollTimeInterval = ;// 自定义轮播时间间隔 51 | 52 | ![](http://ww4.sinaimg.cn/bmiddle/9b8146edjw1esvytq7lwrg208p0fce82.gif) 53 | 54 | ![](http://cdn.cocimg.com/bbs/attachment/Fid_19/19_441660_d01407e9c4b63d1.gif) 55 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAbstractDotView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TAAbstractDotView.h 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface TAAbstractDotView : UIView 13 | 14 | 15 | /** 16 | * A method call let view know which state appearance it should take. Active meaning it's current page. Inactive not the current page. 17 | * 18 | * @param active BOOL to tell if view is active or not 19 | */ 20 | - (void)changeActivityState:(BOOL)active; 21 | 22 | 23 | @end 24 | 25 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAbstractDotView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TAAbstractDotView.m 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TAAbstractDotView.h" 10 | 11 | 12 | @implementation TAAbstractDotView 13 | 14 | 15 | - (id)init 16 | { 17 | @throw [NSException exceptionWithName:NSInternalInconsistencyException 18 | reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class] 19 | userInfo:nil]; 20 | } 21 | 22 | 23 | - (void)changeActivityState:(BOOL)active 24 | { 25 | @throw [NSException exceptionWithName:NSInternalInconsistencyException 26 | reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class] 27 | userInfo:nil]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAnimatedDotView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TAAnimatedDotView.h 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TAAbstractDotView.h" 10 | 11 | @interface TAAnimatedDotView : TAAbstractDotView 12 | 13 | @property (nonatomic, strong) UIColor *dotColor; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAnimatedDotView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TAAnimatedDotView.m 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TAAnimatedDotView.h" 10 | 11 | static CGFloat const kAnimateDuration = 1; 12 | 13 | @implementation TAAnimatedDotView 14 | 15 | - (instancetype)init 16 | { 17 | self = [super init]; 18 | if (self) { 19 | [self initialization]; 20 | } 21 | 22 | return self; 23 | } 24 | 25 | 26 | - (id)initWithFrame:(CGRect)frame 27 | { 28 | self = [super initWithFrame:frame]; 29 | if (self) { 30 | [self initialization]; 31 | } 32 | return self; 33 | } 34 | 35 | 36 | - (id)initWithCoder:(NSCoder *)aDecoder 37 | { 38 | self = [super initWithCoder:aDecoder]; 39 | if (self) { 40 | [self initialization]; 41 | } 42 | 43 | return self; 44 | } 45 | 46 | - (void)setDotColor:(UIColor *)dotColor 47 | { 48 | _dotColor = dotColor; 49 | self.layer.borderColor = dotColor.CGColor; 50 | } 51 | 52 | - (void)initialization 53 | { 54 | _dotColor = [UIColor whiteColor]; 55 | self.backgroundColor = [UIColor clearColor]; 56 | self.layer.cornerRadius = CGRectGetWidth(self.frame) / 2; 57 | self.layer.borderColor = [UIColor whiteColor].CGColor; 58 | self.layer.borderWidth = 2; 59 | } 60 | 61 | 62 | - (void)changeActivityState:(BOOL)active 63 | { 64 | if (active) { 65 | [self animateToActiveState]; 66 | } else { 67 | [self animateToDeactiveState]; 68 | } 69 | } 70 | 71 | 72 | - (void)animateToActiveState 73 | { 74 | [UIView animateWithDuration:kAnimateDuration delay:0 usingSpringWithDamping:.5 initialSpringVelocity:-20 options:UIViewAnimationOptionCurveLinear animations:^{ 75 | self.backgroundColor = _dotColor; 76 | self.transform = CGAffineTransformMakeScale(1.4, 1.4); 77 | } completion:nil]; 78 | } 79 | 80 | - (void)animateToDeactiveState 81 | { 82 | [UIView animateWithDuration:kAnimateDuration delay:0 usingSpringWithDamping:.5 initialSpringVelocity:0 options:UIViewAnimationOptionCurveLinear animations:^{ 83 | self.backgroundColor = [UIColor clearColor]; 84 | self.transform = CGAffineTransformIdentity; 85 | } completion:nil]; 86 | } 87 | 88 | @end 89 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TADotView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TADotView.h 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TAAbstractDotView.h" 10 | 11 | @interface TADotView : TAAbstractDotView 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TADotView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TADotView.m 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TADotView.h" 10 | 11 | @implementation TADotView 12 | 13 | 14 | - (instancetype)init 15 | { 16 | self = [super init]; 17 | if (self) { 18 | [self initialization]; 19 | } 20 | 21 | return self; 22 | } 23 | 24 | 25 | - (id)initWithFrame:(CGRect)frame 26 | { 27 | self = [super initWithFrame:frame]; 28 | if (self) { 29 | [self initialization]; 30 | } 31 | return self; 32 | } 33 | 34 | 35 | - (id)initWithCoder:(NSCoder *)aDecoder 36 | { 37 | self = [super initWithCoder:aDecoder]; 38 | if (self) { 39 | [self initialization]; 40 | } 41 | 42 | return self; 43 | } 44 | 45 | - (void)initialization 46 | { 47 | self.backgroundColor = [UIColor clearColor]; 48 | self.layer.cornerRadius = CGRectGetWidth(self.frame) / 2; 49 | self.layer.borderColor = [UIColor whiteColor].CGColor; 50 | self.layer.borderWidth = 2; 51 | } 52 | 53 | 54 | - (void)changeActivityState:(BOOL)active 55 | { 56 | if (active) { 57 | self.backgroundColor = [UIColor whiteColor]; 58 | } else { 59 | self.backgroundColor = [UIColor clearColor]; 60 | } 61 | } 62 | 63 | @end 64 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAPageControl.h: -------------------------------------------------------------------------------- 1 | // 2 | // TAPageControl.h 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-21. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol TAPageControlDelegate; 12 | 13 | 14 | @interface TAPageControl : UIControl 15 | 16 | 17 | /** 18 | * Dot view customization properties 19 | */ 20 | 21 | /** 22 | * The Class of your custom UIView, make sure to respect the TAAbstractDotView class. 23 | */ 24 | @property (nonatomic) Class dotViewClass; 25 | 26 | 27 | /** 28 | * UIImage to represent a dot. 29 | */ 30 | @property (nonatomic) UIImage *dotImage; 31 | 32 | 33 | /** 34 | * UIImage to represent current page dot. 35 | */ 36 | @property (nonatomic) UIImage *currentDotImage; 37 | 38 | 39 | /** 40 | * Dot size for dot views. Default is 8 by 8. 41 | */ 42 | @property (nonatomic) CGSize dotSize; 43 | 44 | 45 | @property (nonatomic, strong) UIColor *dotColor; 46 | 47 | /** 48 | * Spacing between two dot views. Default is 8. 49 | */ 50 | @property (nonatomic) NSInteger spacingBetweenDots; 51 | 52 | 53 | /** 54 | * Page control setup properties 55 | */ 56 | 57 | 58 | /** 59 | * Delegate for TAPageControl 60 | */ 61 | @property(nonatomic,assign) id delegate; 62 | 63 | 64 | /** 65 | * Number of pages for control. Default is 0. 66 | */ 67 | @property (nonatomic) NSInteger numberOfPages; 68 | 69 | 70 | /** 71 | * Current page on which control is active. Default is 0. 72 | */ 73 | @property (nonatomic) NSInteger currentPage; 74 | 75 | 76 | /** 77 | * Hide the control if there is only one page. Default is NO. 78 | */ 79 | @property (nonatomic) BOOL hidesForSinglePage; 80 | 81 | 82 | /** 83 | * Let the control know if should grow bigger by keeping center, or just get longer (right side expanding). By default YES. 84 | */ 85 | @property (nonatomic) BOOL shouldResizeFromCenter; 86 | 87 | 88 | /** 89 | * Return the minimum size required to display control properly for the given page count. 90 | * 91 | * @param pageCount Number of dots that will require display 92 | * 93 | * @return The CGSize being the minimum size required. 94 | */ 95 | - (CGSize)sizeForNumberOfPages:(NSInteger)pageCount; 96 | 97 | 98 | @end 99 | 100 | 101 | @protocol TAPageControlDelegate 102 | 103 | @optional 104 | - (void)TAPageControl:(TAPageControl *)pageControl didSelectPageAtIndex:(NSInteger)index; 105 | 106 | @end 107 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SDCollectionViewCell.h 3 | // SDCycleScrollView 4 | // 5 | // Created by aier on 15-3-22. 6 | // Copyright (c) 2015年 GSD. All rights reserved. 7 | // 8 | 9 | /* 10 | 11 | ********************************************************************************* 12 | * 13 | * 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟 14 | * 15 | * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并 16 | * 帮您解决问题。 17 | * 新浪微博:GSD_iOS 18 | * Email : gsdios@126.com 19 | * GitHub: https://github.com/gsdios 20 | * 21 | * 另(我的自动布局库SDAutoLayout): 22 | * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于 23 | * 做最简单易用的AutoLayout库。 24 | * 视频教程:http://www.letv.com/ptv/vplay/24038772.html 25 | * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md 26 | * GitHub:https://github.com/gsdios/SDAutoLayout 27 | ********************************************************************************* 28 | 29 | */ 30 | 31 | 32 | 33 | #import 34 | 35 | @interface SDCollectionViewCell : UICollectionViewCell 36 | 37 | @property (weak, nonatomic) UIImageView *imageView; 38 | @property (copy, nonatomic) NSString *title; 39 | 40 | @property (nonatomic, strong) UIColor *titleLabelTextColor; 41 | @property (nonatomic, strong) UIFont *titleLabelTextFont; 42 | @property (nonatomic, strong) UIColor *titleLabelBackgroundColor; 43 | @property (nonatomic, assign) CGFloat titleLabelHeight; 44 | 45 | @property (nonatomic, assign) BOOL hasConfigured; 46 | 47 | /** 只展示文字轮播 */ 48 | @property (nonatomic, assign) BOOL onlyDisplayText; 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCollectionViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // SDCollectionViewCell.m 3 | // SDCycleScrollView 4 | // 5 | // Created by aier on 15-3-22. 6 | // Copyright (c) 2015年 GSD. All rights reserved. 7 | // 8 | 9 | 10 | /* 11 | 12 | ********************************************************************************* 13 | * 14 | * 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟 15 | * 16 | * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并 17 | * 帮您解决问题。 18 | * 新浪微博:GSD_iOS 19 | * Email : gsdios@126.com 20 | * GitHub: https://github.com/gsdios 21 | * 22 | * 另(我的自动布局库SDAutoLayout): 23 | * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于 24 | * 做最简单易用的AutoLayout库。 25 | * 视频教程:http://www.letv.com/ptv/vplay/24038772.html 26 | * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md 27 | * GitHub:https://github.com/gsdios/SDAutoLayout 28 | ********************************************************************************* 29 | 30 | */ 31 | 32 | 33 | #import "SDCollectionViewCell.h" 34 | #import "UIView+SDExtension.h" 35 | 36 | @implementation SDCollectionViewCell 37 | { 38 | __weak UILabel *_titleLabel; 39 | } 40 | 41 | 42 | - (instancetype)initWithFrame:(CGRect)frame 43 | { 44 | if (self = [super initWithFrame:frame]) { 45 | [self setupImageView]; 46 | [self setupTitleLabel]; 47 | } 48 | 49 | return self; 50 | } 51 | 52 | - (void)setTitleLabelBackgroundColor:(UIColor *)titleLabelBackgroundColor 53 | { 54 | _titleLabelBackgroundColor = titleLabelBackgroundColor; 55 | _titleLabel.backgroundColor = titleLabelBackgroundColor; 56 | } 57 | 58 | - (void)setTitleLabelTextColor:(UIColor *)titleLabelTextColor 59 | { 60 | _titleLabelTextColor = titleLabelTextColor; 61 | _titleLabel.textColor = titleLabelTextColor; 62 | } 63 | 64 | - (void)setTitleLabelTextFont:(UIFont *)titleLabelTextFont 65 | { 66 | _titleLabelTextFont = titleLabelTextFont; 67 | _titleLabel.font = titleLabelTextFont; 68 | } 69 | 70 | - (void)setupImageView 71 | { 72 | UIImageView *imageView = [[UIImageView alloc] init]; 73 | _imageView = imageView; 74 | [self.contentView addSubview:imageView]; 75 | } 76 | 77 | - (void)setupTitleLabel 78 | { 79 | UILabel *titleLabel = [[UILabel alloc] init]; 80 | _titleLabel = titleLabel; 81 | _titleLabel.hidden = YES; 82 | [self.contentView addSubview:titleLabel]; 83 | } 84 | 85 | - (void)setTitle:(NSString *)title 86 | { 87 | _title = [title copy]; 88 | _titleLabel.text = [NSString stringWithFormat:@" %@", title]; 89 | if (_titleLabel.hidden) { 90 | _titleLabel.hidden = NO; 91 | } 92 | } 93 | 94 | 95 | - (void)layoutSubviews 96 | { 97 | [super layoutSubviews]; 98 | 99 | if (self.onlyDisplayText) { 100 | _titleLabel.frame = self.bounds; 101 | } else { 102 | _imageView.frame = self.bounds; 103 | CGFloat titleLabelW = self.sd_width; 104 | CGFloat titleLabelH = _titleLabelHeight; 105 | CGFloat titleLabelX = 0; 106 | CGFloat titleLabelY = self.sd_height - titleLabelH; 107 | _titleLabel.frame = CGRectMake(titleLabelX, titleLabelY, titleLabelW, titleLabelH); 108 | } 109 | } 110 | 111 | @end 112 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/UIView+SDExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+SDExtension.h 3 | // SDRefreshView 4 | // 5 | // Created by aier on 15-2-23. 6 | // Copyright (c) 2015年 GSD. All rights reserved. 7 | // 8 | 9 | /* 10 | 11 | ********************************************************************************* 12 | * 13 | * 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟 14 | * 15 | * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并 16 | * 帮您解决问题。 17 | * 新浪微博:GSD_iOS 18 | * Email : gsdios@126.com 19 | * GitHub: https://github.com/gsdios 20 | * 21 | * 另(我的自动布局库SDAutoLayout): 22 | * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于 23 | * 做最简单易用的AutoLayout库。 24 | * 视频教程:http://www.letv.com/ptv/vplay/24038772.html 25 | * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md 26 | * GitHub:https://github.com/gsdios/SDAutoLayout 27 | ********************************************************************************* 28 | 29 | */ 30 | 31 | #import 32 | 33 | #define SDColorCreater(r, g, b, a) [UIColor colorWithRed:(r / 255.0) green:(g / 255.0) blue:(b / 255.0) alpha:a] 34 | 35 | 36 | @interface UIView (SDExtension) 37 | 38 | @property (nonatomic, assign) CGFloat sd_height; 39 | @property (nonatomic, assign) CGFloat sd_width; 40 | 41 | @property (nonatomic, assign) CGFloat sd_y; 42 | @property (nonatomic, assign) CGFloat sd_x; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Demo/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/UIView+SDExtension.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+SDExtension.m 3 | // SDRefreshView 4 | // 5 | // Created by aier on 15-2-23. 6 | // Copyright (c) 2015年 GSD. All rights reserved. 7 | // 8 | 9 | /* 10 | 11 | ********************************************************************************* 12 | * 13 | * 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟 14 | * 15 | * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并 16 | * 帮您解决问题。 17 | * 新浪微博:GSD_iOS 18 | * Email : gsdios@126.com 19 | * GitHub: https://github.com/gsdios 20 | * 21 | * 另(我的自动布局库SDAutoLayout): 22 | * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于 23 | * 做最简单易用的AutoLayout库。 24 | * 视频教程:http://www.letv.com/ptv/vplay/24038772.html 25 | * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md 26 | * GitHub:https://github.com/gsdios/SDAutoLayout 27 | ********************************************************************************* 28 | 29 | */ 30 | 31 | /* 32 | 33 | ********************************************************************************* 34 | * 35 | * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并 36 | * 帮您解决问题。 37 | * 新浪微博:GSD_iOS 38 | * Email : gsdios@126.com 39 | * GitHub: https://github.com/gsdios 40 | * 41 | * 另(我的自动布局库SDAutoLayout): 42 | * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于 43 | * 做最简单易用的AutoLayout库。 44 | * 视频教程:http://www.letv.com/ptv/vplay/24038772.html 45 | * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md 46 | * GitHub:https://github.com/gsdios/SDAutoLayout 47 | ********************************************************************************* 48 | 49 | */ 50 | 51 | 52 | #import "UIView+SDExtension.h" 53 | 54 | @implementation UIView (SDExtension) 55 | 56 | - (CGFloat)sd_height 57 | { 58 | return self.frame.size.height; 59 | } 60 | 61 | - (void)setSd_height:(CGFloat)sd_height 62 | { 63 | CGRect temp = self.frame; 64 | temp.size.height = sd_height; 65 | self.frame = temp; 66 | } 67 | 68 | - (CGFloat)sd_width 69 | { 70 | return self.frame.size.width; 71 | } 72 | 73 | - (void)setSd_width:(CGFloat)sd_width 74 | { 75 | CGRect temp = self.frame; 76 | temp.size.width = sd_width; 77 | self.frame = temp; 78 | } 79 | 80 | 81 | - (CGFloat)sd_y 82 | { 83 | return self.frame.origin.y; 84 | } 85 | 86 | - (void)setSd_y:(CGFloat)sd_y 87 | { 88 | CGRect temp = self.frame; 89 | temp.origin.y = sd_y; 90 | self.frame = temp; 91 | } 92 | 93 | - (CGFloat)sd_x 94 | { 95 | return self.frame.origin.x; 96 | } 97 | 98 | - (void)setSd_x:(CGFloat)sd_x 99 | { 100 | CGRect temp = self.frame; 101 | temp.origin.x = sd_x; 102 | self.frame = temp; 103 | } 104 | 105 | 106 | 107 | @end 108 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.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 "SDWebImageDownloader.h" 11 | #import "SDWebImageOperation.h" 12 | 13 | extern NSString *const SDWebImageDownloadStartNotification; 14 | extern NSString *const SDWebImageDownloadReceiveResponseNotification; 15 | extern NSString *const SDWebImageDownloadStopNotification; 16 | extern NSString *const SDWebImageDownloadFinishNotification; 17 | 18 | @interface SDWebImageDownloaderOperation : NSOperation 19 | 20 | /** 21 | * The request used by the operation's connection. 22 | */ 23 | @property (strong, nonatomic, readonly) NSURLRequest *request; 24 | 25 | 26 | @property (assign, nonatomic) BOOL shouldDecompressImages; 27 | 28 | /** 29 | * Whether the URL connection should consult the credential storage for authenticating the connection. `YES` by default. 30 | * 31 | * This is the value that is returned in the `NSURLConnectionDelegate` method `-connectionShouldUseCredentialStorage:`. 32 | */ 33 | @property (nonatomic, assign) BOOL shouldUseCredentialStorage; 34 | 35 | /** 36 | * The credential used for authentication challenges in `-connection:didReceiveAuthenticationChallenge:`. 37 | * 38 | * This will be overridden by any shared credentials that exist for the username or password of the request URL, if present. 39 | */ 40 | @property (nonatomic, strong) NSURLCredential *credential; 41 | 42 | /** 43 | * The SDWebImageDownloaderOptions for the receiver. 44 | */ 45 | @property (assign, nonatomic, readonly) SDWebImageDownloaderOptions options; 46 | 47 | /** 48 | * The expected size of data. 49 | */ 50 | @property (assign, nonatomic) NSInteger expectedSize; 51 | 52 | /** 53 | * The response returned by the operation's connection. 54 | */ 55 | @property (strong, nonatomic) NSURLResponse *response; 56 | 57 | /** 58 | * Initializes a `SDWebImageDownloaderOperation` object 59 | * 60 | * @see SDWebImageDownloaderOperation 61 | * 62 | * @param request the URL request 63 | * @param options downloader options 64 | * @param progressBlock the block executed when a new chunk of data arrives. 65 | * @note the progress block is executed on a background queue 66 | * @param completedBlock the block executed when the download is done. 67 | * @note the completed block is executed on the main queue for success. If errors are found, there is a chance the block will be executed on a background queue 68 | * @param cancelBlock the block executed if the download (operation) is cancelled 69 | * 70 | * @return the initialized instance 71 | */ 72 | - (id)initWithRequest:(NSURLRequest *)request 73 | options:(SDWebImageDownloaderOptions)options 74 | progress:(SDWebImageDownloaderProgressBlock)progressBlock 75 | completed:(SDWebImageDownloaderCompletedBlock)completedBlock 76 | cancelled:(SDWebImageNoParamsBlock)cancelBlock; 77 | 78 | @end 79 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Zhen Tan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/NSBundle+TZImagePicker.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+TZImagePicker.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 16/08/18. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSBundle (TZImagePicker) 12 | 13 | + (NSBundle *)tz_imagePickerBundle; 14 | 15 | + (NSString *)tz_localizedStringForKey:(NSString *)key value:(NSString *)value; 16 | + (NSString *)tz_localizedStringForKey:(NSString *)key; 17 | 18 | @end 19 | 20 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/NSBundle+TZImagePicker.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+TZImagePicker.m 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 16/08/18. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import "NSBundle+TZImagePicker.h" 10 | #import "TZImagePickerController.h" 11 | 12 | @implementation NSBundle (TZImagePicker) 13 | 14 | + (NSBundle *)tz_imagePickerBundle { 15 | NSBundle *bundle = [NSBundle bundleForClass:[TZImagePickerController class]]; 16 | NSURL *url = [bundle URLForResource:@"TZImagePickerController" withExtension:@"bundle"]; 17 | bundle = [NSBundle bundleWithURL:url]; 18 | return bundle; 19 | } 20 | 21 | + (NSString *)tz_localizedStringForKey:(NSString *)key { 22 | return [self tz_localizedStringForKey:key value:@""]; 23 | } 24 | 25 | + (NSString *)tz_localizedStringForKey:(NSString *)key value:(NSString *)value { 26 | static NSBundle *bundle = nil; 27 | if (bundle == nil) { 28 | NSString *language = [NSLocale preferredLanguages].firstObject; 29 | if ([language rangeOfString:@"zh-Hans"].location != NSNotFound) { 30 | language = @"zh-Hans"; 31 | } else { 32 | language = @"en"; 33 | } 34 | bundle = [NSBundle bundleWithPath:[[NSBundle tz_imagePickerBundle] pathForResource:language ofType:@"lproj"]]; 35 | } 36 | NSString *value1 = [bundle localizedStringForKey:key value:value table:nil]; 37 | return value1; 38 | } 39 | @end 40 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZAssetCell.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | typedef enum : NSUInteger { 13 | TZAssetCellTypePhoto = 0, 14 | TZAssetCellTypeLivePhoto, 15 | TZAssetCellTypePhotoGif, 16 | TZAssetCellTypeVideo, 17 | TZAssetCellTypeAudio, 18 | } TZAssetCellType; 19 | 20 | @class TZAssetModel; 21 | @interface TZAssetCell : UICollectionViewCell 22 | 23 | @property (weak, nonatomic) UIButton *selectPhotoButton; 24 | @property (nonatomic, strong) TZAssetModel *model; 25 | @property (nonatomic, copy) void (^didSelectPhotoBlock)(BOOL); 26 | @property (nonatomic, assign) TZAssetCellType type; 27 | @property (nonatomic, assign) BOOL allowPickingGif; 28 | @property (nonatomic, assign) BOOL allowPickingMultipleVideo; 29 | @property (nonatomic, copy) NSString *representedAssetIdentifier; 30 | @property (nonatomic, assign) int32_t imageRequestID; 31 | 32 | @property (nonatomic, copy) NSString *photoSelImageName; 33 | @property (nonatomic, copy) NSString *photoDefImageName; 34 | 35 | @property (nonatomic, assign) BOOL showSelectBtn; 36 | @property (assign, nonatomic) BOOL allowPreview; 37 | 38 | @end 39 | 40 | 41 | @class TZAlbumModel; 42 | 43 | @interface TZAlbumCell : UITableViewCell 44 | 45 | @property (nonatomic, strong) TZAlbumModel *model; 46 | @property (weak, nonatomic) UIButton *selectedCountButton; 47 | 48 | @end 49 | 50 | 51 | @interface TZAssetCameraCell : UICollectionViewCell 52 | 53 | @property (nonatomic, strong) UIImageView *imageView; 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZAssetModel.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | typedef enum : NSUInteger { 13 | TZAssetModelMediaTypePhoto = 0, 14 | TZAssetModelMediaTypeLivePhoto, 15 | TZAssetModelMediaTypePhotoGif, 16 | TZAssetModelMediaTypeVideo, 17 | TZAssetModelMediaTypeAudio 18 | } TZAssetModelMediaType; 19 | 20 | @class PHAsset; 21 | @interface TZAssetModel : NSObject 22 | 23 | @property (nonatomic, strong) id asset; ///< PHAsset or ALAsset 24 | @property (nonatomic, assign) BOOL isSelected; ///< The select status of a photo, default is No 25 | @property (nonatomic, assign) TZAssetModelMediaType type; 26 | @property (nonatomic, copy) NSString *timeLength; 27 | 28 | /// Init a photo dataModel With a asset 29 | /// 用一个PHAsset/ALAsset实例,初始化一个照片模型 30 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type; 31 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type timeLength:(NSString *)timeLength; 32 | 33 | @end 34 | 35 | 36 | @class PHFetchResult; 37 | @interface TZAlbumModel : NSObject 38 | 39 | @property (nonatomic, strong) NSString *name; ///< The album name 40 | @property (nonatomic, assign) NSInteger count; ///< Count of photos the album contain 41 | @property (nonatomic, strong) id result; ///< PHFetchResult or ALAssetsGroup 42 | 43 | @property (nonatomic, strong) NSArray *models; 44 | @property (nonatomic, strong) NSArray *selectedModels; 45 | @property (nonatomic, assign) NSUInteger selectedCount; 46 | 47 | @property (nonatomic, assign) BOOL isCameraRoll; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TZAssetModel.m 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import "TZAssetModel.h" 10 | #import "TZImageManager.h" 11 | 12 | @implementation TZAssetModel 13 | 14 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type{ 15 | TZAssetModel *model = [[TZAssetModel alloc] init]; 16 | model.asset = asset; 17 | model.isSelected = NO; 18 | model.type = type; 19 | return model; 20 | } 21 | 22 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type timeLength:(NSString *)timeLength { 23 | TZAssetModel *model = [self modelWithAsset:asset type:type]; 24 | model.timeLength = timeLength; 25 | return model; 26 | } 27 | 28 | @end 29 | 30 | 31 | 32 | @implementation TZAlbumModel 33 | 34 | - (void)setResult:(id)result { 35 | _result = result; 36 | BOOL allowPickingImage = [[[NSUserDefaults standardUserDefaults] objectForKey:@"tz_allowPickingImage"] isEqualToString:@"1"]; 37 | BOOL allowPickingVideo = [[[NSUserDefaults standardUserDefaults] objectForKey:@"tz_allowPickingVideo"] isEqualToString:@"1"]; 38 | [[TZImageManager manager] getAssetsFromFetchResult:result allowPickingVideo:allowPickingVideo allowPickingImage:allowPickingImage completion:^(NSArray *models) { 39 | _models = models; 40 | if (_selectedModels) { 41 | [self checkSelectedModels]; 42 | } 43 | }]; 44 | } 45 | 46 | - (void)setSelectedModels:(NSArray *)selectedModels { 47 | _selectedModels = selectedModels; 48 | if (_models) { 49 | [self checkSelectedModels]; 50 | } 51 | } 52 | 53 | - (void)checkSelectedModels { 54 | self.selectedCount = 0; 55 | NSMutableArray *selectedAssets = [NSMutableArray array]; 56 | for (TZAssetModel *model in _selectedModels) { 57 | [selectedAssets addObject:model.asset]; 58 | } 59 | for (TZAssetModel *model in _models) { 60 | if ([[TZImageManager manager] isAssetsArray:selectedAssets containAsset:model.asset]) { 61 | self.selectedCount ++; 62 | } 63 | } 64 | } 65 | 66 | - (NSString *)name { 67 | if (_name) { 68 | return _name; 69 | } 70 | return @""; 71 | } 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZGifPhotoPreviewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZGifPhotoPreviewController.h 3 | // TZImagePickerController 4 | // 5 | // Created by ttouch on 2016/12/13. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAssetModel; 12 | @interface TZGifPhotoPreviewController : UIViewController 13 | 14 | @property (nonatomic, strong) TZAssetModel *model; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageCropManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZImageCropManager.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 2016/12/5. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 图片裁剪管理类 8 | 9 | #import 10 | #import 11 | 12 | @interface TZImageCropManager : NSObject 13 | 14 | /// 裁剪框背景的处理 15 | + (void)overlayClippingWithView:(UIView *)view cropRect:(CGRect)cropRect containerView:(UIView *)containerView needCircleCrop:(BOOL)needCircleCrop; 16 | 17 | /* 18 | 1.7.2 为了解决多位同学对于图片裁剪的需求,我这两天有空便在研究图片裁剪 19 | 幸好有tuyou的PhotoTweaks库做参考,裁剪的功能实现起来简单许多 20 | 该方法和其内部引用的方法基本来自于tuyou的PhotoTweaks库,我做了稍许删减和修改 21 | 感谢tuyou同学在github开源了优秀的裁剪库PhotoTweaks,表示感谢 22 | PhotoTweaks库的github链接:https://github.com/itouch2/PhotoTweaks 23 | */ 24 | /// 获得裁剪后的图片 25 | + (UIImage *)cropImageView:(UIImageView *)imageView toRect:(CGRect)rect zoomScale:(double)zoomScale containerView:(UIView *)containerView; 26 | 27 | /// 获取圆形图片 28 | + (UIImage *)circularClipImage:(UIImage *)image; 29 | 30 | @end 31 | 32 | 33 | /// 该分类的代码来自SDWebImage:https://github.com/rs/SDWebImage 34 | /// 为了防止冲突,我将分类名字和方法名字做了修改 35 | @interface UIImage (TZGif) 36 | 37 | + (UIImage *)sd_tz_animatedGIFWithData:(NSData *)data; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/MMVideoPreviewPlay@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/MMVideoPreviewPlay@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/MMVideoPreviewPlayHL@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/MMVideoPreviewPlayHL@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/Root.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | StringsTable 6 | Root 7 | PreferenceSpecifiers 8 | 9 | 10 | Type 11 | PSGroupSpecifier 12 | Title 13 | Group 14 | 15 | 16 | Type 17 | PSTextFieldSpecifier 18 | Title 19 | Name 20 | Key 21 | name_preference 22 | DefaultValue 23 | 24 | IsSecure 25 | 26 | KeyboardType 27 | Alphabet 28 | AutocapitalizationType 29 | None 30 | AutocorrectionType 31 | No 32 | 33 | 34 | Type 35 | PSToggleSwitchSpecifier 36 | Title 37 | Enabled 38 | Key 39 | enabled_preference 40 | DefaultValue 41 | 42 | 43 | 44 | Type 45 | PSSliderSpecifier 46 | Key 47 | slider_preference 48 | DefaultValue 49 | 0.5 50 | MinimumValue 51 | 0 52 | MaximumValue 53 | 1 54 | MinimumValueImage 55 | 56 | MaximumValueImage 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/VideoSendIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/VideoSendIcon@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/navi_back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/navi_back@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_def_photoPickerVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_def_photoPickerVc@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_def_previewVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_def_previewVc@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_number_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_number_icon@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_original_def@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_original_def@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_original_sel@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_original_sel@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_sel_photoPickerVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_sel_photoPickerVc@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_sel_previewVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/photo_sel_previewVc@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/preview_number_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/preview_number_icon@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/preview_original_def@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/preview_original_def@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/takePicture@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/takePicture@2x.png -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/zh-Hans.lproj/Localizable.strings -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZLocationManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZLocationManager.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 2017/06/03. 6 | // Copyright © 2017年 谭真. All rights reserved. 7 | // 定位管理类 8 | 9 | 10 | #import 11 | #import 12 | 13 | @interface TZLocationManager : NSObject 14 | 15 | + (instancetype)manager; 16 | 17 | /// 开始定位 18 | - (void)startLocation; 19 | - (void)startLocationWithSuccessBlock:(void (^)(CLLocation *location,CLLocation *oldLocation))successBlock failureBlock:(void (^)(NSError *error))failureBlock; 20 | - (void)startLocationWithGeocoderBlock:(void (^)(NSArray *geocoderArray))geocoderBlock; 21 | - (void)startLocationWithSuccessBlock:(void (^)(CLLocation *location,CLLocation *oldLocation))successBlock failureBlock:(void (^)(NSError *error))failureBlock geocoderBlock:(void (^)(NSArray *geocoderArray))geocoderBlock; 22 | 23 | @end 24 | 25 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZLocationManager.m: -------------------------------------------------------------------------------- 1 | // 2 | // TZLocationManager.m 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 2017/06/03. 6 | // Copyright © 2017年 谭真. All rights reserved. 7 | // 定位管理类 8 | 9 | #import "TZLocationManager.h" 10 | #import "TZImagePickerController.h" 11 | 12 | @interface TZLocationManager () 13 | @property (nonatomic, strong) CLLocationManager *locationManager; 14 | /// 定位成功的回调block 15 | @property (nonatomic, copy) void (^successBlock)(CLLocation *location,CLLocation *oldLocation); 16 | /// 编码成功的回调block 17 | @property (nonatomic, copy) void (^geocodeBlock)(NSArray *geocodeArray); 18 | /// 定位失败的回调block 19 | @property (nonatomic, copy) void (^failureBlock)(NSError *error); 20 | @end 21 | 22 | @implementation TZLocationManager 23 | 24 | + (instancetype)manager { 25 | static TZLocationManager *manager; 26 | static dispatch_once_t onceToken; 27 | dispatch_once(&onceToken, ^{ 28 | manager = [[self alloc] init]; 29 | manager.locationManager = [[CLLocationManager alloc] init]; 30 | manager.locationManager.delegate = manager; 31 | if (iOS8Later) { 32 | [manager.locationManager requestWhenInUseAuthorization]; 33 | } 34 | }); 35 | return manager; 36 | } 37 | 38 | - (void)startLocation { 39 | [self startLocationWithSuccessBlock:nil failureBlock:nil geocoderBlock:nil]; 40 | } 41 | 42 | - (void)startLocationWithSuccessBlock:(void (^)(CLLocation *location,CLLocation *oldLocation))successBlock failureBlock:(void (^)(NSError *error))failureBlock { 43 | [self startLocationWithSuccessBlock:successBlock failureBlock:failureBlock geocoderBlock:nil]; 44 | } 45 | 46 | - (void)startLocationWithGeocoderBlock:(void (^)(NSArray *geocoderArray))geocoderBlock { 47 | [self startLocationWithSuccessBlock:nil failureBlock:nil geocoderBlock:geocoderBlock]; 48 | } 49 | 50 | - (void)startLocationWithSuccessBlock:(void (^)(CLLocation *location,CLLocation *oldLocation))successBlock failureBlock:(void (^)(NSError *error))failureBlock geocoderBlock:(void (^)(NSArray *geocoderArray))geocoderBlock { 51 | [self.locationManager startUpdatingLocation]; 52 | _successBlock = successBlock; 53 | _geocodeBlock = geocoderBlock; 54 | _failureBlock = failureBlock; 55 | } 56 | 57 | #pragma mark - CLLocationManagerDelegate 58 | 59 | /// 地理位置发生改变时触发 60 | - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 61 | [manager stopUpdatingLocation]; 62 | 63 | if (_successBlock) { 64 | _successBlock(newLocation,oldLocation); 65 | } 66 | 67 | if (_geocodeBlock) { 68 | CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 69 | [geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *array, NSError *error) { 70 | _geocodeBlock(array); 71 | }]; 72 | } 73 | } 74 | 75 | /// 定位失败回调方法 76 | - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { 77 | NSLog(@"定位失败, 错误: %@",error); 78 | switch([error code]) { 79 | case kCLErrorDenied: { // 用户禁止了定位权限 80 | 81 | } break; 82 | default: break; 83 | } 84 | if (_failureBlock) { 85 | _failureBlock(error); 86 | } 87 | } 88 | 89 | @end 90 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZPhotoPickerController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAlbumModel; 12 | @interface TZPhotoPickerController : UIViewController 13 | 14 | @property (nonatomic, assign) BOOL isFirstAppear; 15 | @property (nonatomic, assign) NSInteger columnNumber; 16 | @property (nonatomic, strong) TZAlbumModel *model; 17 | @end 18 | 19 | 20 | @interface TZCollectionView : UICollectionView 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZPhotoPreviewCell.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAssetModel; 12 | @interface TZAssetPreviewCell : UICollectionViewCell 13 | @property (nonatomic, strong) TZAssetModel *model; 14 | @property (nonatomic, copy) void (^singleTapGestureBlock)(); 15 | - (void)configSubviews; 16 | - (void)photoPreviewCollectionViewDidScroll; 17 | @end 18 | 19 | 20 | @class TZAssetModel,TZProgressView,TZPhotoPreviewView; 21 | @interface TZPhotoPreviewCell : TZAssetPreviewCell 22 | 23 | @property (nonatomic, copy) void (^imageProgressUpdateBlock)(double progress); 24 | 25 | @property (nonatomic, strong) TZPhotoPreviewView *previewView; 26 | 27 | @property (nonatomic, assign) BOOL allowCrop; 28 | @property (nonatomic, assign) CGRect cropRect; 29 | 30 | - (void)recoverSubviews; 31 | 32 | @end 33 | 34 | 35 | @interface TZPhotoPreviewView : UIView 36 | @property (nonatomic, strong) UIImageView *imageView; 37 | @property (nonatomic, strong) UIScrollView *scrollView; 38 | @property (nonatomic, strong) UIView *imageContainerView; 39 | @property (nonatomic, strong) TZProgressView *progressView; 40 | 41 | @property (nonatomic, assign) BOOL allowCrop; 42 | @property (nonatomic, assign) CGRect cropRect; 43 | 44 | @property (nonatomic, strong) TZAssetModel *model; 45 | @property (nonatomic, strong) id asset; 46 | @property (nonatomic, copy) void (^singleTapGestureBlock)(); 47 | @property (nonatomic, copy) void (^imageProgressUpdateBlock)(double progress); 48 | 49 | @property (nonatomic, assign) int32_t imageRequestID; 50 | 51 | - (void)recoverSubviews; 52 | @end 53 | 54 | 55 | @class AVPlayer, AVPlayerLayer; 56 | @interface TZVideoPreviewCell : TZAssetPreviewCell 57 | @property (strong, nonatomic) AVPlayer *player; 58 | @property (strong, nonatomic) AVPlayerLayer *playerLayer; 59 | @property (strong, nonatomic) UIButton *playButton; 60 | @property (strong, nonatomic) UIImage *cover; 61 | - (void)pausePlayerAndShowNaviBar; 62 | @end 63 | 64 | 65 | @interface TZGifPreviewCell : TZAssetPreviewCell 66 | @property (strong, nonatomic) TZPhotoPreviewView *previewView; 67 | @end 68 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZPhotoPreviewController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TZPhotoPreviewController : UIViewController 12 | 13 | @property (nonatomic, strong) NSMutableArray *models; ///< All photo models / 所有图片模型数组 14 | @property (nonatomic, strong) NSMutableArray *photos; ///< All photos / 所有图片数组 15 | @property (nonatomic, assign) NSInteger currentIndex; ///< Index of the photo user click / 用户点击的图片的索引 16 | @property (nonatomic, assign) BOOL isSelectOriginalPhoto; ///< If YES,return original photo / 是否返回原图 17 | @property (nonatomic, assign) BOOL isCropImage; 18 | 19 | /// Return the new selected photos / 返回最新的选中图片数组 20 | @property (nonatomic, copy) void (^backButtonClickBlock)(BOOL isSelectOriginalPhoto); 21 | @property (nonatomic, copy) void (^doneButtonClickBlock)(BOOL isSelectOriginalPhoto); 22 | @property (nonatomic, copy) void (^doneButtonClickBlockCropMode)(UIImage *cropedImage,id asset); 23 | @property (nonatomic, copy) void (^doneButtonClickBlockWithPreviewType)(NSArray *photos,NSArray *assets,BOOL isSelectOriginalPhoto); 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZProgressView.h 3 | // TZImagePickerController 4 | // 5 | // Created by ttouch on 2016/12/6. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TZProgressView : UIView 12 | 13 | @property (nonatomic, assign) double progress; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZProgressView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TZProgressView.m 3 | // TZImagePickerController 4 | // 5 | // Created by ttouch on 2016/12/6. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import "TZProgressView.h" 10 | 11 | @interface TZProgressView () 12 | @property (nonatomic, strong) CAShapeLayer *progressLayer; 13 | @end 14 | 15 | @implementation TZProgressView 16 | 17 | - (instancetype)init { 18 | self = [super init]; 19 | if (self) { 20 | self.backgroundColor = [UIColor clearColor]; 21 | 22 | _progressLayer = [CAShapeLayer layer]; 23 | _progressLayer.fillColor = [[UIColor clearColor] CGColor]; 24 | _progressLayer.strokeColor = [[UIColor whiteColor] CGColor]; 25 | _progressLayer.opacity = 1; 26 | _progressLayer.lineCap = kCALineCapRound; 27 | _progressLayer.lineWidth = 5; 28 | 29 | [_progressLayer setShadowColor:[UIColor blackColor].CGColor]; 30 | [_progressLayer setShadowOffset:CGSizeMake(1, 1)]; 31 | [_progressLayer setShadowOpacity:0.5]; 32 | [_progressLayer setShadowRadius:2]; 33 | } 34 | return self; 35 | } 36 | 37 | - (void)drawRect:(CGRect)rect { 38 | CGPoint center = CGPointMake(rect.size.width / 2, rect.size.height / 2); 39 | CGFloat radius = rect.size.width / 2; 40 | CGFloat startA = - M_PI_2; 41 | CGFloat endA = - M_PI_2 + M_PI * 2 * _progress; 42 | _progressLayer.frame = self.bounds; 43 | UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES]; 44 | _progressLayer.path =[path CGPath]; 45 | 46 | [_progressLayer removeFromSuperlayer]; 47 | [self.layer addSublayer:_progressLayer]; 48 | } 49 | 50 | - (void)setProgress:(double)progress { 51 | _progress = progress; 52 | [self setNeedsDisplay]; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZVideoPlayerController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZVideoPlayerController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 16/1/5. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAssetModel; 12 | @interface TZVideoPlayerController : UIViewController 13 | 14 | @property (nonatomic, strong) TZAssetModel *model; 15 | 16 | @end -------------------------------------------------------------------------------- /Demo/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/UIView+Layout.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Layout.h 3 | // 4 | // Created by 谭真 on 15/2/24. 5 | // Copyright © 2015年 谭真. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | typedef enum : NSUInteger { 11 | TZOscillatoryAnimationToBigger, 12 | TZOscillatoryAnimationToSmaller, 13 | } TZOscillatoryAnimationType; 14 | 15 | @interface UIView (Layout) 16 | 17 | @property (nonatomic) CGFloat tz_left; ///< Shortcut for frame.origin.x. 18 | @property (nonatomic) CGFloat tz_top; ///< Shortcut for frame.origin.y 19 | @property (nonatomic) CGFloat tz_right; ///< Shortcut for frame.origin.x + frame.size.width 20 | @property (nonatomic) CGFloat tz_bottom; ///< Shortcut for frame.origin.y + frame.size.height 21 | @property (nonatomic) CGFloat tz_width; ///< Shortcut for frame.size.width. 22 | @property (nonatomic) CGFloat tz_height; ///< Shortcut for frame.size.height. 23 | @property (nonatomic) CGFloat tz_centerX; ///< Shortcut for center.x 24 | @property (nonatomic) CGFloat tz_centerY; ///< Shortcut for center.y 25 | @property (nonatomic) CGPoint tz_origin; ///< Shortcut for frame.origin. 26 | @property (nonatomic) CGSize tz_size; ///< Shortcut for frame.size. 27 | 28 | + (void)showOscillatoryAnimationWithLayer:(CALayer *)layer type:(TZOscillatoryAnimationType)type; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-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 | 6.5.6 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_IQKeyboardManager : NSObject 3 | @end 4 | @implementation PodsDummy_IQKeyboardManager 5 | @end 6 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-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 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager-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 "IQKeyboardManager.h" 14 | #import "IQKeyboardReturnKeyHandler.h" 15 | #import "IQUIScrollView+Additions.h" 16 | #import "IQUITextFieldView+Additions.h" 17 | #import "IQUIView+Hierarchy.h" 18 | #import "IQUIViewController+Additions.h" 19 | #import "IQKeyboardManagerConstants.h" 20 | #import "IQTextView.h" 21 | #import "IQBarButtonItem.h" 22 | #import "IQPreviousNextView.h" 23 | #import "IQTitleBarButtonItem.h" 24 | #import "IQToolbar.h" 25 | #import "IQUIView+IQKeyboardToolbar.h" 26 | 27 | FOUNDATION_EXPORT double IQKeyboardManagerVersionNumber; 28 | FOUNDATION_EXPORT const unsigned char IQKeyboardManagerVersionString[]; 29 | 30 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "Foundation" -framework "QuartzCore" -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}/IQKeyboardManager 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager.modulemap: -------------------------------------------------------------------------------- 1 | framework module IQKeyboardManager { 2 | umbrella header "IQKeyboardManager-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "Foundation" -framework "QuartzCore" -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}/IQKeyboardManager 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/IQKeyboardManager/IQKeyboardManager.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/IQKeyboardManager 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 "Foundation" -framework "QuartzCore" -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}/IQKeyboardManager 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/IQKeyboardManager/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 | 5.0.7 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/Pods-CodeDemo/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 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/Pods-CodeDemo/Pods-CodeDemo-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 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/Pods-CodeDemo/Pods-CodeDemo-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_CodeDemo : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_CodeDemo 5 | @end 6 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/Pods-CodeDemo/Pods-CodeDemo-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_CodeDemoVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_CodeDemoVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/Pods-CodeDemo/Pods-CodeDemo.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "AssetsLibrary" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManager" -framework "ImageIO" -framework "Photos" -framework "QuartzCore" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "TZImagePickerController" -framework "UIKit" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/Pods-CodeDemo/Pods-CodeDemo.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_CodeDemo { 2 | umbrella header "Pods-CodeDemo-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/Pods-CodeDemo/Pods-CodeDemo.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "AssetsLibrary" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManager" -framework "ImageIO" -framework "Photos" -framework "QuartzCore" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "TZImagePickerController" -framework "UIKit" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDCycleScrollView/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.65.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView-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.65.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SDCycleScrollView : NSObject 3 | @end 4 | @implementation PodsDummy_SDCycleScrollView 5 | @end 6 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView-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 "TAAbstractDotView.h" 14 | #import "TAAnimatedDotView.h" 15 | #import "TADotView.h" 16 | #import "TAPageControl.h" 17 | #import "SDCollectionViewCell.h" 18 | #import "SDCycleScrollView.h" 19 | #import "UIView+SDExtension.h" 20 | 21 | FOUNDATION_EXPORT double SDCycleScrollViewVersionNumber; 22 | FOUNDATION_EXPORT const unsigned char SDCycleScrollViewVersionString[]; 23 | 24 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 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}/SDCycleScrollView 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView.modulemap: -------------------------------------------------------------------------------- 1 | framework module SDCycleScrollView { 2 | umbrella header "SDCycleScrollView-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 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}/SDCycleScrollView 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SDCycleScrollView 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SDWebImage" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 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}/SDCycleScrollView 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Demo/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.7.6 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDWebImage/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.7.6 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SDWebImage : NSObject 3 | @end 4 | @implementation PodsDummy_SDWebImage 5 | @end 6 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -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 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -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 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Demo/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 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/TZImagePickerController/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.9.8 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/TZImagePickerController/TZImagePickerController-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.9.8 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/TZImagePickerController/TZImagePickerController-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_TZImagePickerController : NSObject 3 | @end 4 | @implementation PodsDummy_TZImagePickerController 5 | @end 6 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/TZImagePickerController/TZImagePickerController-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 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/TZImagePickerController/TZImagePickerController-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 "NSBundle+TZImagePicker.h" 14 | #import "TZAssetCell.h" 15 | #import "TZAssetModel.h" 16 | #import "TZGifPhotoPreviewController.h" 17 | #import "TZImageCropManager.h" 18 | #import "TZImageManager.h" 19 | #import "TZImagePickerController.h" 20 | #import "TZLocationManager.h" 21 | #import "TZPhotoPickerController.h" 22 | #import "TZPhotoPreviewCell.h" 23 | #import "TZPhotoPreviewController.h" 24 | #import "TZProgressView.h" 25 | #import "TZVideoPlayerController.h" 26 | #import "UIView+Layout.h" 27 | 28 | FOUNDATION_EXPORT double TZImagePickerControllerVersionNumber; 29 | FOUNDATION_EXPORT const unsigned char TZImagePickerControllerVersionString[]; 30 | 31 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/TZImagePickerController/TZImagePickerController.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "AssetsLibrary" -framework "Photos" 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}/TZImagePickerController 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/TZImagePickerController/TZImagePickerController.modulemap: -------------------------------------------------------------------------------- 1 | framework module TZImagePickerController { 2 | umbrella header "TZImagePickerController-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/TZImagePickerController/TZImagePickerController.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "AssetsLibrary" -framework "Photos" 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}/TZImagePickerController 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Demo/Pods/Target Support Files/TZImagePickerController/TZImagePickerController.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/TZImagePickerController 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "AssetsLibrary" -framework "Photos" 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}/TZImagePickerController 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![image](https://github.com/wangrui460/WRNavigationBar/raw/master/screenshots/WRNavigationBar.png) 2 | 3 |

4 | 5 | 6 | 7 | 8 | 9 | ------------------------------------------------------------ 10 | 11 | # iOS 技术交流 12 | 我创建了一个 微信 iOS 技术交流群,欢迎小伙伴们加入一起交流学习~ 13 | 14 | 可以加我微信我拉你进去(备注iOS),我的微信号 wr1204607318 15 | 16 | ## Requirements 17 | - iOS 7.0+ 18 | - Xcode 8+ 19 | 20 | ## Demo 21 | |拉钩App首页|新浪微博个人中心|qq空间|知乎日报| 22 | |:-:|:-:|:-:|:-:| 23 | |![](https://github.com/wangrui460/WRNavigationBar/raw/master/screenshots/拉钩App首页.gif)|![](https://github.com/wangrui460/WRNavigationBar/raw/master/screenshots/新浪微博个人中心.gif)|![](https://github.com/wangrui460/WRNavigationBar/raw/master/screenshots/qq空间.gif)|![](https://github.com/wangrui460/WRNavigationBar/raw/master/screenshots/知乎日报.gif)| 24 | 25 | |QQ我的资料页|蚂蚁森林|连续多个界面导航栏透明|移动导航栏| 26 | |:-:|:-:|:-:|:-:| 27 | |![](https://github.com/wangrui460/WRNavigationBar/raw/master/screenshots/QQ我的资料页.gif)|![](https://github.com/wangrui460/WRNavigationBar/raw/master/screenshots/蚂蚁森林.gif)|![](https://github.com/wangrui460/WRNavigationBar/raw/master/screenshots/连续多个界面导航栏透明.gif)|![](https://github.com/wangrui460/WRNavigationBar/raw/master/screenshots/移动导航栏.gif)| 28 | 29 | ## Installation 30 | > **CocoaPods** 31 | > pod 'WRNavigationBar','~>1.4.0’ 32 | 如果未发现 1.4.0 请更新一下pod 33 | 34 | > **手动拖入** 35 | > 将 WRNavigationBar 文件夹拽入项目中,导入头文件:#import "WRNavigationBar.h" 36 | 37 | ### Use 38 | ✨✨ 一定要看 Demo 中的 AppDelegate 文件 ✨✨ 39 | 40 |


41 | // 设置是 全局使用WRNavigationBar,还是局部使用WRNavigationBar,目前默认是全局使用 (局部使用待开发)
42 | [WRNavigationBar wr_widely];
43 | // WRNavigationBar 不会对 blackList 中的控制器有影响
44 | [WRNavigationBar wr_setBlacklist:@[@"SpecialController",
45 | 				 @"TZPhotoPickerController",
46 | 				 @"TZGifPhotoPreviewController",
47 | 				 @"TZAlbumPickerController",
48 | 				 @"TZPhotoPreviewController",
49 | 				 @"TZVideoPlayerController"]];
50 | 
51 | 52 |

53 | // 一行代码搞定导航栏颜色
54 | [self wr_setNavBarBarTintColor:[UIColor whiteColor]];
55 | // 一行代码搞定导航栏透明度
56 | [self wr_setNavBarBackgroundAlpha:alpha];
57 | // 一行代码搞定导航栏两边按钮颜色
58 | [self wr_setNavBarTintColor:[UIColor whiteColor]];
59 | // 一行代码搞定导航栏上标题颜色
60 | [self wr_setNavBarTitleColor:[UIColor whiteColor]];
61 | // 一行代码搞定状态栏是 default 还是 lightContent
62 | [self wr_setStatusBarStyle:UIStatusBarStyleLightContent];
63 | // 一行代码搞定导航栏底部分割线是否隐藏
64 | [self wr_setNavBarShadowImageHidden:YES];
65 | 
66 | 67 |

68 | // 设置导航栏默认的背景颜色
69 | [WRNavigationBar wr_setDefaultNavBarBarTintColor:MainNavBarColor];
70 | // 设置导航栏所有按钮的默认颜色
71 | [WRNavigationBar wr_setDefaultNavBarTintColor:[UIColor whiteColor]];
72 | // 设置导航栏标题默认颜色
73 | [WRNavigationBar wr_setDefaultNavBarTitleColor:[UIColor whiteColor]];
74 | // 统一设置状态栏样式
75 | [WRNavigationBar wr_setDefaultStatusBarStyle:UIStatusBarStyleLightContent];
76 | // 如果需要设置导航栏底部分割线隐藏,可以在这里统一设置
77 | [WRNavigationBar wr_setDefaultNavBarShadowImageHidden:YES];
78 | 
79 | 80 | 81 | # License 82 | WRNavigationBar is available under the MIT license. See the LICENSE file for more info. 83 | -------------------------------------------------------------------------------- /WRNavigationBar.podspec: -------------------------------------------------------------------------------- 1 | 2 | Pod::Spec.new do |s| 3 | 4 | s.name = "WRNavigationBar" 5 | s.version = "1.4.0" 6 | s.summary = "navigationBar statusBar alpha color" 7 | s.homepage = "https://github.com/wangrui460/WRNavigationBar" 8 | s.license = { :type => "MIT", :file => "LICENSE" } 9 | s.author = { "wangrui460" => "wangruidev@gmail.com" } 10 | s.social_media_url = "http://weibo.com/wangrui460" 11 | s.platform = :ios, "7.0" 12 | s.source = { :git => "https://github.com/wangrui460/WRNavigationBar.git", :tag => s.version } 13 | s.source_files = "Demo/CodeDemo/WRNavigationBar/*.{h,m}" 14 | s.requires_arc = true 15 | 16 | end 17 | -------------------------------------------------------------------------------- /WRNavigationBar/WRCustomNavigationBar.h: -------------------------------------------------------------------------------- 1 | // 2 | // WRCustomNavigationBar.h 3 | // CodeDemo 4 | // 5 | // Created by wangrui on 2017/10/22. 6 | // Copyright © 2017年 wangrui. All rights reserved. 7 | // 8 | // Github地址:https://github.com/wangrui460/WRNavigationBar 9 | 10 | #import 11 | 12 | @interface WRCustomNavigationBar : UIView 13 | 14 | @property (nonatomic, copy) void(^onClickLeftButton)(void); 15 | @property (nonatomic, copy) void(^onClickRightButton)(void); 16 | 17 | @property (nonatomic, copy) NSString *title; 18 | @property (nonatomic, strong) UIColor *titleLabelColor; 19 | @property (nonatomic, strong) UIFont *titleLabelFont; 20 | @property (nonatomic, strong) UIColor *barBackgroundColor; 21 | @property (nonatomic, strong) UIImage *barBackgroundImage; 22 | 23 | + (instancetype)CustomNavigationBar; 24 | 25 | - (void)wr_setBottomLineHidden:(BOOL)hidden; 26 | - (void)wr_setBackgroundAlpha:(CGFloat)alpha; 27 | - (void)wr_setTintColor:(UIColor *)color; 28 | 29 | // 默认返回事件 30 | //- (void)wr_setLeftButtonWithNormal:(UIImage *)normal highlighted:(UIImage *)highlighted title:(NSString *)title titleColor:(UIColor *)titleColor; 31 | //- (void)wr_setLeftButtonWithImage:(UIImage *)image title:(NSString *)title titleColor:(UIColor *)titleColor; 32 | - (void)wr_setLeftButtonWithNormal:(UIImage *)normal highlighted:(UIImage *)highlighted; 33 | - (void)wr_setLeftButtonWithImage:(UIImage *)image; 34 | - (void)wr_setLeftButtonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor; 35 | 36 | //- (void)wr_setRightButtonWithNormal:(UIImage *)normal highlighted:(UIImage *)highlighted title:(NSString *)title titleColor:(UIColor *)titleColor; 37 | //- (void)wr_setRightButtonWithImage:(UIImage *)image title:(NSString *)title titleColor:(UIColor *)titleColor; 38 | - (void)wr_setRightButtonWithNormal:(UIImage *)normal highlighted:(UIImage *)highlighted; 39 | - (void)wr_setRightButtonWithImage:(UIImage *)image; 40 | - (void)wr_setRightButtonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor; 41 | 42 | 43 | 44 | @end 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /screenshots/QQ我的资料页.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/QQ我的资料页.gif -------------------------------------------------------------------------------- /screenshots/WRNavigationBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/WRNavigationBar.png -------------------------------------------------------------------------------- /screenshots/apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/apps.png -------------------------------------------------------------------------------- /screenshots/mysl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/mysl.gif -------------------------------------------------------------------------------- /screenshots/mysl滑动.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/mysl滑动.gif -------------------------------------------------------------------------------- /screenshots/qq空间.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/qq空间.gif -------------------------------------------------------------------------------- /screenshots/处理右滑中断后.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/处理右滑中断后.gif -------------------------------------------------------------------------------- /screenshots/处理右滑返回手势后.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/处理右滑返回手势后.gif -------------------------------------------------------------------------------- /screenshots/导航栏显示图片.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/导航栏显示图片.gif -------------------------------------------------------------------------------- /screenshots/导航栏显示渐变色.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/导航栏显示渐变色.gif -------------------------------------------------------------------------------- /screenshots/拉钩App首页.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/拉钩App首页.gif -------------------------------------------------------------------------------- /screenshots/效果图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/效果图.png -------------------------------------------------------------------------------- /screenshots/新浪微博个人中心.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/新浪微博个人中心.gif -------------------------------------------------------------------------------- /screenshots/未处理右滑中断.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/未处理右滑中断.gif -------------------------------------------------------------------------------- /screenshots/未处理右滑返回手势.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/未处理右滑返回手势.gif -------------------------------------------------------------------------------- /screenshots/知乎日报.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/知乎日报.gif -------------------------------------------------------------------------------- /screenshots/移动导航栏.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/移动导航栏.gif -------------------------------------------------------------------------------- /screenshots/自定义导航栏.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/自定义导航栏.gif -------------------------------------------------------------------------------- /screenshots/蚂蚁森林.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/蚂蚁森林.gif -------------------------------------------------------------------------------- /screenshots/连续多个界面导航栏透明.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangrui460/WRNavigationBar/17893f1c37c90abf5514b22e34ae2b7223c75caf/screenshots/连续多个界面导航栏透明.gif --------------------------------------------------------------------------------