├── .gitignore ├── MYPerformanceKit.xcodeproj ├── project.pbxproj └── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── MYPerformanceKit.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── MYPerformanceKit ├── AppDelegate.h ├── AppDelegate.m ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist ├── ViewController.h ├── ViewController.m └── main.m ├── MYPerformanceKitTests ├── Info.plist └── MYPerformanceKitTests.m ├── MYPerformanceKitUITests ├── Info.plist └── MYPerformanceKitUITests.m ├── Modules ├── CaptivePortalWIFI │ ├── CaptivePortalWIFIManager.h │ ├── CaptivePortalWIFIManager.m │ └── Demo │ │ ├── MYCaptivePortalWIFIViewController.h │ │ └── MYCaptivePortalWIFIViewController.m ├── HUD │ ├── MBProgressHUD+Extension.h │ └── MBProgressHUD+Extension.m ├── MYSoundServiceKit │ ├── Demo │ │ ├── MYSoundServiceViewController.h │ │ └── MYSoundServiceViewController.m │ ├── MYSoundService.h │ ├── MYSoundService.m │ ├── MYTeleponyManager.h │ ├── MYTeleponyManager.m │ ├── MYVolumeManager.h │ └── MYVolumeManager.m ├── Resources │ └── brithdayMusic.mp3 └── ScrollViewPopGesture │ ├── Demo │ ├── MYCollectionViewController.h │ ├── MYCollectionViewController.m │ ├── MYMapViewController.h │ ├── MYMapViewController.m │ ├── MYPageViewController.h │ ├── MYPageViewController.m │ ├── MYPopGestureViewController.h │ ├── MYPopGestureViewController.m │ ├── MYScrollViewController.h │ └── MYScrollViewController.m │ ├── UIViewController+PopGesture.h │ └── UIViewController+PopGesture.m ├── Podfile ├── Podfile.lock └── Pods ├── Headers ├── Private │ ├── MBProgressHUD │ │ └── MBProgressHUD.h │ └── MYKit │ │ ├── CollectionViewPlaceHolderDelegate.h │ │ ├── MYFoundationKit.h │ │ ├── MYKit.h │ │ ├── MYKitDefinition.h │ │ ├── MYSafeFoundationContainer.h │ │ ├── MYSafeKit.h │ │ ├── MYSafeKitRecord.h │ │ ├── MYUIKit.h │ │ ├── NSArray+Addition.h │ │ ├── NSArray+Collection.h │ │ ├── NSArray+Safe.h │ │ ├── NSArray+SafeAccess.h │ │ ├── NSBundle+AppIcon.h │ │ ├── NSData+YYAdd.h │ │ ├── NSDate+Addition.h │ │ ├── NSDate+NSDateRFC1123.h │ │ ├── NSDictionary+Addition.h │ │ ├── NSDictionary+Collection.h │ │ ├── NSDictionary+Safe.h │ │ ├── NSDictionary+SafeAccess.h │ │ ├── NSMutableArray+Queue.h │ │ ├── NSMutableArray+Safe.h │ │ ├── NSMutableArray+SafeAccess.h │ │ ├── NSMutableArray+Sort.h │ │ ├── NSMutableArray+Stack.h │ │ ├── NSMutableDictionary+Safe.h │ │ ├── NSMutableString+Safe.h │ │ ├── NSNotificationCenter+SafeKit.h │ │ ├── NSNull+Safe.h │ │ ├── NSNumber+Addition.h │ │ ├── NSNumber+Round.h │ │ ├── NSObject+Addition.h │ │ ├── NSObject+AssociatedObject.h │ │ ├── NSObject+Safe.h │ │ ├── NSObject+SafeKVO.h │ │ ├── NSObject+Swizzle.h │ │ ├── NSObject+UnknowSelector.h │ │ ├── NSString+Addition.h │ │ ├── NSString+Collection.h │ │ ├── NSString+Regular.h │ │ ├── NSString+Safe.h │ │ ├── NSString+Size.h │ │ ├── NSString+Trims.h │ │ ├── NSTimer+Safe.h │ │ ├── NSURL+Param.h │ │ ├── NSUserDefaults+SafeAccess.h │ │ ├── SafeKitShield.h │ │ ├── TableViewPlaceHolderDelegate.h │ │ ├── UIAlertController+Blocks.h │ │ ├── UIApplication+Authority.h │ │ ├── UIApplication+NetworkActivityIndicator.h │ │ ├── UIBarButtonItem+Addition.h │ │ ├── UIBarButtonItem+Badge.h │ │ ├── UIButton+Badge.h │ │ ├── UIButton+CountDown.h │ │ ├── UIButton+ImageTitleStyle.h │ │ ├── UIButton+Indicator.h │ │ ├── UIButton+Submitting.h │ │ ├── UIButton+TouchAreaInsets.h │ │ ├── UICollectionView+PlaceHolder.h │ │ ├── UIColor+Addition.h │ │ ├── UIDevice+Addition.h │ │ ├── UIImage+Addition.h │ │ ├── UIImage+Color.h │ │ ├── UIImage+CornerRadius.h │ │ ├── UIImage+ImageEffects.h │ │ ├── UIImageView+CornerRadius.h │ │ ├── UIImageView+RectCorner.h │ │ ├── UILabel+AutomaticWriting.h │ │ ├── UILabel+CountDown.h │ │ ├── UILabel+LineSpacing.h │ │ ├── UINavigationBar+Addition.h │ │ ├── UINavigationController+Addition.h │ │ ├── UINavigationController+BackButtonHandler.h │ │ ├── UINavigationItem+Loading.h │ │ ├── UINavigationItem+Margin.h │ │ ├── UIResponder+Chain.h │ │ ├── UIResponder+Router.h │ │ ├── UIScreen+Addition.h │ │ ├── UIScrollView+Addition.h │ │ ├── UITableView+PlaceHolder.h │ │ ├── UITextField+InputLimit.h │ │ ├── UITextField+Shake.h │ │ ├── UITextView+InputLengthCalculate.h │ │ ├── UITextView+Select.h │ │ ├── UIView+Addition.h │ │ ├── UIView+Badge.h │ │ ├── UIView+CornerRadii.h │ │ ├── UIView+CustomBorder.h │ │ ├── UIView+FindSubView.h │ │ ├── UIView+Gesture.h │ │ ├── UIView+Gradient.h │ │ ├── UIView+Line.h │ │ ├── UIView+Position.h │ │ ├── UIView+SuperController.h │ │ ├── UIViewController+ClassName.h │ │ ├── UIViewController+PageViewLevel.h │ │ ├── UIViewController+PreviousController.h │ │ ├── UIViewController+TopViewController.h │ │ └── UIWindow+Hierarchy.h └── Public │ ├── MBProgressHUD │ └── MBProgressHUD.h │ └── MYKit │ ├── CollectionViewPlaceHolderDelegate.h │ ├── MYFoundationKit.h │ ├── MYKit.h │ ├── MYKitDefinition.h │ ├── MYSafeFoundationContainer.h │ ├── MYSafeKit.h │ ├── MYSafeKitRecord.h │ ├── MYUIKit.h │ ├── NSArray+Addition.h │ ├── NSArray+Collection.h │ ├── NSArray+Safe.h │ ├── NSArray+SafeAccess.h │ ├── NSBundle+AppIcon.h │ ├── NSData+YYAdd.h │ ├── NSDate+Addition.h │ ├── NSDate+NSDateRFC1123.h │ ├── NSDictionary+Addition.h │ ├── NSDictionary+Collection.h │ ├── NSDictionary+Safe.h │ ├── NSDictionary+SafeAccess.h │ ├── NSMutableArray+Queue.h │ ├── NSMutableArray+Safe.h │ ├── NSMutableArray+SafeAccess.h │ ├── NSMutableArray+Sort.h │ ├── NSMutableArray+Stack.h │ ├── NSMutableDictionary+Safe.h │ ├── NSMutableString+Safe.h │ ├── NSNotificationCenter+SafeKit.h │ ├── NSNull+Safe.h │ ├── NSNumber+Addition.h │ ├── NSNumber+Round.h │ ├── NSObject+Addition.h │ ├── NSObject+AssociatedObject.h │ ├── NSObject+Safe.h │ ├── NSObject+SafeKVO.h │ ├── NSObject+Swizzle.h │ ├── NSObject+UnknowSelector.h │ ├── NSString+Addition.h │ ├── NSString+Collection.h │ ├── NSString+Regular.h │ ├── NSString+Safe.h │ ├── NSString+Size.h │ ├── NSString+Trims.h │ ├── NSTimer+Safe.h │ ├── NSURL+Param.h │ ├── NSUserDefaults+SafeAccess.h │ ├── SafeKitShield.h │ ├── TableViewPlaceHolderDelegate.h │ ├── UIAlertController+Blocks.h │ ├── UIApplication+Authority.h │ ├── UIApplication+NetworkActivityIndicator.h │ ├── UIBarButtonItem+Addition.h │ ├── UIBarButtonItem+Badge.h │ ├── UIButton+Badge.h │ ├── UIButton+CountDown.h │ ├── UIButton+ImageTitleStyle.h │ ├── UIButton+Indicator.h │ ├── UIButton+Submitting.h │ ├── UIButton+TouchAreaInsets.h │ ├── UICollectionView+PlaceHolder.h │ ├── UIColor+Addition.h │ ├── UIDevice+Addition.h │ ├── UIImage+Addition.h │ ├── UIImage+Color.h │ ├── UIImage+CornerRadius.h │ ├── UIImage+ImageEffects.h │ ├── UIImageView+CornerRadius.h │ ├── UIImageView+RectCorner.h │ ├── UILabel+AutomaticWriting.h │ ├── UILabel+CountDown.h │ ├── UILabel+LineSpacing.h │ ├── UINavigationBar+Addition.h │ ├── UINavigationController+Addition.h │ ├── UINavigationController+BackButtonHandler.h │ ├── UINavigationItem+Loading.h │ ├── UINavigationItem+Margin.h │ ├── UIResponder+Chain.h │ ├── UIResponder+Router.h │ ├── UIScreen+Addition.h │ ├── UIScrollView+Addition.h │ ├── UITableView+PlaceHolder.h │ ├── UITextField+InputLimit.h │ ├── UITextField+Shake.h │ ├── UITextView+InputLengthCalculate.h │ ├── UITextView+Select.h │ ├── UIView+Addition.h │ ├── UIView+Badge.h │ ├── UIView+CornerRadii.h │ ├── UIView+CustomBorder.h │ ├── UIView+FindSubView.h │ ├── UIView+Gesture.h │ ├── UIView+Gradient.h │ ├── UIView+Line.h │ ├── UIView+Position.h │ ├── UIView+SuperController.h │ ├── UIViewController+ClassName.h │ ├── UIViewController+PageViewLevel.h │ ├── UIViewController+PreviousController.h │ ├── UIViewController+TopViewController.h │ └── UIWindow+Hierarchy.h ├── MBProgressHUD ├── LICENSE ├── MBProgressHUD.h ├── MBProgressHUD.m └── README.mdown ├── MYKit ├── LICENSE ├── MYKit │ └── Classes │ │ ├── Core │ │ ├── MYKit.h │ │ └── MYKitDefinition.h │ │ ├── Foundation │ │ ├── MYFoundationKit.h │ │ ├── NSArray │ │ │ ├── NSArray+Addition.h │ │ │ ├── NSArray+Addition.m │ │ │ ├── NSArray+Collection.h │ │ │ ├── NSArray+Collection.m │ │ │ ├── NSArray+SafeAccess.h │ │ │ └── NSArray+SafeAccess.m │ │ ├── NSBundle │ │ │ ├── NSBundle+AppIcon.h │ │ │ └── NSBundle+AppIcon.m │ │ ├── NSData │ │ │ ├── NSData+YYAdd.h │ │ │ └── NSData+YYAdd.m │ │ ├── NSDate │ │ │ ├── NSDate+Addition.h │ │ │ ├── NSDate+Addition.m │ │ │ ├── NSDate+NSDateRFC1123.h │ │ │ └── NSDate+NSDateRFC1123.m │ │ ├── NSDictionary │ │ │ ├── NSDictionary+Addition.h │ │ │ ├── NSDictionary+Addition.m │ │ │ ├── NSDictionary+Collection.h │ │ │ ├── NSDictionary+Collection.m │ │ │ ├── NSDictionary+SafeAccess.h │ │ │ └── NSDictionary+SafeAccess.m │ │ ├── NSMutableArray │ │ │ ├── NSMutableArray+Queue.h │ │ │ ├── NSMutableArray+Queue.m │ │ │ ├── NSMutableArray+SafeAccess.h │ │ │ ├── NSMutableArray+SafeAccess.m │ │ │ ├── NSMutableArray+Sort.h │ │ │ ├── NSMutableArray+Sort.m │ │ │ ├── NSMutableArray+Stack.h │ │ │ └── NSMutableArray+Stack.m │ │ ├── NSNumber │ │ │ ├── NSNumber+Addition.h │ │ │ ├── NSNumber+Addition.m │ │ │ ├── NSNumber+Round.h │ │ │ └── NSNumber+Round.m │ │ ├── NSObject │ │ │ ├── NSObject+Addition.h │ │ │ ├── NSObject+Addition.m │ │ │ ├── NSObject+AssociatedObject.h │ │ │ ├── NSObject+AssociatedObject.m │ │ │ ├── NSObject+Swizzle.h │ │ │ └── NSObject+Swizzle.m │ │ ├── NSString │ │ │ ├── NSString+Addition.h │ │ │ ├── NSString+Addition.m │ │ │ ├── NSString+Collection.h │ │ │ ├── NSString+Collection.m │ │ │ ├── NSString+Regular.h │ │ │ ├── NSString+Regular.m │ │ │ ├── NSString+Size.h │ │ │ ├── NSString+Size.m │ │ │ ├── NSString+Trims.h │ │ │ └── NSString+Trims.m │ │ ├── NSURL │ │ │ ├── NSURL+Param.h │ │ │ └── NSURL+Param.m │ │ └── NSUserDefaults │ │ │ ├── NSUserDefaults+SafeAccess.h │ │ │ └── NSUserDefaults+SafeAccess.m │ │ ├── SafeKit │ │ ├── FoundationContainer │ │ │ ├── MYSafeFoundationContainer.h │ │ │ ├── MYSafeFoundationContainer.m │ │ │ ├── NSArray+Safe.h │ │ │ ├── NSArray+Safe.m │ │ │ ├── NSDictionary+Safe.h │ │ │ ├── NSDictionary+Safe.m │ │ │ ├── NSMutableArray+Safe.h │ │ │ ├── NSMutableArray+Safe.m │ │ │ ├── NSMutableDictionary+Safe.h │ │ │ ├── NSMutableDictionary+Safe.m │ │ │ ├── NSMutableString+Safe.h │ │ │ ├── NSMutableString+Safe.m │ │ │ ├── NSObject+Safe.h │ │ │ ├── NSObject+Safe.m │ │ │ ├── NSString+Safe.h │ │ │ └── NSString+Safe.m │ │ ├── KVO │ │ │ ├── NSObject+SafeKVO.h │ │ │ └── NSObject+SafeKVO.m │ │ ├── MYSafeKit.h │ │ ├── MYSafeKit.m │ │ ├── NSNull │ │ │ ├── NSNull+Safe.h │ │ │ └── NSNull+Safe.m │ │ ├── NSTimer │ │ │ ├── NSTimer+Safe.h │ │ │ └── NSTimer+Safe.m │ │ ├── Notification │ │ │ ├── NSNotificationCenter+SafeKit.h │ │ │ └── NSNotificationCenter+SafeKit.m │ │ ├── Record │ │ │ ├── MYSafeKitRecord.h │ │ │ └── MYSafeKitRecord.m │ │ ├── SafeKitShield.h │ │ └── UnknowSelector │ │ │ ├── NSObject+UnknowSelector.h │ │ │ └── NSObject+UnknowSelector.m │ │ └── UIKit │ │ ├── MYUIKit.h │ │ ├── UIAlertController │ │ ├── UIAlertController+Blocks.h │ │ └── UIAlertController+Blocks.m │ │ ├── UIApplication │ │ ├── UIApplication+Authority.h │ │ ├── UIApplication+Authority.m │ │ ├── UIApplication+NetworkActivityIndicator.h │ │ └── UIApplication+NetworkActivityIndicator.m │ │ ├── UIBarButtonItem │ │ ├── UIBarButtonItem+Addition.h │ │ ├── UIBarButtonItem+Addition.m │ │ ├── UIBarButtonItem+Badge.h │ │ └── UIBarButtonItem+Badge.m │ │ ├── UIButton │ │ ├── UIButton+Badge.h │ │ ├── UIButton+Badge.m │ │ ├── UIButton+CountDown.h │ │ ├── UIButton+CountDown.m │ │ ├── UIButton+ImageTitleStyle.h │ │ ├── UIButton+ImageTitleStyle.m │ │ ├── UIButton+Indicator.h │ │ ├── UIButton+Indicator.m │ │ ├── UIButton+Submitting.h │ │ ├── UIButton+Submitting.m │ │ ├── UIButton+TouchAreaInsets.h │ │ └── UIButton+TouchAreaInsets.m │ │ ├── UICollectionView │ │ ├── CollectionViewPlaceHolderDelegate.h │ │ ├── UICollectionView+PlaceHolder.h │ │ └── UICollectionView+PlaceHolder.m │ │ ├── UIColor │ │ ├── UIColor+Addition.h │ │ └── UIColor+Addition.m │ │ ├── UIDevice │ │ ├── UIDevice+Addition.h │ │ └── UIDevice+Addition.m │ │ ├── UIImage │ │ ├── UIImage+Addition.h │ │ ├── UIImage+Addition.m │ │ ├── UIImage+Color.h │ │ ├── UIImage+Color.m │ │ ├── UIImage+CornerRadius.h │ │ ├── UIImage+CornerRadius.m │ │ ├── UIImage+ImageEffects.h │ │ └── UIImage+ImageEffects.m │ │ ├── UIImageView │ │ ├── UIImageView+CornerRadius.h │ │ ├── UIImageView+CornerRadius.m │ │ ├── UIImageView+RectCorner.h │ │ └── UIImageView+RectCorner.m │ │ ├── UILabel │ │ ├── UILabel+AutomaticWriting.h │ │ ├── UILabel+AutomaticWriting.m │ │ ├── UILabel+CountDown.h │ │ ├── UILabel+CountDown.m │ │ ├── UILabel+LineSpacing.h │ │ └── UILabel+LineSpacing.m │ │ ├── UINavigationBar │ │ ├── UINavigationBar+Addition.h │ │ └── UINavigationBar+Addition.m │ │ ├── UINavigationController │ │ ├── UINavigationController+Addition.h │ │ ├── UINavigationController+Addition.m │ │ ├── UINavigationController+BackButtonHandler.h │ │ └── UINavigationController+BackButtonHandler.m │ │ ├── UINavigationItem │ │ ├── UINavigationItem+Loading.h │ │ ├── UINavigationItem+Loading.m │ │ ├── UINavigationItem+Margin.h │ │ └── UINavigationItem+Margin.m │ │ ├── UIResponder │ │ ├── UIResponder+Chain.h │ │ ├── UIResponder+Chain.m │ │ ├── UIResponder+Router.h │ │ └── UIResponder+Router.m │ │ ├── UIScreen │ │ ├── UIScreen+Addition.h │ │ └── UIScreen+Addition.m │ │ ├── UIScrollView │ │ ├── UIScrollView+Addition.h │ │ └── UIScrollView+Addition.m │ │ ├── UITableView │ │ ├── TableViewPlaceHolderDelegate.h │ │ ├── UITableView+PlaceHolder.h │ │ └── UITableView+PlaceHolder.m │ │ ├── UITextField │ │ ├── UITextField+InputLimit.h │ │ ├── UITextField+InputLimit.m │ │ ├── UITextField+Shake.h │ │ └── UITextField+Shake.m │ │ ├── UITextView │ │ ├── UITextView+InputLengthCalculate.h │ │ ├── UITextView+InputLengthCalculate.m │ │ ├── UITextView+Select.h │ │ └── UITextView+Select.m │ │ ├── UIView │ │ ├── UIView+Addition.h │ │ ├── UIView+Addition.m │ │ ├── UIView+Badge.h │ │ ├── UIView+Badge.m │ │ ├── UIView+CornerRadii.h │ │ ├── UIView+CornerRadii.m │ │ ├── UIView+CustomBorder.h │ │ ├── UIView+CustomBorder.m │ │ ├── UIView+FindSubView.h │ │ ├── UIView+FindSubView.m │ │ ├── UIView+Gesture.h │ │ ├── UIView+Gesture.m │ │ ├── UIView+Gradient.h │ │ ├── UIView+Gradient.m │ │ ├── UIView+Line.h │ │ ├── UIView+Line.m │ │ ├── UIView+Position.h │ │ ├── UIView+Position.m │ │ ├── UIView+SuperController.h │ │ └── UIView+SuperController.m │ │ ├── UIViewController │ │ ├── UIViewController+ClassName.h │ │ ├── UIViewController+ClassName.m │ │ ├── UIViewController+PageViewLevel.h │ │ ├── UIViewController+PageViewLevel.m │ │ ├── UIViewController+PreviousController.h │ │ ├── UIViewController+PreviousController.m │ │ ├── UIViewController+TopViewController.h │ │ └── UIViewController+TopViewController.m │ │ └── UIWindow │ │ ├── UIWindow+Hierarchy.h │ │ └── UIWindow+Hierarchy.m └── README.md ├── Manifest.lock ├── Pods.xcodeproj └── project.pbxproj └── Target Support Files ├── MBProgressHUD ├── MBProgressHUD-dummy.m ├── MBProgressHUD-prefix.pch └── MBProgressHUD.xcconfig ├── MYKit ├── MYKit-dummy.m ├── MYKit-prefix.pch └── MYKit.xcconfig └── Pods-MYPerformanceKit ├── Pods-MYPerformanceKit-acknowledgements.markdown ├── Pods-MYPerformanceKit-acknowledgements.plist ├── Pods-MYPerformanceKit-dummy.m ├── Pods-MYPerformanceKit.debug.xcconfig └── Pods-MYPerformanceKit.release.xcconfig /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | .DS_Store 3 | */build/* 4 | !*.pbxuser 5 | !*.pbxproj 6 | !default.pbxuser 7 | *.mode1v3 8 | !default.mode1v3 9 | *.mode2v3 10 | !default.mode2v3 11 | *.perspectivev3 12 | !default.perspectivev3 13 | xcuserdata/ 14 | *.moved-aside 15 | DerivedData 16 | .idea/ 17 | *.hmap 18 | *.xccheckout 19 | !*.xcworkspace 20 | !default.xcworkspace 21 | 22 | #CocoaPods 23 | !Pods 24 | !Podfile 25 | !Podfile.lock 26 | -------------------------------------------------------------------------------- /MYPerformanceKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MYPerformanceKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MYPerformanceKit.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /MYPerformanceKit.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MYPerformanceKit/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/21. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /MYPerformanceKit/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /MYPerformanceKit/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /MYPerformanceKit/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 | -------------------------------------------------------------------------------- /MYPerformanceKit/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /MYPerformanceKit/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/21. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /MYPerformanceKit/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/21. 6 | // Copyright © 2019 sunjinshuai. 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 | -------------------------------------------------------------------------------- /MYPerformanceKitTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /MYPerformanceKitTests/MYPerformanceKitTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // MYPerformanceKitTests.m 3 | // MYPerformanceKitTests 4 | // 5 | // Created by sunjinshuai on 2019/4/21. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MYPerformanceKitTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation MYPerformanceKitTests 16 | 17 | - (void)setUp { 18 | // Put setup code here. This method is called before the invocation of each test method in the class. 19 | } 20 | 21 | - (void)tearDown { 22 | // Put teardown code here. This method is called after the invocation of each test method in the class. 23 | } 24 | 25 | - (void)testExample { 26 | // This is an example of a functional test case. 27 | // Use XCTAssert and related functions to verify your tests produce the correct results. 28 | } 29 | 30 | - (void)testPerformanceExample { 31 | // This is an example of a performance test case. 32 | [self measureBlock:^{ 33 | // Put the code you want to measure the time of here. 34 | }]; 35 | } 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /MYPerformanceKitUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /MYPerformanceKitUITests/MYPerformanceKitUITests.m: -------------------------------------------------------------------------------- 1 | // 2 | // MYPerformanceKitUITests.m 3 | // MYPerformanceKitUITests 4 | // 5 | // Created by sunjinshuai on 2019/4/21. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MYPerformanceKitUITests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation MYPerformanceKitUITests 16 | 17 | - (void)setUp { 18 | // Put setup code here. This method is called before the invocation of each test method in the class. 19 | 20 | // In UI tests it is usually best to stop immediately when a failure occurs. 21 | self.continueAfterFailure = NO; 22 | 23 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 24 | [[[XCUIApplication alloc] init] launch]; 25 | 26 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 27 | } 28 | 29 | - (void)tearDown { 30 | // Put teardown code here. This method is called after the invocation of each test method in the class. 31 | } 32 | 33 | - (void)testExample { 34 | // Use recording to get started writing UI tests. 35 | // Use XCTAssert and related functions to verify your tests produce the correct results. 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Modules/CaptivePortalWIFI/CaptivePortalWIFIManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // CaptivePortalWIFIManager.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/24. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface CaptivePortalWIFIManager : NSObject 14 | 15 | + (instancetype)sharedInstance; 16 | 17 | /// 开启测试模式,开启后,每次验证都会提示需要认证WIFI 18 | @property (assign, nonatomic) BOOL openTestMode; 19 | 20 | /** 21 | * 检查当前wifi是否需要验证密码 22 | * needAlert: 为YES时,若当前wifi需要验证密码,则会弹出警告框提示用户 23 | */ 24 | - (void)checkIsWifiNeedAuthPasswordWithComplection:(void (^)(BOOL needAuthPassword))complection 25 | needAlert:(BOOL)needAlert; 26 | 27 | @end 28 | 29 | NS_ASSUME_NONNULL_END 30 | -------------------------------------------------------------------------------- /Modules/CaptivePortalWIFI/Demo/MYCaptivePortalWIFIViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYCaptivePortalWIFIViewController.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/24. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MYCaptivePortalWIFIViewController : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Modules/HUD/MBProgressHUD+Extension.h: -------------------------------------------------------------------------------- 1 | // 2 | // MBProgressHUD+Extension.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/21. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import "MBProgressHUD.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MBProgressHUD (Extension) 14 | 15 | + (void)showTipMessageInWindow:(NSString *)message; 16 | + (void)showTipMessageInView:(NSString *)message; 17 | + (void)showTipMessageInWindow:(NSString *)message timer:(int)aTimer; 18 | + (void)showTipMessageInView:(NSString *)message timer:(int)aTimer; 19 | 20 | + (void)showActivityMessageInView; 21 | + (void)showActivityMessageInWindow; 22 | + (void)showActivityMessageInWindow:(NSString *)message; 23 | + (void)showActivityMessageInView:(NSString *)message; 24 | + (void)showActivityMessageInWindow:(NSString *)message timer:(int)aTimer; 25 | + (void)showActivityMessageInView:(NSString *)message timer:(int)aTimer; 26 | 27 | + (void)showSuccessMessage:(NSString *)Message; 28 | + (void)showErrorMessage:(NSString *)Message; 29 | + (void)showInfoMessage:(NSString *)Message; 30 | + (void)showWarnMessage:(NSString *)Message; 31 | 32 | + (void)showCustomIconInWindow:(NSString *)iconName message:(NSString *)message; 33 | + (void)showCustomIconInView:(NSString *)iconName message:(NSString *)message; 34 | 35 | + (void)hideHUD; 36 | 37 | @end 38 | 39 | NS_ASSUME_NONNULL_END 40 | -------------------------------------------------------------------------------- /Modules/MYSoundServiceKit/Demo/MYSoundServiceViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYSoundServiceViewController.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/21. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MYSoundServiceViewController : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Modules/MYSoundServiceKit/MYSoundService.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYSoundService.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2018/3/20. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface MYSoundService : NSObject 13 | 14 | + (instancetype)sharedInstance; 15 | 16 | @property (nonatomic, strong) AVAudioPlayer *audioPlayer; 17 | @property (nonatomic, assign) BOOL canShake; 18 | 19 | /** 20 | * @brief play sound with file name. e.m sound.aiff 21 | */ 22 | 23 | - (void)playSoundWithName:(NSString *)soundName ofType:(NSString*)type; 24 | 25 | /** 26 | * @brief control the volume of AudioPlayer 27 | */ 28 | 29 | - (void)setAudioPlayerVolume; 30 | 31 | /** 32 | * @brief control the shake when play the sound 33 | */ 34 | - (void)openShake:(BOOL)canshake; 35 | 36 | /** 37 | * @brief control the cache sound 38 | */ 39 | - (void)needCache:(BOOL)isNeed; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Modules/MYSoundServiceKit/MYTeleponyManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYTeleponyManager.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2018/3/20. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MYTeleponyManager : NSObject 12 | 13 | + (instancetype)sharedInstance; 14 | 15 | - (BOOL)isConnected; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Modules/MYSoundServiceKit/MYTeleponyManager.m: -------------------------------------------------------------------------------- 1 | // 2 | // MYTeleponyManager.m 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2018/3/20. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "MYTeleponyManager.h" 10 | #import 11 | #import 12 | #import 13 | 14 | #define CurrentSystemVersion ([[[UIDevice currentDevice] systemVersion] floatValue]) 15 | 16 | @interface MYTeleponyManager () 17 | 18 | @property (nonatomic, strong) CXCallObserver *cXCallObserver; 19 | @property (nonatomic, assign) BOOL currentCallState; 20 | @property (nonatomic, strong) dispatch_queue_t phoneCallQueue; 21 | 22 | @end 23 | 24 | @implementation MYTeleponyManager 25 | 26 | + (instancetype)sharedInstance { 27 | static MYTeleponyManager *instance; 28 | static dispatch_once_t onceToken; 29 | dispatch_once(&onceToken, ^{ 30 | instance = [[MYTeleponyManager alloc] init]; 31 | }); 32 | return instance; 33 | } 34 | 35 | - (instancetype)init { 36 | self = [super init]; 37 | if (self) { 38 | if (CurrentSystemVersion >= 10.0) { 39 | _cXCallObserver = [[CXCallObserver alloc] init]; 40 | _phoneCallQueue = dispatch_queue_create("MYPhoneCallObserverQueue", DISPATCH_QUEUE_SERIAL); 41 | [_cXCallObserver setDelegate:self queue:_phoneCallQueue]; 42 | } 43 | } 44 | return self; 45 | } 46 | 47 | - (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call { 48 | if ([call hasConnected]) { 49 | self.currentCallState = YES; 50 | } 51 | if ([call isOnHold]) { 52 | self.currentCallState = YES; 53 | } 54 | if ([call isOutgoing]) { 55 | self.currentCallState = YES; 56 | } 57 | if ([call hasEnded]) { 58 | self.currentCallState = NO; 59 | } 60 | } 61 | 62 | - (BOOL)isConnected { 63 | if (CurrentSystemVersion >= 10.0) { 64 | return self.currentCallState; 65 | } else { 66 | return NO; 67 | } 68 | } 69 | 70 | @end 71 | -------------------------------------------------------------------------------- /Modules/MYSoundServiceKit/MYVolumeManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYVolumeManager.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2018/3/20. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MYVolumeManager : NSObject 12 | 13 | @property (nonatomic, assign) CGFloat volumeValue; 14 | 15 | + (instancetype)shareInstance; 16 | 17 | // 耳机状态监听 18 | - (void)setAudioChangeNotification; 19 | // 检测耳机状态 是否插入 20 | - (BOOL)isHeadsetPluggedIn; 21 | // 当前音量 22 | - (float)getCurrentVolume; 23 | // 移除 MPVolumeView 24 | - (void)removeMPVolumeView; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Modules/Resources/brithdayMusic.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjinshuai/MYPerformanceKit/39ec2cf96b896596f9a2a6ae33c9c1cc3eb9ac35/Modules/Resources/brithdayMusic.mp3 -------------------------------------------------------------------------------- /Modules/ScrollViewPopGesture/Demo/MYCollectionViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYCollectionViewController.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/24. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MYCollectionViewController : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Modules/ScrollViewPopGesture/Demo/MYCollectionViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // MYCollectionViewController.m 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/24. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import "MYCollectionViewController.h" 10 | #import "UIViewController+PopGesture.h" 11 | 12 | @interface MYCollectionViewController () 13 | 14 | @end 15 | 16 | @implementation MYCollectionViewController 17 | 18 | - (void)viewDidLoad { 19 | [super viewDidLoad]; 20 | [self configCollectionView]; 21 | } 22 | 23 | - (void)configCollectionView { 24 | UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; 25 | UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 64) collectionViewLayout:layout]; 26 | collectionView.contentSize = CGSizeMake(1000, 0); 27 | collectionView.backgroundColor = [UIColor magentaColor]; 28 | [self.view addSubview:collectionView]; 29 | 30 | // collectionView需要支持侧滑返回 31 | [self addPopGestureToView:collectionView]; 32 | } 33 | 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Modules/ScrollViewPopGesture/Demo/MYMapViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYMapViewController.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/24. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MYMapViewController : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Modules/ScrollViewPopGesture/Demo/MYMapViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // MYMapViewController.m 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/24. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import "MYMapViewController.h" 10 | #import "UIViewController+PopGesture.h" 11 | #import 12 | 13 | @interface MYMapViewController () 14 | 15 | @end 16 | 17 | @implementation MYMapViewController 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | [self configMapView]; 22 | } 23 | 24 | - (void)configMapView { 25 | MKMapView *mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 64)]; 26 | [self.view addSubview:mapView]; 27 | 28 | // mapView需要支持侧滑返回 29 | [self addPopGestureToView:mapView]; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Modules/ScrollViewPopGesture/Demo/MYPageViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYPageViewController.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/24. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MYPageViewController : UIViewController 14 | 15 | @end 16 | 17 | @interface MYSubScrollViewController : UIViewController 18 | 19 | @property (nonatomic, strong) UIScrollView *scrollView; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /Modules/ScrollViewPopGesture/Demo/MYPopGestureViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYPopGestureViewController.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/24. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MYPopGestureViewController : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Modules/ScrollViewPopGesture/Demo/MYScrollViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYScrollViewController.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/24. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MYScrollViewController : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Modules/ScrollViewPopGesture/Demo/MYScrollViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // MYScrollViewController.m 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/24. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import "MYScrollViewController.h" 10 | #import "UIViewController+PopGesture.h" 11 | 12 | @interface MYScrollViewController () 13 | 14 | @end 15 | 16 | @implementation MYScrollViewController 17 | 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | [self configScrollView]; 22 | } 23 | 24 | - (void)configScrollView { 25 | UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 64)]; 26 | scrollView.contentSize = CGSizeMake(1000, 0); 27 | scrollView.backgroundColor = [UIColor cyanColor]; 28 | [self.view addSubview:scrollView]; 29 | 30 | // scrollView需要支持侧滑返回 31 | [self addPopGestureToView:scrollView]; 32 | 33 | // 禁止该页面侧滑返回 34 | // self.tz_interactivePopDisabled = YES; 35 | } 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Modules/ScrollViewPopGesture/UIViewController+PopGesture.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+PopGesture.h 3 | // MYPerformanceKit 4 | // 5 | // Created by sunjinshuai on 2019/4/24. 6 | // Copyright © 2019 sunjinshuai. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UINavigationController (PopGesture) 14 | 15 | @end 16 | 17 | @interface UIViewController (PopGesture) 18 | 19 | /// 给view添加侧滑返回效果 20 | - (void)addPopGestureToView:(UIView *)view; 21 | 22 | /// 禁止该页面的侧滑返回 23 | @property (nonatomic, assign) BOOL interactivePopDisabled; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | 2 | platform :ios, "8.0" 3 | 4 | target 'MYPerformanceKit' do 5 | pod 'MBProgressHUD' 6 | pod 'MYKit' 7 | end 8 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - MBProgressHUD (1.1.0) 3 | - MYKit (1.1.3): 4 | - MYKit/Core (= 1.1.3) 5 | - MYKit/Core (1.1.3): 6 | - MYKit/Foundation 7 | - MYKit/SafeKit 8 | - MYKit/UIKit 9 | - MYKit/Foundation (1.1.3) 10 | - MYKit/SafeKit (1.1.3): 11 | - MYKit/Foundation 12 | - MYKit/UIKit (1.1.3): 13 | - MYKit/Foundation 14 | 15 | DEPENDENCIES: 16 | - MBProgressHUD 17 | - MYKit 18 | 19 | SPEC REPOS: 20 | https://github.com/cocoapods/specs.git: 21 | - MBProgressHUD 22 | - MYKit 23 | 24 | SPEC CHECKSUMS: 25 | MBProgressHUD: e7baa36a220447d8aeb12769bf0585582f3866d9 26 | MYKit: 36c106e574158ffbbf58cf1057f9ea71b713a653 27 | 28 | PODFILE CHECKSUM: 4fb032f5fa9f0ba11c944aef1a380d90439e03bf 29 | 30 | COCOAPODS: 1.6.1 31 | -------------------------------------------------------------------------------- /Pods/Headers/Private/MBProgressHUD/MBProgressHUD.h: -------------------------------------------------------------------------------- 1 | ../../../MBProgressHUD/MBProgressHUD.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/CollectionViewPlaceHolderDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UICollectionView/CollectionViewPlaceHolderDelegate.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/MYFoundationKit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/MYFoundationKit.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/MYKit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Core/MYKit.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/MYKitDefinition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Core/MYKitDefinition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/MYSafeFoundationContainer.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/MYSafeFoundationContainer.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/MYSafeKit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/MYSafeKit.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/MYSafeKitRecord.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/Record/MYSafeKitRecord.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/MYUIKit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/MYUIKit.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSArray+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSArray/NSArray+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSArray+Collection.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSArray/NSArray+Collection.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSArray+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSArray+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSArray+SafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSArray/NSArray+SafeAccess.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSBundle+AppIcon.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSBundle/NSBundle+AppIcon.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSData+YYAdd.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSData/NSData+YYAdd.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSDate+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSDate/NSDate+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSDate+NSDateRFC1123.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSDate/NSDate+NSDateRFC1123.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSDictionary+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSDictionary/NSDictionary+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSDictionary+Collection.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSDictionary/NSDictionary+Collection.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSDictionary+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSDictionary+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSDictionary+SafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSDictionary/NSDictionary+SafeAccess.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSMutableArray+Queue.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+Queue.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSMutableArray+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSMutableArray+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSMutableArray+SafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+SafeAccess.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSMutableArray+Sort.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+Sort.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSMutableArray+Stack.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+Stack.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSMutableDictionary+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSMutableDictionary+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSMutableString+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSMutableString+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSNotificationCenter+SafeKit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/Notification/NSNotificationCenter+SafeKit.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSNull+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/NSNull/NSNull+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSNumber+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSNumber/NSNumber+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSNumber+Round.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSNumber/NSNumber+Round.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSObject+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSObject/NSObject+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSObject+AssociatedObject.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSObject/NSObject+AssociatedObject.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSObject+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSObject+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSObject+SafeKVO.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/KVO/NSObject+SafeKVO.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSObject+Swizzle.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSObject/NSObject+Swizzle.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSObject+UnknowSelector.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/UnknowSelector/NSObject+UnknowSelector.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSString+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSString/NSString+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSString+Collection.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSString/NSString+Collection.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSString+Regular.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSString/NSString+Regular.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSString+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSString+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSString+Size.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSString/NSString+Size.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSString+Trims.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSString/NSString+Trims.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSTimer+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/NSTimer/NSTimer+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSURL+Param.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSURL/NSURL+Param.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/NSUserDefaults+SafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSUserDefaults/NSUserDefaults+SafeAccess.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/SafeKitShield.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/SafeKitShield.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/TableViewPlaceHolderDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITableView/TableViewPlaceHolderDelegate.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIAlertController+Blocks.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIAlertController/UIAlertController+Blocks.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIApplication+Authority.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIApplication/UIApplication+Authority.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIApplication+NetworkActivityIndicator.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIApplication/UIApplication+NetworkActivityIndicator.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIBarButtonItem+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIBarButtonItem/UIBarButtonItem+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIBarButtonItem+Badge.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIBarButtonItem/UIBarButtonItem+Badge.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIButton+Badge.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+Badge.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIButton+CountDown.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+CountDown.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIButton+ImageTitleStyle.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+ImageTitleStyle.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIButton+Indicator.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+Indicator.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIButton+Submitting.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+Submitting.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIButton+TouchAreaInsets.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+TouchAreaInsets.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UICollectionView+PlaceHolder.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UICollectionView/UICollectionView+PlaceHolder.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIColor+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIColor/UIColor+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIDevice+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIDevice/UIDevice+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIImage+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImage/UIImage+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIImage+Color.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImage/UIImage+Color.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIImage+CornerRadius.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImage/UIImage+CornerRadius.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIImage+ImageEffects.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImage/UIImage+ImageEffects.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIImageView+CornerRadius.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImageView/UIImageView+CornerRadius.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIImageView+RectCorner.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImageView/UIImageView+RectCorner.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UILabel+AutomaticWriting.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UILabel/UILabel+AutomaticWriting.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UILabel+CountDown.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UILabel/UILabel+CountDown.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UILabel+LineSpacing.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UILabel/UILabel+LineSpacing.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UINavigationBar+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UINavigationBar/UINavigationBar+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UINavigationController+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UINavigationController/UINavigationController+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UINavigationController+BackButtonHandler.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UINavigationController/UINavigationController+BackButtonHandler.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UINavigationItem+Loading.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UINavigationItem/UINavigationItem+Loading.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UINavigationItem+Margin.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UINavigationItem/UINavigationItem+Margin.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIResponder+Chain.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIResponder/UIResponder+Chain.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIResponder+Router.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIResponder/UIResponder+Router.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIScreen+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIScreen/UIScreen+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIScrollView+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIScrollView/UIScrollView+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UITableView+PlaceHolder.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITableView/UITableView+PlaceHolder.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UITextField+InputLimit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITextField/UITextField+InputLimit.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UITextField+Shake.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITextField/UITextField+Shake.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UITextView+InputLengthCalculate.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITextView/UITextView+InputLengthCalculate.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UITextView+Select.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITextView/UITextView+Select.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIView+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIView+Badge.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Badge.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIView+CornerRadii.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+CornerRadii.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIView+CustomBorder.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+CustomBorder.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIView+FindSubView.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+FindSubView.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIView+Gesture.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Gesture.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIView+Gradient.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Gradient.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIView+Line.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Line.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIView+Position.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Position.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIView+SuperController.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+SuperController.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIViewController+ClassName.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+ClassName.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIViewController+PageViewLevel.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+PageViewLevel.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIViewController+PreviousController.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+PreviousController.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIViewController+TopViewController.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+TopViewController.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MYKit/UIWindow+Hierarchy.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIWindow/UIWindow+Hierarchy.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MBProgressHUD/MBProgressHUD.h: -------------------------------------------------------------------------------- 1 | ../../../MBProgressHUD/MBProgressHUD.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/CollectionViewPlaceHolderDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UICollectionView/CollectionViewPlaceHolderDelegate.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/MYFoundationKit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/MYFoundationKit.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/MYKit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Core/MYKit.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/MYKitDefinition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Core/MYKitDefinition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/MYSafeFoundationContainer.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/MYSafeFoundationContainer.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/MYSafeKit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/MYSafeKit.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/MYSafeKitRecord.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/Record/MYSafeKitRecord.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/MYUIKit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/MYUIKit.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSArray+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSArray/NSArray+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSArray+Collection.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSArray/NSArray+Collection.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSArray+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSArray+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSArray+SafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSArray/NSArray+SafeAccess.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSBundle+AppIcon.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSBundle/NSBundle+AppIcon.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSData+YYAdd.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSData/NSData+YYAdd.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSDate+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSDate/NSDate+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSDate+NSDateRFC1123.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSDate/NSDate+NSDateRFC1123.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSDictionary+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSDictionary/NSDictionary+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSDictionary+Collection.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSDictionary/NSDictionary+Collection.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSDictionary+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSDictionary+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSDictionary+SafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSDictionary/NSDictionary+SafeAccess.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSMutableArray+Queue.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+Queue.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSMutableArray+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSMutableArray+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSMutableArray+SafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+SafeAccess.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSMutableArray+Sort.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+Sort.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSMutableArray+Stack.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+Stack.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSMutableDictionary+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSMutableDictionary+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSMutableString+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSMutableString+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSNotificationCenter+SafeKit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/Notification/NSNotificationCenter+SafeKit.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSNull+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/NSNull/NSNull+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSNumber+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSNumber/NSNumber+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSNumber+Round.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSNumber/NSNumber+Round.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSObject+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSObject/NSObject+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSObject+AssociatedObject.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSObject/NSObject+AssociatedObject.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSObject+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSObject+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSObject+SafeKVO.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/KVO/NSObject+SafeKVO.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSObject+Swizzle.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSObject/NSObject+Swizzle.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSObject+UnknowSelector.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/UnknowSelector/NSObject+UnknowSelector.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSString+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSString/NSString+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSString+Collection.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSString/NSString+Collection.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSString+Regular.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSString/NSString+Regular.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSString+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSString+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSString+Size.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSString/NSString+Size.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSString+Trims.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSString/NSString+Trims.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSTimer+Safe.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/NSTimer/NSTimer+Safe.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSURL+Param.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSURL/NSURL+Param.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/NSUserDefaults+SafeAccess.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/Foundation/NSUserDefaults/NSUserDefaults+SafeAccess.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/SafeKitShield.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/SafeKit/SafeKitShield.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/TableViewPlaceHolderDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITableView/TableViewPlaceHolderDelegate.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIAlertController+Blocks.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIAlertController/UIAlertController+Blocks.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIApplication+Authority.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIApplication/UIApplication+Authority.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIApplication+NetworkActivityIndicator.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIApplication/UIApplication+NetworkActivityIndicator.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIBarButtonItem+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIBarButtonItem/UIBarButtonItem+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIBarButtonItem+Badge.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIBarButtonItem/UIBarButtonItem+Badge.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIButton+Badge.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+Badge.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIButton+CountDown.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+CountDown.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIButton+ImageTitleStyle.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+ImageTitleStyle.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIButton+Indicator.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+Indicator.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIButton+Submitting.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+Submitting.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIButton+TouchAreaInsets.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIButton/UIButton+TouchAreaInsets.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UICollectionView+PlaceHolder.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UICollectionView/UICollectionView+PlaceHolder.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIColor+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIColor/UIColor+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIDevice+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIDevice/UIDevice+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIImage+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImage/UIImage+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIImage+Color.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImage/UIImage+Color.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIImage+CornerRadius.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImage/UIImage+CornerRadius.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIImage+ImageEffects.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImage/UIImage+ImageEffects.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIImageView+CornerRadius.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImageView/UIImageView+CornerRadius.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIImageView+RectCorner.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIImageView/UIImageView+RectCorner.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UILabel+AutomaticWriting.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UILabel/UILabel+AutomaticWriting.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UILabel+CountDown.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UILabel/UILabel+CountDown.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UILabel+LineSpacing.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UILabel/UILabel+LineSpacing.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UINavigationBar+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UINavigationBar/UINavigationBar+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UINavigationController+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UINavigationController/UINavigationController+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UINavigationController+BackButtonHandler.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UINavigationController/UINavigationController+BackButtonHandler.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UINavigationItem+Loading.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UINavigationItem/UINavigationItem+Loading.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UINavigationItem+Margin.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UINavigationItem/UINavigationItem+Margin.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIResponder+Chain.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIResponder/UIResponder+Chain.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIResponder+Router.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIResponder/UIResponder+Router.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIScreen+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIScreen/UIScreen+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIScrollView+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIScrollView/UIScrollView+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UITableView+PlaceHolder.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITableView/UITableView+PlaceHolder.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UITextField+InputLimit.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITextField/UITextField+InputLimit.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UITextField+Shake.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITextField/UITextField+Shake.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UITextView+InputLengthCalculate.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITextView/UITextView+InputLengthCalculate.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UITextView+Select.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UITextView/UITextView+Select.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIView+Addition.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Addition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIView+Badge.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Badge.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIView+CornerRadii.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+CornerRadii.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIView+CustomBorder.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+CustomBorder.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIView+FindSubView.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+FindSubView.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIView+Gesture.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Gesture.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIView+Gradient.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Gradient.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIView+Line.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Line.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIView+Position.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+Position.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIView+SuperController.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIView/UIView+SuperController.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIViewController+ClassName.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+ClassName.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIViewController+PageViewLevel.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+PageViewLevel.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIViewController+PreviousController.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+PreviousController.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIViewController+TopViewController.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+TopViewController.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MYKit/UIWindow+Hierarchy.h: -------------------------------------------------------------------------------- 1 | ../../../MYKit/MYKit/Classes/UIKit/UIWindow/UIWindow+Hierarchy.h -------------------------------------------------------------------------------- /Pods/MBProgressHUD/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright © 2009-2016 Matej Bukovinski 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/MYKit/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 sunjinshuai 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Core/MYKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYKit.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for LPDAdditions. 12 | FOUNDATION_EXPORT double MYAdditionsVersionNumber; 13 | 14 | //! Project version string for LPDAdditions. 15 | FOUNDATION_EXPORT const unsigned char MYAdditionsVersionString[]; 16 | 17 | #import "MYSafeKit.h" 18 | #import "MYFoundationKit.h" 19 | #import "MYUIKit.h" 20 | #import "MYKitDefinition.h" 21 | 22 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/MYFoundationKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYFoundationKit.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/4/26. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #ifndef MYFoundationKit_h 10 | #define MYFoundationKit_h 11 | 12 | #import "NSData+YYAdd.h" 13 | #import "NSArray+Collection.h" 14 | #import "NSArray+SafeAccess.h" 15 | #import "NSArray+Addition.h" 16 | #import "NSMutableArray+Sort.h" 17 | #import "NSMutableArray+Stack.h" 18 | #import "NSMutableArray+Queue.h" 19 | #import "NSMutableArray+SafeAccess.h" 20 | #import "NSDictionary+Addition.h" 21 | #import "NSDictionary+SafeAccess.h" 22 | #import "NSDictionary+Collection.h" 23 | #import "NSBundle+AppIcon.h" 24 | #import "NSDate+NSDateRFC1123.h" 25 | #import "NSDate+Addition.h" 26 | #import "NSUserDefaults+SafeAccess.h" 27 | #import "NSURL+Param.h" 28 | #import "NSObject+Addition.h" 29 | #import "NSObject+Swizzle.h" 30 | #import "NSObject+AssociatedObject.h" 31 | #import "NSNumber+Round.h" 32 | #import "NSNumber+Addition.h" 33 | #import "NSString+Addition.h" 34 | #import "NSString+Regular.h" 35 | #import "NSString+Trims.h" 36 | #import "NSString+Size.h" 37 | #import "NSString+Collection.h" 38 | 39 | #endif /* MYFoundationKit_h */ 40 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSArray/NSArray+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+Addition.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/11/18. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSArray (Addition) 12 | 13 | /** 14 | * 转换成JSON的NSString 15 | */ 16 | - (NSString *)arrayToJson; 17 | 18 | /** 19 | Creates and returns an array from a specified property list data. 20 | 21 | @param plist A property list data whose root object is an array. 22 | @return A new array created from the binary plist data, or nil if an error occurs. 23 | */ 24 | + (nullable NSArray *)arrayWithPlistData:(NSData *)plist; 25 | 26 | /** 27 | Creates and returns an array from a specified property list xml string. 28 | 29 | @param plist A property list xml string whose root object is an array. 30 | @return A new array created from the plist string, or nil if an error occurs. 31 | */ 32 | + (nullable NSArray *)arrayWithPlistString:(NSString *)plist; 33 | 34 | /** 35 | Serialize the array to a binary property list data. 36 | 37 | @return A binary plist data, or nil if an error occurs. 38 | */ 39 | - (nullable NSData *)plistData; 40 | 41 | /** 42 | Serialize the array to a xml property list string. 43 | 44 | @return A plist xml string, or nil if an error occurs. 45 | */ 46 | - (nullable NSString *)plistString; 47 | 48 | /** 49 | Returns the object located at a random index. 50 | 51 | @return The object in the array with a random index value. 52 | If the array is empty, returns nil. 53 | */ 54 | - (nullable id)randomObject; 55 | 56 | /** 57 | Convert object to json string. return nil if an error occurs. 58 | NSString/NSNumber/NSDictionary/NSArray 59 | */ 60 | - (nullable NSString *)jsonStringEncoded; 61 | 62 | /** 63 | Convert object to json string formatted. return nil if an error occurs. 64 | */ 65 | - (nullable NSString *)jsonPrettyStringEncoded; 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSArray/NSArray+SafeAccess.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+SafeAccess.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/8. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSArray (SafeAccess) 12 | 13 | /*! 14 | @method objectWithIndex: 15 | @abstract 检查是否越界和NSNull如果是返回nil 16 | @result 返回对象 17 | */ 18 | - (id)objectWithIndex:(NSUInteger)index; 19 | 20 | - (NSString *)stringWithIndex:(NSUInteger)index; 21 | 22 | - (NSNumber *)numberWithIndex:(NSUInteger)index; 23 | 24 | - (NSDecimalNumber *)decimalNumberWithIndex:(NSUInteger)index; 25 | 26 | - (NSArray *)arrayWithIndex:(NSUInteger)index; 27 | 28 | - (NSDictionary *)dictionaryWithIndex:(NSUInteger)index; 29 | 30 | - (NSInteger)integerWithIndex:(NSUInteger)index; 31 | 32 | - (NSUInteger)unsignedIntegerWithIndex:(NSUInteger)index; 33 | 34 | - (BOOL)boolWithIndex:(NSUInteger)index; 35 | 36 | - (int16_t)int16WithIndex:(NSUInteger)index; 37 | 38 | - (int32_t)int32WithIndex:(NSUInteger)index; 39 | 40 | - (int64_t)int64WithIndex:(NSUInteger)index; 41 | 42 | - (char)charWithIndex:(NSUInteger)index; 43 | 44 | - (short)shortWithIndex:(NSUInteger)index; 45 | 46 | - (float)floatWithIndex:(NSUInteger)index; 47 | 48 | - (double)doubleWithIndex:(NSUInteger)index; 49 | 50 | - (NSDate *)dateWithIndex:(NSUInteger)index dateFormat:(NSString *)dateFormat; 51 | 52 | - (CGFloat)my_floatWithIndex:(NSUInteger)index; 53 | 54 | - (CGPoint)my_pointWithIndex:(NSUInteger)index; 55 | 56 | - (CGSize)my_sizeWithIndex:(NSUInteger)index; 57 | 58 | - (CGRect)my_rectWithIndex:(NSUInteger)index; 59 | 60 | @end 61 | 62 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSBundle/NSBundle+AppIcon.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+AppIcon.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/8. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSBundle (AppIcon) 12 | 13 | /** 14 | 获取app的icon图标 15 | 16 | @return icon图标 17 | */ 18 | + (UIImage *)appIcon; 19 | 20 | /** 21 | 打印app里面所有启动图片名称信息 22 | 23 | @return 启动图片名称信息数组 24 | */ 25 | + (NSArray *)getAllLaunchImageInfo; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSBundle/NSBundle+AppIcon.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+AppIcon.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/8. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "NSBundle+AppIcon.h" 10 | 11 | @implementation NSBundle (AppIcon) 12 | 13 | + (UIImage *)appIcon { 14 | NSDictionary *infoPlist = [[self mainBundle] infoDictionary]; 15 | NSString *appIcon = [[infoPlist valueForKeyPath:@"CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles"] lastObject]; 16 | return [UIImage imageNamed:appIcon]; 17 | } 18 | 19 | + (NSArray *)getAllLaunchImageInfo { 20 | NSDictionary *infoDict = [[self mainBundle] infoDictionary]; 21 | // 获取所有启动图片信息数组 22 | NSArray *launchImagesArray = infoDict[@"UILaunchImages"]; 23 | return launchImagesArray; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSDate/NSDate+NSDateRFC1123.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+NSDateRFC1123.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/11/18. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSDate (NSDateRFC1123) 14 | 15 | /** 16 | Convert a RFC1123 'Full-Date' string 17 | (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1) 18 | into NSDate. 19 | */ 20 | + (nullable NSDate *)dateFromRFC1123:(NSString * _Nullable)value_; 21 | 22 | /** 23 | Convert NSDate into a RFC1123 'Full-Date' string 24 | (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1). 25 | */ 26 | - (nullable NSString *)rfc1123String; 27 | 28 | /** 29 | Convert NSDate into a 'yyyyMMdd' string 30 | */ 31 | - (nullable NSString *)yyyyMMddString; 32 | 33 | /** 34 | Convert NSDate into a string with FormatString 35 | */ 36 | - (nullable NSString *)stringWithFormatString:(nonnull NSString *)formatString; 37 | 38 | /** 39 | * @brief Convert to local time zone. 40 | */ 41 | - (nullable NSDate *)toLocalDate; 42 | 43 | - (nullable NSDate *)toBeijingDate; 44 | 45 | /** 46 | * @brief Convert to gmt time zone. 47 | */ 48 | - (nullable NSDate *)toGlobalDate; 49 | 50 | /** 51 | * @brief 00:00:00 52 | */ 53 | - (nullable NSDate *)beginningOfDay; 54 | 55 | /** 56 | * @brief 23:59:59 57 | */ 58 | - (nullable NSDate *)endingOfDay; 59 | 60 | /** 61 | * @brief MM月01日 62 | */ 63 | - (nonnull NSString *)beginningOfMonth; 64 | 65 | @end 66 | 67 | NS_ASSUME_NONNULL_END 68 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSDictionary/NSDictionary+Collection.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+Collection.h 3 | // Collection 4 | // 5 | // Created by Jordi Puigdellívol on 10/8/16. 6 | // Copyright © 2016 Revo. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (Collection) 12 | 13 | + (NSDictionary * _Nullable)fromData:(NSData* _Nullable)data; 14 | + (NSDictionary * _Nullable)fromString:(NSString* _Nullable)string; 15 | - (NSString * _Nullable)toString; 16 | - (NSDictionary * _Nullable)except:(NSArray* _Nullable)exceptKeys; 17 | - (NSDictionary* _Nullable)only:(NSArray* _Nullable)keysToKeep; 18 | 19 | - (void)each:(void(^ _Nullable)(id _Nonnull key, id _Nonnull object))operation; 20 | - (NSDictionary* _Nullable)filter:(BOOL (^ _Nullable)(id _Nonnull key, id _Nonnull object))condition; 21 | - (NSDictionary* _Nullable)reject:(BOOL (^ _Nullable)(id _Nonnull key, id _Nonnull object))condition; 22 | - (NSDictionary* _Nullable)map:(id _Nonnull (^ _Nullable)(id _Nonnull key, id _Nonnull object))callback; 23 | @end 24 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSDictionary/NSDictionary+SafeAccess.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+SafeAccess.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/27. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (SafeAccess) 12 | 13 | - (BOOL)hasKey:(NSString *)key; 14 | 15 | - (NSString *)stringForKey:(id)key; 16 | 17 | - (NSNumber *)numberForKey:(id)key; 18 | 19 | - (NSDecimalNumber *)decimalNumberForKey:(id)key; 20 | 21 | - (NSArray *)arrayForKey:(id)key; 22 | 23 | - (NSDictionary*)dictionaryForKey:(id)key; 24 | 25 | - (NSInteger)integerForKey:(id)key; 26 | 27 | - (NSUInteger)unsignedIntegerForKey:(id)key; 28 | 29 | - (BOOL)boolForKey:(id)key; 30 | 31 | - (int16_t)int16ForKey:(id)key; 32 | 33 | - (int32_t)int32ForKey:(id)key; 34 | 35 | - (int64_t)int64ForKey:(id)key; 36 | 37 | - (char)charForKey:(id)key; 38 | 39 | - (short)shortForKey:(id)key; 40 | 41 | - (float)floatForKey:(id)key; 42 | 43 | - (double)doubleForKey:(id)key; 44 | 45 | - (long)longForKey:(id)key; 46 | 47 | - (long long)longLongForKey:(id)key; 48 | 49 | - (unsigned long long)unsignedLongLongForKey:(id)key; 50 | 51 | - (id)getValueForKey:(NSString *)key; 52 | 53 | - (NSDate *)dateForKey:(id)key dateFormat:(NSString *)dateFormat; 54 | 55 | - (CGFloat)CGFloatForKey:(id)key; 56 | 57 | - (CGPoint)pointForKey:(id)key; 58 | 59 | - (CGSize)sizeForKey:(id)key; 60 | 61 | - (CGRect)rectForKey:(id)key; 62 | 63 | @end 64 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+Queue.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableArray+Queue.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/12/29. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSMutableArray (Queue) 14 | 15 | /** 16 | * @brief 队列的容量,大于0为有效容量,小于等于0表示不限制容量 17 | */ 18 | @property (nonatomic, assign) NSInteger queueSize; 19 | 20 | - (void)enqueueObject:(id)anObject; 21 | 22 | - (nullable id)dequeueObject; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+Queue.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableArray+Queue.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/12/29. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "NSMutableArray+Queue.h" 10 | #import "NSObject+AssociatedObject.h" 11 | 12 | @implementation NSMutableArray (Queue) 13 | 14 | BOOL queueSizeFlag = NO; 15 | 16 | - (void)enqueueObject:(id)anObject { 17 | [self addObject:anObject]; 18 | if (queueSizeFlag && self.count > self.queueSize) { 19 | [self removeObjectAtIndex:0]; 20 | } 21 | } 22 | 23 | - (id)dequeueObject { 24 | id anObject = [self firstObject]; 25 | if (self.count > 0) { 26 | [self removeObjectAtIndex:0]; 27 | } 28 | return anObject; 29 | } 30 | 31 | #pragma mark - propertes 32 | 33 | - (NSInteger)queueSize { 34 | return [[self object:@selector(setQueueSize:)] integerValue]; 35 | } 36 | 37 | - (void)setQueueSize:(NSInteger)queueSize { 38 | [self setRetainNonatomicObject:@(queueSize) withKey:@selector(setQueueSize:)]; 39 | if (queueSize > 0) { 40 | queueSizeFlag = YES; 41 | } else { 42 | queueSizeFlag = NO; 43 | } 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+SafeAccess.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableArray+SafeAccess.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/1. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSMutableArray (SafeAccess) 12 | 13 | /** 14 | 安全的添加一个对象 15 | 16 | @param object 对象 17 | */ 18 | - (void)addSafeObject:(id)object; 19 | 20 | /** 21 | 根据索引安全的插入一个对象 22 | 23 | @param object 对象 24 | @param index NSUInteger 25 | */ 26 | - (void)insertSafeObject:(id)object 27 | index:(NSUInteger)index; 28 | 29 | /** 30 | 根据索引安全的插入一个数组 31 | 32 | @param array NSArray 33 | @param indexSet NSIndexSet 34 | */ 35 | - (void)insertSafeArray:(NSArray *)array 36 | indexSet:(NSIndexSet *)indexSet; 37 | 38 | /** 39 | 根据索引安全的删除一个对象 40 | 41 | @param index NSUInteger 42 | */ 43 | - (void)safeRemoveObjectAtIndex:(NSUInteger)index; 44 | 45 | /** 46 | 根据范围安全的删除 47 | 48 | @param range NSRange 49 | */ 50 | - (void)safeRemoveObjectsInRange:(NSRange)range; 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+SafeAccess.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableArray+SafeAccess.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/1. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "NSMutableArray+SafeAccess.h" 10 | 11 | @implementation NSMutableArray (SafeAccess) 12 | 13 | - (void)addSafeObject:(id)object { 14 | 15 | if (object == nil) { 16 | return; 17 | } 18 | [self addObject:object]; 19 | } 20 | 21 | - (void)insertSafeObject:(id)object 22 | index:(NSUInteger)index { 23 | 24 | if (object == nil) { 25 | return; 26 | } 27 | 28 | if (index > self.count) { 29 | [self insertObject:object 30 | atIndex:self.count]; 31 | } else { 32 | 33 | [self insertObject:object 34 | atIndex:index]; 35 | } 36 | } 37 | 38 | - (void)insertSafeArray:(NSArray *)array 39 | indexSet:(NSIndexSet *)indexSet { 40 | 41 | if (indexSet == nil) { 42 | return; 43 | } 44 | 45 | if (indexSet.count != array.count || indexSet.firstIndex > array.count) { 46 | [self insertObject:array 47 | atIndex:self.count]; 48 | } else { 49 | [self insertObjects:array 50 | atIndexes:indexSet]; 51 | } 52 | } 53 | 54 | - (void)safeRemoveObjectAtIndex:(NSUInteger)index { 55 | 56 | if (index >= self.count) { 57 | return; 58 | } 59 | [self removeObjectAtIndex:index]; 60 | } 61 | 62 | - (void)safeRemoveObjectsInRange:(NSRange)range { 63 | 64 | NSUInteger location = range.location; 65 | NSUInteger length = range.length; 66 | 67 | if (location + length > self.count) { 68 | return; 69 | } 70 | [self removeObjectsInRange:range]; 71 | } 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+Sort.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableArray+Sort.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/12/4. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NSComparisonResult(^MYSortComparator)(id obj1, id obj2); 12 | typedef void(^MYSortExchangeCallBack)(id obj1, id obj2); 13 | 14 | @interface NSMutableArray (Sort) 15 | 16 | #pragma mark - 选择排序 17 | /*! 18 | * 选择排序 19 | * 20 | * @param comparator 排序的对象 21 | * @param sortExchangeCallBack 回调排序的结果 22 | */ 23 | - (void)selectSortWithComparator:(MYSortComparator)comparator 24 | didExchange:(MYSortExchangeCallBack)sortExchangeCallBack; 25 | 26 | /*! 27 | * 冒泡排序 28 | * 29 | * @param comparator 排序的对象 30 | * @param sortExchangeCallBack 回调排序的结果 31 | */ 32 | - (void)bubbleSortWithComparator:(MYSortComparator)comparator 33 | didExchange:(MYSortExchangeCallBack)sortExchangeCallBack; 34 | 35 | /*! 36 | * 插入排序 37 | * 38 | * @param comparator 排序的对象 39 | * @param sortExchangeCallBack 回调排序的结果 40 | */ 41 | - (void)insertSortWithComparator:(MYSortComparator)comparator 42 | didExchange:(MYSortExchangeCallBack)sortExchangeCallBack; 43 | 44 | /*! 45 | * 快速排序 46 | * 47 | * @param comparator 排序的对象 48 | * @param sortExchangeCallBack 回调排序的结果 49 | */ 50 | - (void)quickSortWithComparator:(MYSortComparator)comparator 51 | didExchange:(MYSortExchangeCallBack)sortExchangeCallBack; 52 | 53 | /*! 54 | * 堆排序 55 | * 56 | * @param comparator 排序的对象 57 | * @param sortExchangeCallBack 回调排序的结果 58 | */ 59 | - (void)heapSortWithComparator:(MYSortComparator)comparator 60 | didExchange:(MYSortExchangeCallBack)sortExchangeCallBack; 61 | 62 | 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+Stack.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableArray+Stack.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/12/29. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSMutableArray (Stack) 14 | 15 | - (void)pushObject:(id)anObject; 16 | 17 | - (nullable id)popObject; 18 | 19 | - (nullable id)peekObject; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | 25 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSMutableArray/NSMutableArray+Stack.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableArray+Stack.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/12/29. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "NSMutableArray+Stack.h" 10 | 11 | @implementation NSMutableArray (Stack) 12 | 13 | - (void)pushObject:(id)anObject { 14 | [self addObject:anObject]; 15 | } 16 | 17 | - (id)popObject { 18 | id anObject = [self lastObject]; 19 | if (self.count > 0) { 20 | [self removeLastObject]; 21 | } 22 | return anObject; 23 | } 24 | 25 | - (id)peekObject { 26 | return [self lastObject]; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSNumber/NSNumber+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+Addition.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/13. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSNumber (Addition) 14 | 15 | /** 16 | Creates and returns an NSNumber object from a string. 17 | Valid format: @"12", @"12.345", @" -0xFF", @" .23e99 "... 18 | 19 | @param string The string described an number. 20 | 21 | @return an NSNumber when parse succeed, or nil if an error occurs. 22 | */ 23 | + (nullable NSNumber *)numberWithString:(NSString *)string; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSNumber/NSNumber+Addition.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+Addition.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/13. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "NSNumber+Addition.h" 10 | #import "NSString+Trims.h" 11 | 12 | @implementation NSNumber (Addition) 13 | 14 | + (NSNumber *)numberWithString:(NSString *)string { 15 | NSString *str = [[string stringByTrim] lowercaseString]; 16 | if (!str || !str.length) { 17 | return nil; 18 | } 19 | 20 | static NSDictionary *dic; 21 | static dispatch_once_t onceToken; 22 | dispatch_once(&onceToken, ^{ 23 | dic = @{@"true" : @(YES), 24 | @"yes" : @(YES), 25 | @"false" : @(NO), 26 | @"no" : @(NO), 27 | @"nil" : [NSNull null], 28 | @"null" : [NSNull null], 29 | @"" : [NSNull null]}; 30 | }); 31 | id num = dic[str]; 32 | if (num) { 33 | if (num == [NSNull null]) return nil; 34 | return num; 35 | } 36 | 37 | // hex number 38 | int sign = 0; 39 | if ([str hasPrefix:@"0x"]) sign = 1; 40 | else if ([str hasPrefix:@"-0x"]) sign = -1; 41 | if (sign != 0) { 42 | NSScanner *scan = [NSScanner scannerWithString:str]; 43 | unsigned num = -1; 44 | BOOL suc = [scan scanHexInt:&num]; 45 | if (suc) 46 | return [NSNumber numberWithLong:((long)num * sign)]; 47 | else 48 | return nil; 49 | } 50 | // normal number 51 | NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 52 | [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 53 | return [formatter numberFromString:string]; 54 | } 55 | 56 | @end 57 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSNumber/NSNumber+Round.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+Round.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNumber (Round) 12 | 13 | /* 展示 */ 14 | - (NSString *)toDisplayNumberWithDigit:(NSInteger)digit; 15 | - (NSString *)toDisplayPercentageWithDigit:(NSInteger)digit; 16 | 17 | /* 四舍五入 */ 18 | /** 19 | * @brief 四舍五入 20 | * 21 | * @param digit 限制最大位数 22 | * 23 | * @return 结果 24 | */ 25 | - (NSNumber *)doRoundWithDigit:(NSUInteger)digit; 26 | /** 27 | * @brief 取上整 28 | * 29 | * @param digit 限制最大位数 30 | * 31 | * @return 结果 32 | */ 33 | - (NSNumber *)doCeilWithDigit:(NSUInteger)digit; 34 | /** 35 | * @brief 取下整 36 | * 37 | * @param digit 限制最大位数 38 | * 39 | * @return 结果 40 | */ 41 | - (NSNumber *)doFloorWithDigit:(NSUInteger)digit; 42 | 43 | /** 44 | * 将当前金额数值转成中文繁体金额 45 | * 1234567890.31 <=> 壹拾貳億叁仟肆佰伍拾陸萬柒仟捌佰玖拾圓叁角壹分 46 | */ 47 | - (NSString *)traditionalMoneyString; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSObject/NSObject+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Addition.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/31. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (Addition) 12 | 13 | /** 14 | 获取一个类的所有直接子类类簇 15 | */ 16 | - (NSArray *)findAllOf:(Class)defaultClass; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSObject/NSObject+Addition.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Addition.m 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/31. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "NSObject+Addition.h" 10 | #import 11 | 12 | @implementation NSObject (Addition) 13 | 14 | 15 | - (NSArray *)findAllOf:(Class)defaultClass { 16 | 17 | int count = objc_getClassList(NULL, 0); 18 | if (count <= 0) { 19 | @throw @"Couldn't retrieve Obj-C class-list"; 20 | return @[defaultClass]; 21 | } 22 | 23 | NSMutableArray *output = @[].mutableCopy; 24 | Class *classes = (Class *)malloc(sizeof(Class) * count); 25 | objc_getClassList(classes, count); 26 | for (int i = 0; i < count; ++i) { 27 | if (defaultClass == class_getSuperclass(classes[i])) { //子类 28 | [output addObject:classes[i]]; 29 | } 30 | } 31 | free(classes); 32 | return output.copy; 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSObject/NSObject+AssociatedObject.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+AssociatedObject.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (AssociatedObject) 12 | 13 | - (id)object:(SEL)key; 14 | 15 | - (void)setAssignObject:(id)object withKey:(SEL)key; 16 | 17 | - (void)setRetainNonatomicObject:(id)object withKey:(SEL)key; 18 | 19 | - (void)setCopyNonatomicObject:(id)object withKey:(SEL)key; 20 | 21 | - (void)setRetainObject:(id)object withKey:(SEL)key; 22 | 23 | - (void)setCopyObject:(id)object withKey:(SEL)key; 24 | 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSObject/NSObject+AssociatedObject.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+AssociatedObject.m 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "NSObject+AssociatedObject.h" 10 | #import 11 | 12 | @implementation NSObject (AssociatedObject) 13 | 14 | - (id)object:(SEL)key { 15 | return objc_getAssociatedObject(self, key); 16 | } 17 | 18 | - (void)setAssignObject:(id)object withKey:(SEL)key { 19 | objc_setAssociatedObject(self, key, object, OBJC_ASSOCIATION_ASSIGN); 20 | } 21 | 22 | - (void)setRetainNonatomicObject:(id)object withKey:(SEL)key { 23 | objc_setAssociatedObject(self, key, object, 24 | OBJC_ASSOCIATION_RETAIN_NONATOMIC); 25 | } 26 | 27 | - (void)setCopyNonatomicObject:(id)object withKey:(SEL)key { 28 | objc_setAssociatedObject(self, key, object, OBJC_ASSOCIATION_COPY_NONATOMIC); 29 | } 30 | 31 | - (void)setRetainObject:(id)object withKey:(SEL)key { 32 | objc_setAssociatedObject(self, key, object, OBJC_ASSOCIATION_COPY_NONATOMIC); 33 | } 34 | 35 | - (void)setCopyObject:(id)object withKey:(SEL)key { 36 | objc_setAssociatedObject(self, key, object, OBJC_ASSOCIATION_COPY_NONATOMIC); 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSObject/NSObject+Swizzle.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Swizzle.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/6/13. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface NSObject (Swizzle) 13 | 14 | /** 15 | 对类方法进行拦截并替换 16 | 17 | @param originalSelector 类的原类方法 18 | @param replaceSelector 替代方法 19 | */ 20 | + (void)swizzleClassMethod:(SEL)originalSelector replaceMethod:(SEL)replaceSelector; 21 | 22 | /** 23 | 对对象的实例方法进行拦截并替换 24 | 25 | @param originalSelector 对象的原实例方法 26 | @param replaceSelector 替代方法 27 | */ 28 | - (void)instanceSwizzleMethod:(SEL _Nonnull )originalSelector replaceMethod:(SEL _Nonnull )replaceSelector; 29 | 30 | /** 31 | 对类方法进行拦截并替换 32 | 33 | @param klass 被拦截的具体类 34 | @param originalSelector 类的原类方法 35 | @param replaceSelector 替代方法 36 | */ 37 | + (void)classSwizzleMethodWithClass:(Class _Nonnull)klass orginalMethod:(SEL _Nonnull)originalSelector replaceMethod:(SEL _Nonnull)replaceSelector; 38 | 39 | /** 40 | 对对象的实例方法进行拦截并替换 41 | 42 | @param klass 被拦截的具体类 43 | @param originalSelector 对象的原实例方法 44 | @param replaceSelector 替代方法 45 | */ 46 | + (void)instanceSwizzleMethodWithClass:(Class _Nonnull)klass orginalMethod:(SEL _Nonnull)originalSelector replaceMethod:(SEL _Nonnull)replaceSelector; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSString/NSString+Regular.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Regular.h 3 | // FXKitExampleDemo 4 | // 5 | // Created by sunjinshuai on 2017/8/30. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (Regular) 12 | 13 | 14 | /*! 15 | * @method vertifyEmail 16 | * 验证字符串是否邮箱格式 17 | */ 18 | - (BOOL)vertifyEmail; 19 | 20 | /*! 21 | * @method vertifyChinese 22 | * 验证字符串是否中文 23 | */ 24 | - (BOOL)vertifyChinese; 25 | 26 | /*! 27 | * @method vertifyPassword 28 | * 验证字符串是否6-18位大小字母混合数字密码 29 | */ 30 | - (BOOL)vertifyPassword; 31 | 32 | /*! 33 | * @method vertifyHyperLink 34 | * 验证字符串是否超链接 35 | */ 36 | - (BOOL)vertifyHyperLink; 37 | 38 | /*! 39 | * @method vertifyTelephone 40 | * 验证字符串是否固机号码 41 | */ 42 | - (BOOL)vertifyTelephone; 43 | 44 | /*! 45 | * @method vertifyIpAddress 46 | * 验证字符串是否IP地址 47 | */ 48 | - (BOOL)vertifyIpAddress; 49 | 50 | /*! 51 | * @method vertifyMobilePhone 52 | * 验证字符串是否手机号码 53 | */ 54 | - (BOOL)vertifyMobilePhone; 55 | 56 | /*! 57 | * @method vertifyCarNumber 58 | * 验证字符串是否车牌号码 59 | */ 60 | - (BOOL)vertifyCarNumber; 61 | 62 | /*! 63 | * @method vertifyIdentifierNumber 64 | * 验证字符串是否身份证号码 65 | */ 66 | - (BOOL)vertifyIdentifierNumber; 67 | 68 | /*! 69 | * @method vertifyStringWithExp: 70 | * 验证字符串是否符合正则表达式规则 71 | */ 72 | - (BOOL)vertifyStringWithExp:(NSString *)exp; 73 | 74 | @end 75 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSString/NSString+Size.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Size.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/7. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSString (Size) 14 | 15 | /** 16 | 简单计算文本占据的size 17 | */ 18 | - (CGSize)textSizeWithFont:(UIFont *)font; 19 | 20 | /** 21 | * 计算文本占用的宽高 22 | * 23 | * @param font 显示的字体 24 | * @param maxSize 最大的显示范围 25 | * 26 | * @return 占用的宽高 27 | */ 28 | - (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize; 29 | 30 | /** 31 | 根据字体、行数、行间距和constrainedWidth计算文本占据的size 32 | @param font 字体 33 | @param numberOfLines 显示文本行数,值为0不限制行数 34 | @param lineSpacing 行间距 35 | @param constrainedWidth 文本受限的宽度 36 | @param isLimitedToLines 记录文本是否被numberOfLines限制 37 | @return 返回文本占据的size 38 | */ 39 | - (CGSize)textSizeWithFont:(UIFont *)font 40 | numberOfLines:(NSInteger)numberOfLines 41 | lineSpacing:(CGFloat)lineSpacing 42 | constrainedWidth:(CGFloat)constrainedWidth 43 | isLimitedToLines:(BOOL * _Nonnull)isLimitedToLines; 44 | 45 | /** 46 | * 计算文字高度,可以处理计算带行间距的等属性 47 | */ 48 | - (CGSize)boundingRectWithSize:(CGSize)size 49 | paragraphStyle:(NSMutableParagraphStyle *)paragraphStyle 50 | font:(UIFont *)font; 51 | /** 52 | * 计算文字高度,可以处理计算带行间距的 53 | */ 54 | - (CGSize)boundingRectWithSize:(CGSize)size 55 | font:(UIFont*)font 56 | lineSpacing:(CGFloat)lineSpacing; 57 | /** 58 | * 计算最大行数文字高度,可以处理计算带行间距的 59 | */ 60 | - (CGFloat)boundingRectWithSize:(CGSize)size 61 | font:(UIFont *)font 62 | lineSpacing:(CGFloat)lineSpacing 63 | maxLines:(NSInteger)maxLines; 64 | 65 | /** 66 | * 计算是否超过一行 67 | */ 68 | - (BOOL)isMoreThanOneLineWithSize:(CGSize)size 69 | font:(UIFont *)font 70 | lineSpaceing:(CGFloat)lineSpacing; 71 | 72 | @end 73 | 74 | NS_ASSUME_NONNULL_END 75 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSString/NSString+Trims.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Trims.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/8. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (Trims) 12 | 13 | /** 14 | 去除回车键 15 | */ 16 | + (NSString *)stirngByTrimReturnKey:(NSString *)string; 17 | 18 | /** 19 | Trim blank characters (space and newline) in head and tail. 20 | @return the trimmed string. 21 | */ 22 | - (NSString *)stringByTrim; 23 | 24 | /** 25 | * @brief 去除字符串与空行 26 | * 27 | * @return 去除字符串与空行的字符串 28 | */ 29 | - (NSString *)trimmingWhitespaceAndNewlines; 30 | 31 | /** 32 | * @brief 清除html标签 33 | * 34 | * @return 清除后的结果 35 | */ 36 | - (NSString *)stringByStrippingHTML; 37 | /** 38 | * @brief 清除js脚本 39 | * 40 | * @return 清楚js后的结果 41 | */ 42 | - (NSString *)stringByRemovingScriptsAndStrippingHTML; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSURL/NSURL+Param.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSURL+Param.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/8. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSURL (Param) 14 | 15 | /** 16 | * @brief url参数转字典 17 | * 18 | * @return 参数转字典结果 19 | */ 20 | - (NSDictionary *)parameters; 21 | /** 22 | * @brief 根据参数名 取参数值 23 | * 24 | * @param parameterKey 参数名的key 25 | * 26 | * @return 参数值 27 | */ 28 | - (NSString *)valueForParameter:(NSString *)parameterKey; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSURL/NSURL+Param.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSURL+Param.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/8. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "NSURL+Param.h" 10 | 11 | @implementation NSURL (Param) 12 | 13 | /** 14 | * @brief url参数转字典 15 | * 16 | * @return 参数转字典结果 17 | */ 18 | - (NSDictionary *)parameters { 19 | NSMutableDictionary *parametersDictionary = [NSMutableDictionary dictionary]; 20 | NSArray *queryComponents = [self.query componentsSeparatedByString:@"&"]; 21 | for (NSString *queryComponent in queryComponents) { 22 | NSString *key = [queryComponent componentsSeparatedByString:@"="].firstObject; 23 | NSString *value = [queryComponent substringFromIndex:(key.length + 1)]; 24 | [parametersDictionary setObject:value forKey:key]; 25 | } 26 | return parametersDictionary; 27 | } 28 | 29 | /** 30 | * @brief 根据参数名 取参数值 31 | * 32 | * @param parameterKey 参数名的key 33 | * 34 | * @return 参数值 35 | */ 36 | - (NSString *)valueForParameter:(NSString *)parameterKey { 37 | return [[self parameters] objectForKey:parameterKey]; 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSUserDefaults/NSUserDefaults+SafeAccess.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSUserDefaults+SafeAccess.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSUserDefaults (SafeAccess) 14 | 15 | + (NSString *)stringForKey:(NSString *)defaultName; 16 | 17 | + (NSArray *)arrayForKey:(NSString *)defaultName; 18 | 19 | + (NSDictionary *)dictionaryForKey:(NSString *)defaultName; 20 | 21 | + (NSData *)dataForKey:(NSString *)defaultName; 22 | 23 | + (NSArray *)stringArrayForKey:(NSString *)defaultName; 24 | 25 | + (NSInteger)integerForKey:(NSString *)defaultName; 26 | 27 | + (float)floatForKey:(NSString *)defaultName; 28 | 29 | + (double)doubleForKey:(NSString *)defaultName; 30 | 31 | + (BOOL)boolForKey:(NSString *)defaultName; 32 | 33 | + (NSURL *)URLForKey:(NSString *)defaultName; 34 | 35 | + (void)setObject:(id)value forKey:(NSString *)defaultName; 36 | 37 | @end 38 | 39 | NS_ASSUME_NONNULL_END 40 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/Foundation/NSUserDefaults/NSUserDefaults+SafeAccess.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSUserDefaults+SafeAccess.m 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "NSUserDefaults+SafeAccess.h" 10 | 11 | @implementation NSUserDefaults (SafeAccess) 12 | 13 | + (NSString *)stringForKey:(NSString *)defaultName { 14 | return [[NSUserDefaults standardUserDefaults] stringForKey:defaultName]; 15 | } 16 | 17 | + (NSArray *)arrayForKey:(NSString *)defaultName { 18 | return [[NSUserDefaults standardUserDefaults] arrayForKey:defaultName]; 19 | } 20 | 21 | + (NSDictionary *)dictionaryForKey:(NSString *)defaultName { 22 | return [[NSUserDefaults standardUserDefaults] dictionaryForKey:defaultName]; 23 | } 24 | 25 | + (NSData *)dataForKey:(NSString *)defaultName { 26 | return [[NSUserDefaults standardUserDefaults] dataForKey:defaultName]; 27 | } 28 | 29 | + (NSArray *)stringArrayForKey:(NSString *)defaultName { 30 | return [[NSUserDefaults standardUserDefaults] stringArrayForKey:defaultName]; 31 | } 32 | 33 | + (NSInteger)integerForKey:(NSString *)defaultName { 34 | return [[NSUserDefaults standardUserDefaults] integerForKey:defaultName]; 35 | } 36 | 37 | + (float)floatForKey:(NSString *)defaultName { 38 | return [[NSUserDefaults standardUserDefaults] floatForKey:defaultName]; 39 | } 40 | 41 | + (double)doubleForKey:(NSString *)defaultName { 42 | return [[NSUserDefaults standardUserDefaults] doubleForKey:defaultName]; 43 | } 44 | 45 | + (BOOL)boolForKey:(NSString *)defaultName { 46 | return [[NSUserDefaults standardUserDefaults] boolForKey:defaultName]; 47 | } 48 | 49 | + (NSURL *)URLForKey:(NSString *)defaultName { 50 | return [[NSUserDefaults standardUserDefaults] URLForKey:defaultName]; 51 | } 52 | 53 | + (void)setObject:(id)value forKey:(NSString *)defaultName { 54 | [[NSUserDefaults standardUserDefaults] setObject:value forKey:defaultName]; 55 | [[NSUserDefaults standardUserDefaults] synchronize]; 56 | } 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/FoundationContainer/MYSafeFoundationContainer.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYSafeFoundationContainer.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/6/26. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MYSafeFoundationContainer : NSObject 12 | 13 | /** 14 | 防护 Foundation crash 15 | */ 16 | + (void)safeGuardContainersSelector; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/FoundationContainer/MYSafeFoundationContainer.m: -------------------------------------------------------------------------------- 1 | // 2 | // MYSafeFoundationContainer.m 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/6/26. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "MYSafeFoundationContainer.h" 10 | #import "NSArray+Safe.h" 11 | #import "NSMutableArray+Safe.h" 12 | #import "NSDictionary+Safe.h" 13 | #import "NSMutableDictionary+Safe.h" 14 | #import "NSObject+Safe.h" 15 | #import "NSMutableString+Safe.h" 16 | #import "NSString+Safe.h" 17 | 18 | @interface MYSafeFoundationContainer () 19 | 20 | @property (nonatomic, strong) NSArray *tempArray; 21 | 22 | @end 23 | 24 | @implementation MYSafeFoundationContainer 25 | 26 | + (void)safeGuardContainersSelector { 27 | 28 | [NSArray registerClassPairMethodsInArray]; 29 | [NSMutableArray registerClassPairMethodsInMutableArray]; 30 | 31 | [NSDictionary registerClassPairMethodsInDictionary]; 32 | [NSMutableDictionary registerClassPairMethodsInMutableDictionary]; 33 | 34 | [NSObject registerClassPairMethodsInObject]; 35 | 36 | [NSString registerClassPairMethodsInString]; 37 | [NSMutableString registerClassPairMethodsInMutableString]; 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSArray+Safe.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+Aspect.h 3 | // Footstone 4 | // 5 | // Created by 李阳 on 8/3/2018. 6 | // Copyright © 2018 BetrayalPromise. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | 防御数组入参崩溃 13 | */ 14 | @interface NSArray (Safe) 15 | 16 | + (void)registerClassPairMethodsInArray; 17 | 18 | @end 19 | 20 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSDictionary+Safe.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+Safe.h 3 | // Footstone 4 | // 5 | // Created by 李阳 on 4/5/2018. 6 | // Copyright © 2018 BetrayalPromise. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (Safe) 12 | 13 | /** 14 | 字典 crash 防护 15 | */ 16 | + (void)registerClassPairMethodsInDictionary; 17 | 18 | @end 19 | 20 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSMutableArray+Safe.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+Aspect.h 3 | // Footstone 4 | // 5 | // Created by 李阳 on 8/3/2018. 6 | // Copyright © 2018 BetrayalPromise. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSMutableArray (Safe) 12 | 13 | /** 14 | 可变数组 crash 防护 15 | */ 16 | + (void)registerClassPairMethodsInMutableArray; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSMutableDictionary+Safe.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+Safe.h 3 | // Footstone 4 | // 5 | // Created by 李阳 on 4/5/2018. 6 | // Copyright © 2018 BetrayalPromise. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSMutableDictionary (Safe) 12 | 13 | /** 14 | 可变字典 crash 防护 15 | */ 16 | + (void)registerClassPairMethodsInMutableDictionary; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSMutableString+Safe.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableString+Safe.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/30. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSMutableString (Safe) 12 | 13 | /** 14 | 防护 MutableString crash 15 | */ 16 | + (void)registerClassPairMethodsInMutableString; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSObject+Safe.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Aspect.h 3 | // Footstone 4 | // 5 | // Created by 李阳 on 11/3/2018. 6 | // Copyright © 2018 BetrayalPromise. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | 防御 KVC KVO 崩溃 13 | */ 14 | @interface NSObject (Aspect) 15 | 16 | + (void)registerClassPairMethodsInObject; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/FoundationContainer/NSString+Safe.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Safe.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/30. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (Safe) 12 | 13 | /** 14 | String 防护 Crash 15 | */ 16 | + (void)registerClassPairMethodsInString; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/KVO/NSObject+SafeKVO.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+SafeKVO.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/30. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (SafeKVO) 12 | 13 | /** 14 | 防护 KVO Crash 15 | */ 16 | + (void)registerClassPairMethodsInKVO; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/MYSafeKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYSafeKit.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/6/26. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_OPTIONS(NSUInteger, MYSafeKitShieldType) { 12 | MYSafeKitShieldTypeUnrecognizedSelector = 1 << 1, 13 | MYSafeKitShieldTypeContainer = 1 << 2, 14 | MYSafeKitShieldTypeKVO = 1 << 3, 15 | MYSafeKitShieldTypeNotification = 1 << 4, 16 | MYSafeKitShieldTypeTimer = 1 << 5, 17 | MYSafeKitShieldTypeNull = 1 << 6, 18 | MYSafeKitShieldTypeAll = (MYSafeKitShieldTypeUnrecognizedSelector | MYSafeKitShieldTypeContainer | MYSafeKitShieldTypeKVO | MYSafeKitShieldTypeNotification | MYSafeKitShieldTypeTimer | MYSafeKitShieldTypeNull), 19 | }; 20 | 21 | @protocol MYSafeKitRecordProtocol 22 | 23 | - (void)recordWithReason:(NSError *)reason; 24 | 25 | @end 26 | 27 | @interface MYSafeKit : NSObject 28 | 29 | /** 30 | 注册汇报中心 31 | 32 | @param record 汇报中心 33 | */ 34 | + (void)registerRecordHandler:(id)record; 35 | 36 | /** 37 | 注册 SDK,默认只要开启就打开防 Crash 38 | */ 39 | + (void)registerSafeKitShield; 40 | 41 | /** 42 | 注册 SDK,根据不同 ability 开启防 Crash 43 | 本注册方式不包含 MYSafeKitShieldTypeAll 类型 44 | @param ability ability 45 | */ 46 | + (void)registerSafeKitShieldWithAbility:(MYSafeKitShieldType)ability; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/NSNull/NSNull+Safe.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNull+Safe.h 3 | // MYKit 4 | // 5 | // Created by sunjinshuai on 2019/4/17. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface NSNull (Safe) 13 | 14 | /** 15 | NSNull 16 | */ 17 | + (void)safeGuardNSNull; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/NSNull/NSNull+Safe.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSNull+Safe.m 3 | // MYKit 4 | // 5 | // Created by sunjinshuai on 2019/4/17. 6 | // 7 | 8 | #import "NSNull+Safe.h" 9 | #import "NSObject+Swizzle.h" 10 | #import "MYSafeKitRecord.h" 11 | #import 12 | 13 | @implementation NSNull (Safe) 14 | 15 | + (void)safeGuardNSNull { 16 | [self instanceSwizzleMethod:@selector(forwardingTargetForSelector:) 17 | replaceMethod:@selector(safe_instanceMethod_forwardingTargetForSelector:)]; 18 | } 19 | 20 | - (id)safe_instanceMethod_forwardingTargetForSelector:(SEL)aSelector { 21 | static NSArray *sTmpOutput = nil; 22 | if (sTmpOutput == nil) { 23 | sTmpOutput = @[@"", @0, @[], @{}]; 24 | } 25 | 26 | for (id tmpObj in sTmpOutput) { 27 | if ([tmpObj respondsToSelector:aSelector]) { 28 | NSString *reason = [NSString stringWithFormat:@"*****Warning***** logic error.target is %@ method is %@, reason : method forword to Object default implement like send message to nil.",[self class], NSStringFromSelector(aSelector)]; 29 | [MYSafeKitRecord recordFatalWithReason:reason errorType:(MYSafeKitShieldTypeNull)]; 30 | return tmpObj; 31 | } 32 | } 33 | return [self safe_instanceMethod_forwardingTargetForSelector:aSelector]; 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/NSTimer/NSTimer+Safe.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSTimer+Safe.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/30. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSTimer (Safe) 12 | 13 | /** 14 | 防护 Timer crash 15 | */ 16 | + (void)registerClassPairMethodsInTimer; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/Notification/NSNotificationCenter+SafeKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNotificationCenter+SafeKit.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/6/19. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNotificationCenter (SafeKit) 12 | 13 | /** 14 | 防护 iOS 8 通知 carsh 15 | */ 16 | + (void)safeGuardNotificationSelector; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/Record/MYSafeKitRecord.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYSafeKitRecord.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/31. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MYSafeKit.h" 11 | 12 | @interface MYSafeKitRecord : NSObject 13 | 14 | /** 15 | 注册汇报中心 16 | 17 | @param record 汇报中心 18 | */ 19 | + (void)registerRecordHandler:(nullable id)record; 20 | 21 | /** 22 | 汇报Crash 23 | 24 | @param reason Sting 原因, maybe nil 25 | */ 26 | + (void)recordFatalWithReason:(nullable NSString *)reason 27 | errorType:(MYSafeKitShieldType)type; 28 | 29 | /** 30 | 获取调用堆栈信息 31 | 32 | @param tipString 错误信息 33 | */ 34 | + (NSString *)getErrorMessageWithTipString:(NSString *)tipString; 35 | 36 | /** 37 | alter 错误堆栈信息 38 | */ 39 | + (void)safeKit_showAlterWithMessage:(NSString *)messsage; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/SafeKitShield.h: -------------------------------------------------------------------------------- 1 | // 2 | // SafeKitShield.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/31. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for Expecta. 12 | FOUNDATION_EXPORT double SafeKitShieldVersionNumber; 13 | 14 | //! Project version string for Expecta. 15 | FOUNDATION_EXPORT const unsigned char SafeKitShieldVersionString[]; 16 | 17 | #import "MYSafeKit.h" 18 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/SafeKit/UnknowSelector/NSObject+UnknowSelector.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+UnknowSelector.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/6/19. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (UnknowSelector) 12 | 13 | /** 14 | 防护发送到未知的选择子到实例 15 | */ 16 | + (void)safeGuardUnrecognizedSelector; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIApplication/UIApplication+Authority.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+Authority.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/14. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^CLPermissionBlock)(BOOL granted); 12 | 13 | @interface UIApplication (Authority) 14 | 15 | #pragma mark - 权限查询 16 | /** 17 | 获取UIApplication的定位是否授权 18 | 19 | @return BOOL 20 | */ 21 | + (BOOL)getApplicationLocationPermit; 22 | 23 | /** 24 | 获取UIApplication的通信录是否授权 25 | 26 | @return BOOL 27 | */ 28 | + (BOOL)getApplicationAddressBookPermit; 29 | 30 | /** 31 | 获取UIApplication的相机是否授权 32 | 33 | @return BOOL 34 | */ 35 | + (BOOL)getApplicationCameraPermit; 36 | 37 | /** 38 | 获取UIApplication的推送功能是否授权 39 | 40 | @return BOOL 41 | */ 42 | + (BOOL)getApplicationRemindersPermit; 43 | 44 | /** 45 | 获取UIApplication的相册是否授权 46 | 47 | @return BOOL 48 | */ 49 | + (BOOL)getApplicationPhotosLibraryPermit; 50 | 51 | /** 52 | 获取UIApplication的麦克风是否开启 53 | 54 | @param block CLPermissionBlock 55 | */ 56 | + (void)getApplicationMicrophonePermitWithBlock:(CLPermissionBlock)block; 57 | 58 | 59 | @end 60 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIApplication/UIApplication+NetworkActivityIndicator.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+NetworkActivityIndicator.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/7. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIApplication (NetworkActivityIndicator) 12 | 13 | /* 14 | This category will automatically keep track of concurrent network activity and display the network activity indicator accordingly. 15 | */ 16 | 17 | /// Tell the application that network activity has begun. The network activity indicator will then be shown. 18 | /// Display the network activity indicator to provide feedback when your application accesses the network for more than a couple of seconds. If the operation finishes sooner than that, you don’t have to show the network activity indicator, because the indicator would be likely to disappear before users notice its presence. 19 | - (void)beganNetworkActivity; 20 | 21 | /// Tell the application that a session of network activity has begun. The network activity indicator will remain showing or hide automatically depending the presence of other ongoing network activity in the app. 22 | - (void)endedNetworkActivity; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIApplication/UIApplication+NetworkActivityIndicator.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+NetworkActivityIndicator.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/7. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UIApplication+NetworkActivityIndicator.h" 10 | #import 11 | 12 | @implementation UIApplication (NetworkActivityIndicator) 13 | 14 | static volatile int32_t numberOfActiveNetworkConnections; 15 | 16 | #pragma mark Public API 17 | 18 | - (void)beganNetworkActivity 19 | { 20 | self.networkActivityIndicatorVisible = OSAtomicAdd32(1, &numberOfActiveNetworkConnections) > 0; 21 | } 22 | 23 | - (void)endedNetworkActivity 24 | { 25 | self.networkActivityIndicatorVisible = OSAtomicAdd32(-1, &numberOfActiveNetworkConnections) > 0; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIBarButtonItem/UIBarButtonItem+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBarButtonItem+Addition.h 3 | // FXKitExampleDemo 4 | // 5 | // Created by sunjinshuai on 2017/7/20. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBarButtonItem (Addition) 12 | 13 | + (UIBarButtonItem *)barButtonItemWithTarget:(id)target 14 | action:(SEL)action 15 | image:(NSString *)image; 16 | 17 | + (UIBarButtonItem *)barButtonItemWithTarget:(id)target 18 | action:(SEL)action 19 | image:(NSString *)image 20 | selectedImage:(NSString *)selectedImage; 21 | 22 | + (UIBarButtonItem *)barButtonItemWithTarget:(id)target 23 | action:(SEL)action 24 | image:(NSString *)image 25 | highlightedImageName:(NSString *)highlightedImageName; 26 | 27 | + (UIBarButtonItem *)barButtonItemWithTarget:(id)target 28 | action:(SEL)action 29 | title:(NSString *)title 30 | selectedTitle:(NSString *)selectedTitle; 31 | 32 | + (UIBarButtonItem *)barButtonItemWithTarget:(id)target 33 | action:(SEL)action 34 | title:(NSString *)title 35 | highlightedTitle:(NSString *)highlightedTitle; 36 | 37 | + (UIBarButtonItem *)barButtonItemWithTarget:(id)target 38 | action:(SEL)action 39 | title:(NSString *)title 40 | titleColor:(UIColor *)titleColor; 41 | 42 | @end 43 | 44 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIBarButtonItem/UIBarButtonItem+Badge.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBarButtonItem+Badge.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // https://github.com/mikeMTOL/UIBarButtonItem-Badge 8 | 9 | #import 10 | 11 | @interface UIBarButtonItem (Badge) 12 | 13 | @property (strong, atomic) UILabel *badge; 14 | 15 | // Badge value to be display 16 | @property (nonatomic) NSString *badgeValue; 17 | // Badge background color 18 | @property (nonatomic) UIColor *badgeBGColor; 19 | // Badge text color 20 | @property (nonatomic) UIColor *badgeTextColor; 21 | // Badge font 22 | @property (nonatomic) UIFont *badgeFont; 23 | // Padding value for the badge 24 | @property (nonatomic) CGFloat badgePadding; 25 | // Minimum size badge to small 26 | @property (nonatomic) CGFloat badgeMinSize; 27 | // Values for offseting the badge over the BarButtonItem you picked 28 | @property (nonatomic) CGFloat badgeOriginX; 29 | @property (nonatomic) CGFloat badgeOriginY; 30 | // In case of numbers, remove the badge when reaching zero 31 | @property BOOL shouldHideBadgeAtZero; 32 | // Badge has a bounce animation when value changes 33 | @property BOOL shouldAnimateBadge; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIButton/UIButton+Badge.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Badge.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // https://github.com/mikeMTOL/UIBarButtonItem-Badge 8 | 9 | #import 10 | 11 | @interface UIButton (Badge) 12 | 13 | @property (strong, nonatomic) UILabel *badge; 14 | 15 | // Badge value to be display 16 | @property (nonatomic) NSString *badgeValue; 17 | // Badge background color 18 | @property (nonatomic) UIColor *badgeBGColor; 19 | // Badge text color 20 | @property (nonatomic) UIColor *badgeTextColor; 21 | // Badge font 22 | @property (nonatomic) UIFont *badgeFont; 23 | // Padding value for the badge 24 | @property (nonatomic) CGFloat badgePadding; 25 | // Minimum size badge to small 26 | @property (nonatomic) CGFloat badgeMinSize; 27 | // Values for offseting the badge over the BarButtonItem you picked 28 | @property (nonatomic) CGFloat badgeOriginX; 29 | @property (nonatomic) CGFloat badgeOriginY; 30 | // In case of numbers, remove the badge when reaching zero 31 | @property BOOL shouldHideBadgeAtZero; 32 | // Badge has a bounce animation when value changes 33 | @property BOOL shouldAnimateBadge; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIButton/UIButton+CountDown.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+CountDown.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (CountDown) 12 | 13 | /** 14 | 倒计时 15 | 16 | @param timeInterval 倒计时时长 17 | @param text 倒计时内容 18 | @param completion 倒计时之后回调 19 | */ 20 | - (void)scheduledTimerWithTimeInterval:(NSInteger)timeInterval 21 | countDownText:(NSString *)text 22 | completion:(void (^)(UIButton *countDownButton))completion; 23 | 24 | @end 25 | 26 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIButton/UIButton+CountDown.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+CountDown.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UIButton+CountDown.h" 10 | 11 | @implementation UIButton (CountDown) 12 | 13 | - (void)scheduledTimerWithTimeInterval:(NSInteger)timeInterval 14 | countDownText:(NSString *)text 15 | completion:(void (^)(UIButton *countDownButton))completion { 16 | // 倒计时时间 17 | __block NSInteger timeOut = timeInterval; 18 | dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 19 | dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); 20 | // 每秒执行一次 21 | dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0); 22 | dispatch_source_set_event_handler(_timer, ^{ 23 | 24 | // 倒计时结束,关闭 25 | if (timeOut <= 0) { 26 | dispatch_source_cancel(_timer); 27 | dispatch_async(dispatch_get_main_queue(), ^{ 28 | self.userInteractionEnabled = YES; 29 | if (completion) { 30 | completion(self); 31 | } 32 | }); 33 | } else { 34 | int allTime = (int)timeInterval + 1; 35 | int timeInterval = timeOut % allTime; 36 | NSString *timeStr = [NSString stringWithFormat:@"%d", timeInterval]; 37 | dispatch_async(dispatch_get_main_queue(), ^{ 38 | [self setTitle:[NSString stringWithFormat:@"%@ %@", timeStr, text] forState:UIControlStateNormal]; 39 | self.userInteractionEnabled = NO; 40 | }); 41 | timeOut--; 42 | } 43 | }); 44 | 45 | dispatch_resume(_timer); 46 | } 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIButton/UIButton+ImageTitleStyle.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+ImageTitleStyle.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/1/17. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /* 12 | 针对同时设置了Image和Title的场景时UIButton中的图片和文字的关系 13 | */ 14 | typedef NS_ENUM(NSInteger, ButtonImageTitleStyle ) { 15 | ButtonImageTitleStyleDefault = 0, //图片在左,文字在右,整体居中。 16 | ButtonImageTitleStyleLeft = 0, //图片在左,文字在右,整体居中。 17 | ButtonImageTitleStyleRight = 2, //图片在右,文字在左,整体居中。 18 | ButtonImageTitleStyleTop = 3, //图片在上,文字在下,整体居中。 19 | ButtonImageTitleStyleBottom = 4, //图片在下,文字在上,整体居中。 20 | ButtonImageTitleStyleCenterTop = 5, //图片居中,文字在上距离按钮顶部。 21 | ButtonImageTitleStyleCenterBottom = 6, //图片居中,文字在下距离按钮底部。 22 | ButtonImageTitleStyleCenterUp = 7, //图片居中,文字在图片上面。 23 | ButtonImageTitleStyleCenterDown = 8, //图片居中,文字在图片下面。 24 | ButtonImageTitleStyleRightLeft = 9, //图片在右,文字在左,距离按钮两边边距 25 | ButtonImageTitleStyleLeftRight = 10, //图片在左,文字在右,距离按钮两边边距 26 | }; 27 | 28 | @interface UIButton (ImageTitleStyle) 29 | 30 | /* 31 | 调整按钮的文本和image的布局,前提是title和image同时存在才会调整。 32 | padding是调整布局时整个按钮和图文的间隔。 33 | 34 | */ 35 | - (void)setButtonImageTitleStyle:(ButtonImageTitleStyle)style 36 | padding:(CGFloat)padding; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIButton/UIButton+Indicator.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Indicator.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (Indicator) 12 | 13 | /** 14 | This method will show the activity indicator in place of the button text. 15 | */ 16 | - (void)showIndicator; 17 | 18 | /** 19 | This method will remove the indicator and put thebutton text back in place. 20 | */ 21 | - (void)hideIndicator; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIButton/UIButton+Indicator.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Indicator.m 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UIButton+Indicator.h" 10 | #import 11 | 12 | // Associative reference keys. 13 | static NSString *const UIButton_IndicatorViewKey = @"UIButton_IndicatorViewKey"; 14 | static NSString *const UIButton_ButtonTextObjectKey = @"UIButton_ButtonTextObjectKey"; 15 | 16 | @implementation UIButton (Indicator) 17 | 18 | - (void)showIndicator { 19 | 20 | UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 21 | indicator.center = CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2); 22 | [indicator startAnimating]; 23 | 24 | NSString *currentButtonText = self.titleLabel.text; 25 | 26 | objc_setAssociatedObject(self, &UIButton_ButtonTextObjectKey, currentButtonText, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 27 | objc_setAssociatedObject(self, &UIButton_IndicatorViewKey, indicator, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 28 | 29 | [self setTitle:@"" forState:UIControlStateNormal]; 30 | self.enabled = NO; 31 | [self addSubview:indicator]; 32 | } 33 | 34 | - (void)hideIndicator { 35 | 36 | NSString *currentButtonText = (NSString *)objc_getAssociatedObject(self, &UIButton_ButtonTextObjectKey); 37 | UIActivityIndicatorView *indicator = (UIActivityIndicatorView *)objc_getAssociatedObject(self, &UIButton_IndicatorViewKey); 38 | 39 | [indicator removeFromSuperview]; 40 | [self setTitle:currentButtonText forState:UIControlStateNormal]; 41 | self.enabled = YES; 42 | 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIButton/UIButton+Submitting.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Submitting.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // https://github.com/foxsofter/FXCategories 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | /** 14 | * @author foxsofter, 15-09-24 10:09:49 15 | * 16 | * @brief 为UIButton添加提交状态,通过ActivityIndicator表示 17 | */ 18 | @interface UIButton (Submitting) 19 | 20 | /** 21 | * @brief 按钮点击后,禁用按钮并居中显示ActivityIndicator 22 | */ 23 | - (void)beginSubmitting; 24 | 25 | /** 26 | * @brief 按钮点击后,禁用按钮并在按钮上显示ActivityIndicator,以及title 27 | * 28 | * @param title 按钮上显示的文字 29 | */ 30 | - (void)beginSubmitting:(NSString * _Nullable)title; 31 | 32 | /** 33 | * @brief 按钮点击后,恢复按钮点击前的状态 34 | */ 35 | - (void)endSubmitting; 36 | 37 | /** 38 | * @brief 按钮是否正在提交中 39 | */ 40 | @property (nonatomic, readonly, getter=isSubmitting) BOOL submitting; 41 | 42 | @end 43 | 44 | NS_ASSUME_NONNULL_END 45 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIButton/UIButton+TouchAreaInsets.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+TouchAreaInsets.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (TouchAreaInsets) 12 | 13 | /** 14 | * @brief 设置按钮额外热区 15 | */ 16 | @property (nonatomic, assign) UIEdgeInsets touchAreaInsets; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIButton/UIButton+TouchAreaInsets.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+TouchAreaInsets.m 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UIButton+TouchAreaInsets.h" 10 | #import 11 | 12 | @implementation UIButton (TouchAreaInsets) 13 | 14 | - (UIEdgeInsets)touchAreaInsets { 15 | return [objc_getAssociatedObject(self, @selector(touchAreaInsets)) UIEdgeInsetsValue]; 16 | } 17 | 18 | - (void)setTouchAreaInsets:(UIEdgeInsets)touchAreaInsets { 19 | NSValue *value = [NSValue valueWithUIEdgeInsets:touchAreaInsets]; 20 | objc_setAssociatedObject(self, @selector(touchAreaInsets), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 21 | } 22 | 23 | - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { 24 | UIEdgeInsets touchAreaInsets = self.touchAreaInsets; 25 | CGRect bounds = self.bounds; 26 | bounds = CGRectMake(bounds.origin.x - touchAreaInsets.left, 27 | bounds.origin.y - touchAreaInsets.top, 28 | bounds.size.width + touchAreaInsets.left + touchAreaInsets.right, 29 | bounds.size.height + touchAreaInsets.top + touchAreaInsets.bottom); 30 | return CGRectContainsPoint(bounds, point); 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UICollectionView/CollectionViewPlaceHolderDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionViewPlaceHolderDelegate.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/27. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | @protocol CollectionViewPlaceHolderDelegate 10 | 11 | @required 12 | /*! 13 | @brief make an empty overlay view when the tableView is empty 14 | @return an empty overlay view 15 | */ 16 | - (UIView *)makePlaceHolderView; 17 | 18 | @optional 19 | /*! 20 | @brief enable collectionView scroll when place holder view is showing, it is disabled by default. 21 | @attention There is no need to return NO, it will be NO by default 22 | @return enable collectionView scroll, you can only return YES 23 | */ 24 | - (BOOL)enableScrollWhenPlaceHolderViewShowing; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UICollectionView/UICollectionView+PlaceHolder.h: -------------------------------------------------------------------------------- 1 | // 2 | // UICollectionView+PlaceHolder.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/27. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UICollectionView (PlaceHolder) 12 | 13 | /** 14 | my_reloadData 替换 reloadData,自动添加或删除 place holder 视图 15 | */ 16 | - (void)my_reloadData; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIColor/UIColor+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+Addition.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIColor (Addition) 12 | 13 | /** 14 | Return a randomColor (just for test UI) 15 | 16 | @return randomColor 17 | */ 18 | + (UIColor *)randomColor; 19 | 20 | /** 21 | * @brief get color from hex string 22 | * 23 | * @param hexStr #RGB #ARGB #RRGGBB #AARRGGBB 24 | * 25 | * @return color 26 | */ 27 | + (UIColor *)colorWithHexString:(NSString *)hexStr; 28 | + (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alphaValue; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIDevice/UIDevice+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIDevice+Addition.h 3 | // FXKitExampleDemo 4 | // 5 | // Created by sunjinshuai on 2017/7/21. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIDevice (Addition) 12 | 13 | /** 14 | 获取UUID 15 | */ 16 | + (NSString *)generateUuidString; 17 | 18 | /** 19 | 设备版本 20 | */ 21 | + (NSString *)deviceModel; 22 | 23 | /** 24 | 手机系统版本 25 | */ 26 | + (NSString *)systemVersion; 27 | 28 | /** 29 | IFV/IDFV (Identifier for Vendor) 30 | */ 31 | + (NSString *)appleIFV; 32 | 33 | /** 34 | 获取当前版本号 35 | */ 36 | + (NSString *)getVersionNumber; 37 | 38 | + (NSString *)platform; 39 | 40 | /** 41 | 获取当前网络运营商的名称 42 | @return 中国移动/中国联通/中国电信或者其他运营商 43 | */ 44 | + (NSString *)getCarrierName; 45 | 46 | /** 47 | 获取当前设备的CPU数量 48 | @return NSUInteger 49 | */ 50 | + (NSUInteger)getCurrentDeviceCPUCount; 51 | 52 | /** 53 | 获取当前设备CPU总的使用百分比 54 | @return CGFloat 55 | */ 56 | + (CGFloat)getCurrentDeviceAllCoreCPUUse; 57 | 58 | /** 59 | 获取当前设备单个CPU使用的百分比 60 | @return NSArray; 61 | */ 62 | + (NSArray *)getCurrentDeviceSingleCoreCPUUse; 63 | 64 | /** 65 | 获取当前设备的单元网络地址 66 | @return NSString 67 | */ 68 | + (NSString *)getCurrentDeviceIPAddressWithCell; 69 | 70 | /** 71 | 获取当前设备的WiFi地址 72 | @return NSString 73 | */ 74 | + (NSString *)getCurrentDeviceIPAddressWithWiFi; 75 | 76 | /** 77 | 获取当前设备的IP地址 78 | 79 | @return NSString 80 | */ 81 | + (NSString *)getCurrentDeviceIPAddresses; 82 | 83 | //Return the current device CPU frequency 84 | + (NSUInteger)cpuFrequency; 85 | // Return the current device BUS frequency 86 | + (NSUInteger)busFrequency; 87 | //current device RAM size 88 | + (NSUInteger)ramSize; 89 | //Return the current device CPU number 90 | + (NSUInteger)cpuNumber; 91 | //Return the current device total memory 92 | + (NSUInteger)totalMemoryBytes; 93 | 94 | @end 95 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIImage/UIImage+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Addition.h 3 | // FXKitExampleDemo 4 | // 5 | // Created by sunjinshuai on 2017/7/19. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIImage (Addition) 14 | 15 | /** 16 | * @brief 根据name获取GIF图片 17 | * 18 | * @param name 图片名称 19 | * 20 | * @return 返回处理后的图片 21 | */ 22 | + (nullable UIImage *)animatedGIFNamed:(NSString *)name; 23 | 24 | /** 25 | * @brief 根据data获取GIF图片 26 | * 27 | * @param data 图片数据流 28 | * 29 | * @return 返回处理后的图片 30 | */ 31 | + (nullable UIImage *)animatedGIFWithData:(NSData *)data; 32 | 33 | /** 34 | * @brief 根据图片路径获取图片 35 | * 36 | * @param imageName 图片路径名称 37 | * 38 | * @return 返回处理后的图片 39 | */ 40 | + (nullable UIImage *)imageNoCacheWithName:(NSString *)imageName; 41 | 42 | @end 43 | 44 | NS_ASSUME_NONNULL_END 45 | 46 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIImage/UIImage+Color.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Color.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Color) 12 | 13 | /** 14 | * @brief 取图片某一点的颜色 15 | * 16 | * @param point 某一点 17 | * 18 | * @return 颜色 19 | */ 20 | - (UIColor *)colorAtPoint:(CGPoint)point; 21 | 22 | /** 23 | * @brief 取某一像素的颜色 24 | * 25 | * @param point 一像素 26 | * 27 | * @return 颜色 28 | */ 29 | - (UIColor *)colorAtPixel:(CGPoint)point; 30 | 31 | /** 32 | * @brief 返回该图片是否有透明度通道 33 | * 34 | * @return 是否有透明度通道 35 | */ 36 | - (BOOL)hasAlphaChannel; 37 | 38 | /** 39 | * @brief 获得灰度图 40 | * 41 | * @param sourceImage 图片 42 | * 43 | * @return 获得灰度图片 44 | */ 45 | + (UIImage *)covertToGrayImageFromImage:(UIImage *)sourceImage; 46 | 47 | /** 48 | * @brief 根据颜色生成图片,默认size为{1.f, 1.f} 49 | * @param color 传入颜色 50 | * @return 返回图片 51 | */ 52 | + (UIImage *)createImageWithColor:(UIColor *)color; 53 | 54 | /** 55 | * @brief 设置图片的透明度 56 | * @param alpha 透明度 57 | * @return 返回处理后的图片 58 | */ 59 | - (UIImage *)imageWithAlpha:(CGFloat)alpha; 60 | 61 | /** 62 | * @brief 设置图片的size 63 | * @return 返回改变size之后的图片 64 | */ 65 | - (UIImage *)resizeTo:(CGSize)size; 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIImage/UIImage+CornerRadius.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+CornerRadius.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/14. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (CornerRadius) 12 | 13 | /** 14 | 将图片进行圆角处理,默认无边框(此操作是线程安全的)。 15 | @param radius 圆角大小 16 | @param newSize 图片将会缩放成的目标大小 17 | @return 返回处理之后的图片 18 | */ 19 | - (nullable UIImage *)imageByRoundCornerRadius:(CGFloat)radius 20 | scaleSize:(CGSize)newSize; 21 | 22 | /** 23 | 将图片进行圆角处理,并加上边框(此操作是线程安全的)。 24 | @param radius 圆角大小 25 | @param newSize 图片将会缩放成的目标大小 26 | @param borderWidth 边框宽度 27 | @param borderColor 边框颜色 28 | @return 返回处理之后的图片 29 | */ 30 | - (nullable UIImage *)imageByRoundCornerRadius:(CGFloat)radius 31 | scaleSize:(CGSize)newSize 32 | borderWidth:(CGFloat)borderWidth 33 | borderColor:(nullable UIColor *)borderColor; 34 | 35 | /** 36 | 图片加上圆形边框,图片必须得是正方形的,否则直接返回未加边框的原图片(此操作是线程安全的) 37 | @param color 边框颜色 38 | @param width 边框宽度 39 | @return 返回处理之后的图片 40 | */ 41 | - (nullable UIImage *)imageByRoundBorderedColor:(nullable UIColor *)color 42 | borderWidth:(CGFloat)width; 43 | 44 | /** 45 | 创建一张纯色的圆形图片 46 | @param color 图片填充的颜色 47 | @param radius 圆形图片的半径 48 | @return 返回纯色的圆形图片 49 | */ 50 | + (nullable UIImage *)roundImageWithColor:(nullable UIColor *)color 51 | radius:(CGFloat)radius; 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIImage/UIImage+ImageEffects.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+ImageEffects.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/27. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (ImageEffects) 12 | 13 | /** 14 | * Get blured image. 15 | * 16 | * @return Blured image. 17 | */ 18 | - (UIImage *)blurImage; 19 | 20 | /** 21 | * Get the blured image masked by another image. 22 | * 23 | * @param maskImage Image used for mask. 24 | * 25 | * @return the Blured image. 26 | */ 27 | - (UIImage *)blurImageWithMask:(UIImage *)maskImage; 28 | 29 | /** 30 | * Get blured image and you can set the blur radius. 31 | * 32 | * @param radius Blur radius. 33 | * 34 | * @return Blured image. 35 | */ 36 | - (UIImage *)blurImageWithRadius:(CGFloat)radius; 37 | 38 | /** 39 | * Get blured image at specified frame. 40 | * 41 | * @param frame The specified frame that you use to blur. 42 | * 43 | * @return Blured image. 44 | */ 45 | - (UIImage *)blurImageAtFrame:(CGRect)frame; 46 | 47 | #pragma mark - Grayscale Image 48 | 49 | /** 50 | * Get grayScale image. 51 | * 52 | * @return GrayScaled image. 53 | */ 54 | - (UIImage *)grayScale; 55 | 56 | #pragma mark - Some Useful Method 57 | 58 | /** 59 | * Scale image with fixed width. 60 | * 61 | * @param width The fixed width you give. 62 | * 63 | * @return Scaled image. 64 | */ 65 | - (UIImage *)scaleWithFixedWidth:(CGFloat)width; 66 | 67 | /** 68 | * Scale image with fixed height. 69 | * 70 | * @param height The fixed height you give. 71 | * 72 | * @return Scaled image. 73 | */ 74 | - (UIImage *)scaleWithFixedHeight:(CGFloat)height; 75 | 76 | /** 77 | * Get the image average color. 78 | * 79 | * @return Average color from the image. 80 | */ 81 | - (UIColor *)averageColor; 82 | 83 | /** 84 | * Get cropped image at specified frame. 85 | * 86 | * @param frame The specified frame that you use to crop. 87 | * 88 | * @return Cropped image 89 | */ 90 | - (UIImage *)croppedImageAtFrame:(CGRect)frame; 91 | 92 | @end 93 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIImageView/UIImageView+CornerRadius.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+CornerRadius.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImageView (CornerRadius) 12 | 13 | @property (nonatomic, assign) CGFloat myCornerRadius; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIImageView/UIImageView+RectCorner.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+RectCorner.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/20. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImageView (RectCorner) 12 | 13 | - (instancetype)initWithCornerRadiusAdvance:(CGFloat)cornerRadius 14 | rectCornerType:(UIRectCorner)rectCornerType; 15 | 16 | - (void)cornerRadiusAdvance:(CGFloat)cornerRadius rectCornerType:(UIRectCorner)rectCornerType; 17 | 18 | - (instancetype)initWithRoundingRectImageView; 19 | 20 | - (void)cornerRadiusRoundingRect; 21 | 22 | - (void)attachBorderWidth:(CGFloat)width color:(UIColor *)color; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UILabel/UILabel+CountDown.h: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+CountDown.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UILabel (CountDown) 12 | 13 | /** 14 | 倒计时 15 | 16 | @param timeInterval 倒计时时长 17 | @param text 倒计时内容 18 | @param completion 倒计时之后回调 19 | */ 20 | - (void)scheduledTimerWithTimeInterval:(NSInteger)timeInterval 21 | countDownText:(NSString *)text 22 | completion:(void (^)(UILabel *countDownLabel))completion; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UILabel/UILabel+CountDown.m: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+CountDown.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UILabel+CountDown.h" 10 | 11 | @implementation UILabel (CountDown) 12 | 13 | - (void)scheduledTimerWithTimeInterval:(NSInteger)timeInterval 14 | countDownText:(NSString *)text 15 | completion:(void (^)(UILabel *countDownLabel))completion { 16 | // 倒计时时间 17 | __block NSInteger timeOut = timeInterval; 18 | dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 19 | dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); 20 | // 每秒执行一次 21 | dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0); 22 | dispatch_source_set_event_handler(_timer, ^{ 23 | 24 | // 倒计时结束,关闭 25 | if (timeOut <= 0) { 26 | dispatch_source_cancel(_timer); 27 | dispatch_async(dispatch_get_main_queue(), ^{ 28 | self.userInteractionEnabled = YES; 29 | if (completion) { 30 | completion(self); 31 | } 32 | }); 33 | } else { 34 | int allTime = (int)timeInterval + 1; 35 | int timeInterval = timeOut % allTime; 36 | NSString *timeStr = [NSString stringWithFormat:@"%d", timeInterval]; 37 | dispatch_async(dispatch_get_main_queue(), ^{ 38 | [self setText:[NSString stringWithFormat:@"%@%@", timeStr, text]]; 39 | self.userInteractionEnabled = NO; 40 | }); 41 | timeOut--; 42 | } 43 | }); 44 | 45 | dispatch_resume(_timer); 46 | } 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UILabel/UILabel+LineSpacing.h: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+LineSpacing.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/20. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | 此分类适合Label文本指定的行数,行间距等 13 | */ 14 | @interface UILabel (LineSpacing) 15 | 16 | // 请不要将属性名称取为lineSpacing,UILabel已有此隐藏属性。 17 | @property (nonatomic, assign) CGFloat lineSpace; 18 | 19 | + (void)registerLineSpacingSelector; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UILabel/UILabel+LineSpacing.m: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+LineSpacing.m 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/20. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UILabel+LineSpacing.h" 10 | #import "NSObject+Swizzle.h" 11 | #import "NSString+Size.h" 12 | 13 | @implementation UILabel (LineSpacing) 14 | 15 | static char *lineSpaceKey; 16 | 17 | + (void)registerLineSpacingSelector { 18 | 19 | // 防御对象实例方法 20 | [self instanceSwizzleMethod:@selector(setText:) replaceMethod:@selector(setHasLineSpaceText:)]; 21 | } 22 | 23 | // 设置带有行间距的文本。 24 | - (void)setHasLineSpaceText:(NSString *)text { 25 | 26 | if (!text.length || self.lineSpace == 0) { 27 | [self setHasLineSpaceText:text]; 28 | return; 29 | } 30 | 31 | NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; 32 | paragraphStyle.lineSpacing = self.lineSpace - (self.font.lineHeight - self.font.pointSize); 33 | paragraphStyle.lineBreakMode = self.lineBreakMode; 34 | NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; 35 | [attributes setObject:paragraphStyle forKey:NSParagraphStyleAttributeName]; 36 | self.attributedText = [[NSAttributedString alloc] initWithString:text attributes:attributes]; 37 | } 38 | 39 | - (void)setLineSpace:(CGFloat)lineSpace { 40 | 41 | objc_setAssociatedObject(self, &lineSpaceKey, @(lineSpace), OBJC_ASSOCIATION_ASSIGN); 42 | self.text = self.text; 43 | } 44 | 45 | - (CGFloat)lineSpace { 46 | return [objc_getAssociatedObject(self, &lineSpaceKey) floatValue]; 47 | } 48 | 49 | @end 50 | 51 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UINavigationBar/UINavigationBar+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationBar+Addition.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/22. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationBar (Addition) 12 | 13 | /** 14 | 设置导航栏所有BarButtonItem的透明度 15 | */ 16 | - (void)setBarButtonItemsAlpha:(CGFloat)alpha hasSystemBackIndicator:(BOOL)hasSystemBackIndicator; 17 | 18 | /** 19 | 设置Bar偏移 20 | @param translationY 偏移量 21 | */ 22 | - (void)setTranslationY:(CGFloat)translationY; 23 | 24 | /** 25 | 获取当前导航栏在垂直方向上偏移了多少 26 | */ 27 | - (CGFloat)getTranslationY; 28 | 29 | /** 30 | * 隐藏导航栏下面的分割线 31 | */ 32 | - (void)hideBottomHairline; 33 | 34 | /** 35 | * 显示导航栏下面的分割线 36 | */ 37 | - (void)showBottomHairline; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UINavigationController/UINavigationController+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+Addition.h 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationController (Addition) 12 | 13 | /** 14 | * @brief 寻找Navigation中的某个viewcontroler对象 15 | * 16 | * @param className viewcontroler名称 17 | * 18 | * @return viewcontroler对象 19 | */ 20 | - (id)findViewController:(NSString *)className; 21 | 22 | /** 23 | * @brief 判断是否只有一个RootViewController 24 | * 25 | * @return 是否只有一个RootViewController 26 | */ 27 | - (BOOL)isOnlyContainRootViewController; 28 | 29 | /** 30 | * @brief RootViewController 31 | * 32 | * @return RootViewController 33 | */ 34 | - (UIViewController *)rootViewController; 35 | 36 | /** 37 | * @brief 返回指定的viewcontroler 38 | * 39 | * @param className 指定viewcontroler类名 40 | * @param animated 是否动画 41 | * 42 | * @return pop之后的viewcontrolers 43 | */ 44 | - (NSArray *)popToViewControllerWithClassName:(NSString *)className 45 | animated:(BOOL)animated; 46 | 47 | /** 48 | * @brief pop n层 49 | * 50 | * @param level n层 51 | * @param animated 是否动画 52 | * 53 | * @return pop之后的viewcontrolers 54 | */ 55 | - (NSArray *)popToViewControllerWithLevel:(NSInteger)level animated:(BOOL)animated; 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UINavigationController/UINavigationController+Addition.m: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+Addition.m 3 | // MYUtils 4 | // 5 | // Created by sunjinshuai on 2017/8/28. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UINavigationController+Addition.h" 10 | 11 | @implementation UINavigationController (Addition) 12 | 13 | - (id)findViewController:(NSString *)className { 14 | for (UIViewController *viewController in self.viewControllers) { 15 | if ([viewController isKindOfClass:NSClassFromString(className)]) { 16 | return viewController; 17 | } 18 | } 19 | 20 | return nil; 21 | } 22 | 23 | - (BOOL)isOnlyContainRootViewController { 24 | if (self.viewControllers && 25 | self.viewControllers.count == 1) { 26 | return YES; 27 | } 28 | return NO; 29 | } 30 | 31 | - (UIViewController *)rootViewController { 32 | if (self.viewControllers && [self.viewControllers count] >0) { 33 | return [self.viewControllers firstObject]; 34 | } 35 | return nil; 36 | } 37 | 38 | - (NSArray *)popToViewControllerWithClassName:(NSString *)className 39 | animated:(BOOL)animated { 40 | return [self popToViewController:[self findViewController:className] animated:YES]; 41 | } 42 | 43 | - (NSArray *)popToViewControllerWithLevel:(NSInteger)level animated:(BOOL)animated { 44 | NSInteger viewControllersCount = self.viewControllers.count; 45 | if (viewControllersCount > level) { 46 | NSInteger idx = viewControllersCount - level - 1; 47 | UIViewController *viewController = self.viewControllers[idx]; 48 | return [self popToViewController:viewController animated:animated]; 49 | } else { 50 | return [self popToRootViewControllerAnimated:animated]; 51 | } 52 | } 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UINavigationController/UINavigationController+BackButtonHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+BackButtonHandler.h 3 | // MYKitDemo 4 | // 5 | // Created by michael on 2018/12/15. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol BackButtonHandlerProtocol 12 | @optional 13 | // 重写下面的方法以拦截导航栏返回按钮点击事件,返回 YES 则 pop,NO 则不 pop 14 | - (BOOL)navigationShouldPopOnBackButton; 15 | @end 16 | 17 | @interface UIViewController (ShouldPopOnBackButton) 18 | 19 | @end 20 | 21 | @interface UINavigationController (BackButtonHandler) 22 | 23 | - (BOOL)navigationBar:(UINavigationBar *)navigationBar 24 | shouldPopItem:(UINavigationItem *)item; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UINavigationController/UINavigationController+BackButtonHandler.m: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+BackButtonHandler.m 3 | // MYKitDemo 4 | // 5 | // Created by michael on 2018/12/15. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UINavigationController+BackButtonHandler.h" 10 | 11 | @implementation UIViewController (ShouldPopOnBackButton) 12 | 13 | @end 14 | 15 | @implementation UINavigationController (BackButtonHandler) 16 | 17 | - (BOOL)navigationBar:(UINavigationBar *)navigationBar 18 | shouldPopItem:(UINavigationItem *)item { 19 | if ([self.viewControllers count] < [navigationBar.items count]) { 20 | return YES; 21 | } 22 | 23 | BOOL shouldPop = YES; 24 | UIViewController *vc = [self topViewController]; 25 | if ([vc respondsToSelector:@selector(navigationShouldPopOnBackButton)]) { 26 | shouldPop = [vc navigationShouldPopOnBackButton]; 27 | } 28 | 29 | if (shouldPop) { 30 | dispatch_async(dispatch_get_main_queue(), ^{ 31 | [self popViewControllerAnimated:YES]; 32 | }); 33 | } else { 34 | // 取消 pop 后,复原返回按钮的状态 35 | for (UIView *subview in [navigationBar subviews]) { 36 | if(0. < subview.alpha && subview.alpha < 1.) { 37 | [UIView animateWithDuration:.25 animations:^{ 38 | subview.alpha = 1.; 39 | }]; 40 | } 41 | } 42 | } 43 | return NO; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UINavigationItem/UINavigationItem+Loading.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationItem+Loading.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | * Position to show UIActivityIndicatorView in a navigation bar 13 | */ 14 | typedef NS_ENUM(NSUInteger, ANNavBarLoaderPosition){ 15 | /** 16 | * Will show UIActivityIndicatorView in place of title view 17 | */ 18 | ANNavBarLoaderPositionCenter = 0, 19 | /** 20 | * Will show UIActivityIndicatorView in place of left item 21 | */ 22 | ANNavBarLoaderPositionLeft, 23 | /** 24 | * Will show UIActivityIndicatorView in place of right item 25 | */ 26 | ANNavBarLoaderPositionRight 27 | }; 28 | 29 | @interface UINavigationItem (Loading) 30 | 31 | /** 32 | * Add UIActivityIndicatorView to view hierarchy and start animating immediately 33 | * 34 | * @param position Left, center or right 35 | */ 36 | - (void)startAnimatingAt:(ANNavBarLoaderPosition)position; 37 | 38 | /** 39 | * Stop animating, remove UIActivityIndicatorView from view hierarchy and restore item 40 | */ 41 | - (void)stopAnimating; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UINavigationItem/UINavigationItem+Margin.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationItem+Margin.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // https://github.com/devxoul/UINavigationItem-Margin 8 | 9 | #import 10 | 11 | FOUNDATION_EXPORT double UINavigationItem_MarginVersionNumber; 12 | FOUNDATION_EXPORT const unsigned char UINavigationItem_MarginVersionString[]; 13 | 14 | @interface UINavigationItem (Margin) 15 | 16 | @property (nonatomic, assign) CGFloat leftMargin; 17 | @property (nonatomic, assign) CGFloat rightMargin; 18 | 19 | + (CGFloat)systemMargin; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIResponder/UIResponder+Chain.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+Chain.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIResponder (Chain) 12 | 13 | /** 14 | * @brief 响应者链 15 | * 16 | * @return 响应者链 17 | */ 18 | - (NSString *)responderChainDescription; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIResponder/UIResponder+Chain.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+Chain.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UIResponder+Chain.h" 10 | 11 | @implementation UIResponder (Chain) 12 | 13 | - (NSString *)responderChainDescription 14 | { 15 | NSMutableArray *responderChainStrings = [NSMutableArray array]; 16 | [responderChainStrings addObject:[self class]]; 17 | UIResponder *nextResponder = self; 18 | while ((nextResponder = [nextResponder nextResponder])) { 19 | [responderChainStrings addObject:[nextResponder class]]; 20 | } 21 | __block NSString *returnString = @"Responder Chain:\n"; 22 | __block int tabCount = 0; 23 | [responderChainStrings enumerateObjectsWithOptions:NSEnumerationReverse 24 | usingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 25 | if (tabCount) { 26 | returnString = [returnString stringByAppendingString:@"|"]; 27 | for (int i = 0; i < tabCount; i++) { 28 | returnString = [returnString stringByAppendingString:@"----"]; 29 | } 30 | returnString = [returnString stringByAppendingString:@" "]; 31 | } 32 | else { 33 | returnString = [returnString stringByAppendingString:@"| "]; 34 | } 35 | returnString = [returnString stringByAppendingFormat:@"%@ (%@)\n", obj, @(idx)]; 36 | tabCount++; 37 | }]; 38 | return returnString; 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIResponder/UIResponder+Router.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+Router.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIResponder (Router) 12 | 13 | /** 14 | * 发送一个路由器消息, 对eventName感兴趣的 UIResponsder 可以对消息进行处理 15 | * 16 | * @param eventName 发生的事件名称 17 | * @param userInfo 传递消息时, 携带的数据, 数据传递过程中, 会有新的数据添加 18 | * 19 | */ 20 | - (void)routerEventWithName:(NSString *)eventName userInfo:(NSDictionary *)userInfo; 21 | 22 | @end 23 | 24 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIResponder/UIResponder+Router.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+Router.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UIResponder+Router.h" 10 | 11 | @implementation UIResponder (Router) 12 | 13 | - (void)routerEventWithName:(NSString *)eventName userInfo:(NSDictionary *)userInfo 14 | { 15 | [[self nextResponder] routerEventWithName:eventName userInfo:userInfo]; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIScreen/UIScreen+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScreen+Addition.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/11/18. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScreen (Addition) 12 | 13 | /** 14 | * @brief 主屏幕的bounds 15 | * 16 | * @return bounds 17 | */ 18 | + (CGRect)bounds; 19 | 20 | /** 21 | * @brief 主屏幕的size 22 | * 23 | * @return size 24 | */ 25 | + (CGSize)size; 26 | 27 | /** 28 | * @brief 主屏幕的width 29 | * 30 | * @return width 31 | */ 32 | + (CGFloat)width; 33 | 34 | /** 35 | * @brief 主屏幕的height 36 | * 37 | * @return height 38 | */ 39 | + (CGFloat)height; 40 | 41 | /** 42 | * @brief 比例 43 | * 44 | * @return scale 45 | */ 46 | + (CGFloat)scale; 47 | 48 | /** 49 | * @brief 当前屏幕的size 50 | */ 51 | @property (nonatomic, readonly) CGSize size; 52 | 53 | /** 54 | * @brief 当前屏幕的width 55 | */ 56 | @property (nonatomic, readonly) CGFloat width; 57 | 58 | /** 59 | * @brief 当前屏幕的height 60 | */ 61 | @property (nonatomic, readonly) CGFloat height; 62 | 63 | /** 64 | * @brief 状态栏的高度 65 | * 66 | * @return CGFloat 67 | */ 68 | + (CGFloat)statusBarHeight; 69 | 70 | /** 71 | * @brief 导航栏的高度 72 | * 73 | * @return CGFloat 74 | */ 75 | + (CGFloat)navigationBarHeight; 76 | 77 | /** 78 | * @brief tab菜单的高度 79 | * 80 | * @return CGFloat 81 | */ 82 | + (CGFloat)tabBarHeight; 83 | 84 | + (CGFloat)ceilPixelValue:(CGFloat)pixelValue; 85 | 86 | + (CGFloat)roundPixelValu:(CGFloat)pixelValue; 87 | 88 | + (CGFloat)floorPixelValue:(CGFloat)pixelValue; 89 | 90 | + (CGFloat)pixelResize:(CGFloat)value; 91 | 92 | + (CGRect)pixelFrameResize:(CGRect)value; 93 | 94 | + (CGPoint)pixelPointResize:(CGPoint)value; 95 | 96 | + (CGFloat)screenResizeScale; 97 | 98 | + (CGFloat)screenHeightResizeScale; 99 | 100 | @end 101 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIScrollView/UIScrollView+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+Addition.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/12/29. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (Addition) 12 | 13 | /** 14 | * @brief get contentOffset.x 15 | */ 16 | @property (nonatomic) CGFloat contentOffsetX; 17 | 18 | /** 19 | * @brief get contentOffset.y 20 | */ 21 | @property (nonatomic) CGFloat contentOffsetY; 22 | 23 | /** 24 | * @brief get contentSize.width 25 | */ 26 | @property (nonatomic) CGFloat contentSizeWidth; 27 | 28 | /** 29 | * @brief get contentSize.height 30 | */ 31 | @property (nonatomic) CGFloat contentSizeHeight; 32 | 33 | /** 34 | * @brief get contentInset.top 35 | */ 36 | @property (nonatomic) CGFloat contentInsetTop; 37 | 38 | /** 39 | * @brief get contentInset.left 40 | */ 41 | @property (nonatomic) CGFloat contentInsetLeft; 42 | 43 | /** 44 | * @brief get contentInset.bottom 45 | */ 46 | @property (nonatomic) CGFloat contentInsetBottom; 47 | 48 | /** 49 | * @brief get contentInset.right 50 | */ 51 | @property (nonatomic) CGFloat contentInsetRight; 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UITableView/TableViewPlaceHolderDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // TableViewPlaceHolderDelegate.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/27. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | @protocol TableViewPlaceHolderDelegate 10 | 11 | @required 12 | /*! 13 | @brief make an empty overlay view when the tableView is empty 14 | @return an empty overlay view 15 | */ 16 | - (UIView *)makePlaceHolderView; 17 | 18 | @optional 19 | /*! 20 | @brief enable tableView scroll when place holder view is showing, it is disabled by default. 21 | @attention There is no need to return NO, it will be NO by default 22 | @return enable tableView scroll, you can only return YES 23 | */ 24 | - (BOOL)enableScrollWhenPlaceHolderViewShowing; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UITableView/UITableView+PlaceHolder.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+PlaceHolder.h 3 | // MYKitDemo 4 | // 5 | // Created by QMMac on 2018/7/27. 6 | // Copyright © 2018 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITableView (PlaceHolder) 12 | 13 | /** 14 | my_reloadData 替换 reloadData,自动添加或删除 place holder 视图 15 | */ 16 | - (void)my_reloadData; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UITextField/UITextField+InputLimit.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+InputLimit.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/7. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextField (InputLimit) 12 | 13 | @property (nonatomic, assign) NSInteger maxLength;//if <=0, no limit 14 | 15 | @end 16 | 17 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UITextField/UITextField+InputLimit.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+InputLimit.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/7. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UITextField+InputLimit.h" 10 | #import 11 | 12 | static const void *TextFieldInputLimitMaxLength = &TextFieldInputLimitMaxLength; 13 | 14 | @implementation UITextField (InputLimit) 15 | 16 | - (NSInteger)maxLength { 17 | return [objc_getAssociatedObject(self, TextFieldInputLimitMaxLength) integerValue]; 18 | } 19 | 20 | - (void)setMaxLength:(NSInteger)maxLength { 21 | objc_setAssociatedObject(self, TextFieldInputLimitMaxLength, @(maxLength), OBJC_ASSOCIATION_ASSIGN); 22 | [self addTarget:self 23 | action:@selector(textFieldTextDidChange) 24 | forControlEvents:UIControlEventEditingChanged]; 25 | } 26 | 27 | - (void)textFieldTextDidChange { 28 | NSString *toBeString = self.text; 29 | // 获取高亮部分 30 | UITextRange *selectedRange = [self markedTextRange]; 31 | UITextPosition *position = [self positionFromPosition:selectedRange.start offset:0]; 32 | 33 | // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 34 | // 在iOS7下,position对象总是不为nil 35 | if ((!position ||!selectedRange) && (self.maxLength > 0 && toBeString.length > self.maxLength)) { 36 | NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:self.maxLength]; 37 | if (rangeIndex.length == 1) { 38 | self.text = [toBeString substringToIndex:self.maxLength]; 39 | } else { 40 | NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, self.maxLength)]; 41 | NSInteger tmpLength; 42 | if (rangeRange.length > self.maxLength) { 43 | tmpLength = rangeRange.length - rangeIndex.length; 44 | } else { 45 | tmpLength = rangeRange.length; 46 | } 47 | self.text = [toBeString substringWithRange:NSMakeRange(0, tmpLength)]; 48 | } 49 | } 50 | } 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UITextView/UITextView+InputLengthCalculate.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+InputLengthCalculate.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/7. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 用于计算textview输入情况下的字符数,解决实现限制字符数时,计算不准的问题 8 | 9 | #import 10 | 11 | @interface UITextView (InputLengthCalculate) 12 | 13 | /* 14 | - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 15 | { 16 | NSInteger textLength = [textView getInputLengthWithText:text]; 17 | if (textLength > 20) { 18 | //超过20个字可以删除 19 | if ([text isEqualToString:@""]) { 20 | return YES; 21 | } 22 | return NO; 23 | } 24 | return YES; 25 | } 26 | 27 | - (void)textViewDidChange:(UITextView *)textView 28 | { 29 | if ([textView getInputLengthWithText:nil] > 20) { 30 | textView.text = [textView.text substringToIndex:20]; 31 | } 32 | } 33 | 34 | */ 35 | 36 | /** 37 | * 用来捕获输入时的字符数的 38 | * 39 | * @param text 40 | 在-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text使用时需要传入replacementText用于计算长度,- (void)textViewDidChange:(UITextView *)textView中使用不需要传入 41 | * 42 | * @return 字符长度 43 | */ 44 | - (NSInteger)getInputLengthWithText:(NSString *)text; 45 | 46 | - (void)insertAttributedText:(NSAttributedString *)text; 47 | - (void)insertAttributedText:(NSAttributedString *)text 48 | settingBlock:(void (^)(NSMutableAttributedString *attributedText))settingBlock; 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UITextView/UITextView+InputLengthCalculate.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+InputLengthCalculate.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/7. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UITextView+InputLengthCalculate.h" 10 | 11 | @implementation UITextView (InputLengthCalculate) 12 | 13 | - (NSInteger)getInputLengthWithText:(NSString *)text { 14 | NSInteger textLength = 0; 15 | //获取高亮部分 16 | UITextRange *selectedRange = [self markedTextRange]; 17 | if (selectedRange) { 18 | NSString *newText = [self textInRange:selectedRange]; 19 | textLength = (newText.length + 1) / 2 + [self offsetFromPosition:self.beginningOfDocument toPosition:selectedRange.start] + text.length; 20 | } else { 21 | textLength = self.text.length + text.length; 22 | } 23 | return textLength; 24 | } 25 | 26 | - (void)insertAttributedText:(NSAttributedString *)text { 27 | [self insertAttributedText:text settingBlock:nil]; 28 | } 29 | 30 | - (void)insertAttributedText:(NSAttributedString *)text 31 | settingBlock:(void (^)(NSMutableAttributedString *))settingBlock { 32 | NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] init]; 33 | // 拼接之前的文字(图片和普通文字) 34 | [attributedText appendAttributedString:self.attributedText]; 35 | 36 | // 拼接其他文字 37 | NSUInteger loc = self.selectedRange.location; 38 | [attributedText replaceCharactersInRange:self.selectedRange withAttributedString:text]; 39 | 40 | // 调用外面传进来的代码 41 | if (settingBlock) { 42 | settingBlock(attributedText); 43 | } 44 | 45 | self.attributedText = attributedText; 46 | 47 | // 移除光标到表情的后面 48 | self.selectedRange = NSMakeRange(loc + 1, 0); 49 | } 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UITextView/UITextView+Select.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+Select.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/7. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextView (Select) 12 | 13 | /** 14 | * @brief 当前选中的字符串范围 15 | * 16 | * @return NSRange 17 | */ 18 | - (NSRange)selectedRange; 19 | /** 20 | * @brief 选中所有文字 21 | */ 22 | - (void)selectAllText; 23 | /** 24 | * @brief 选中指定范围的文字 25 | * 26 | * @param range NSRange范围 27 | */ 28 | - (void)setSelectedRange:(NSRange)range; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UITextView/UITextView+Select.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+Select.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/7. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UITextView+Select.h" 10 | 11 | @implementation UITextView (Select) 12 | 13 | /** 14 | * @brief 当前选中的字符串范围 15 | * 16 | * @return NSRange 17 | */ 18 | - (NSRange)selectedRange { 19 | UITextPosition* beginning = self.beginningOfDocument; 20 | 21 | UITextRange* selectedRange = self.selectedTextRange; 22 | UITextPosition* selectionStart = selectedRange.start; 23 | UITextPosition* selectionEnd = selectedRange.end; 24 | 25 | NSInteger location = [self offsetFromPosition:beginning toPosition:selectionStart]; 26 | NSInteger length = [self offsetFromPosition:selectionStart toPosition:selectionEnd]; 27 | 28 | return NSMakeRange(location, length); 29 | } 30 | /** 31 | * @brief 选中所有文字 32 | */ 33 | - (void)selectAllText { 34 | UITextRange *range = [self textRangeFromPosition:self.beginningOfDocument toPosition:self.endOfDocument]; 35 | [self setSelectedTextRange:range]; 36 | } 37 | /** 38 | * @brief 选中指定范围的文字 39 | * 40 | * @param range NSRange范围 41 | */ 42 | - (void)setSelectedRange:(NSRange)range { 43 | UITextPosition *beginning = self.beginningOfDocument; 44 | UITextPosition *startPosition = [self positionFromPosition:beginning offset:range.location]; 45 | UITextPosition *endPosition = [self positionFromPosition:beginning offset:NSMaxRange(range)]; 46 | UITextRange *selectionRange = [self textRangeFromPosition:startPosition toPosition:endPosition]; 47 | [self setSelectedTextRange:selectionRange]; 48 | } 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIView/UIView+Addition.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Addition.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/12/29. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSInteger, MYGradientDirection) { 12 | MYGradientDirectionTopLeft = 0, 13 | MYGradientDirectionTop = 1, 14 | MYGradientDirectionLeft = 2, 15 | }; 16 | 17 | @interface UIView (Addition) 18 | 19 | - (void)setGradientBackgroundColors:(NSArray *)colorArray direction:(MYGradientDirection)direction; 20 | 21 | - (void)setGradientBackgroundColors:(NSArray *)colorArray; 22 | 23 | - (void)setGradientBackgroundColorFrom:(UIColor *)fromColor toColor:(UIColor *)toColor; 24 | 25 | /*! 26 | * @method snapshotImage 27 | * 截取view 28 | */ 29 | - (UIImage *)snapshotImage; 30 | 31 | /*! 32 | * @method snapshotImageInRect: 33 | * 截取view中rect范围的视图 34 | */ 35 | - (UIImage *)snapshotImageInRect:(CGRect)rect; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIView/UIView+Badge.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Badge.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/12/29. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIView (Badge) 14 | 15 | /** 16 | 添加一个红点 17 | 18 | @param radius 圆角半径 19 | @param offsetX x 20 | @param offsetY y 21 | */ 22 | - (void)addBadgeWithRadius:(CGFloat)radius 23 | offsetX:(CGFloat)offsetX 24 | offsetY:(CGFloat)offsetY; 25 | 26 | /** 27 | 显示一个红点 28 | 29 | @param radius 圆角半径 30 | @param offsetX x 31 | @param offsetY y 32 | */ 33 | - (void)showBadgeWithRadius:(CGFloat)radius 34 | offsetX:(CGFloat)offsetX 35 | offsetY:(CGFloat)offsetY; 36 | 37 | 38 | /** 39 | 显示带数字的红点 40 | 41 | @param badgeValue 数字 42 | @param offsetX x 43 | @param offsetY y 44 | */ 45 | - (void)showBadgeValue:(NSString *)badgeValue 46 | offsetX:(CGFloat)offsetX 47 | offsetY:(CGFloat)offsetY; 48 | 49 | /** 50 | 显示 51 | */ 52 | - (void)showBadge; 53 | 54 | /** 55 | 隐藏 56 | */ 57 | - (void)hiddenBadge; 58 | 59 | @end 60 | 61 | NS_ASSUME_NONNULL_END 62 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIView/UIView+CornerRadii.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+CornerRadii.h 3 | // LPDCrowdsource 4 | // 5 | // Created by eMr.Wang on 16/1/29. 6 | // Copyright © 2016年 elm. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIView (CornerRadii) 14 | 15 | /** 16 | 快速切圆角,带边框、边框颜色 17 | 18 | @param roundingCorners 圆角样式 19 | @param cornerRadii 圆角角度 20 | */ 21 | - (void)setCornerRadii:(CGFloat)cornerRadii 22 | roundingCorners:(UIRectCorner)roundingCorners; 23 | 24 | /** 25 | 快速切圆角,带边框、边框颜色 26 | 27 | @param roundingCorners 圆角样式 28 | @param cornerRadii 圆角角度 29 | @param borderWidth 边线宽度 30 | @param borderColor 边线颜色 31 | */ 32 | - (void)setCornerRadii:(CGFloat)cornerRadii 33 | roundingCorners:(UIRectCorner)roundingCorners 34 | borderWidth:(CGFloat)borderWidth 35 | borderColor:(UIColor *)borderColor; 36 | 37 | @end 38 | 39 | NS_ASSUME_NONNULL_END 40 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIView/UIView+CornerRadii.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+CornerRadii.m 3 | // LPDCrowdsource 4 | // 5 | // Created by eMr.Wang on 16/1/29. 6 | // Copyright © 2016年 elm. All rights reserved. 7 | // 8 | 9 | #import "UIView+CornerRadii.h" 10 | 11 | @implementation UIView (CornerRadii) 12 | 13 | - (void)setCornerRadii:(CGFloat)cornerRadii roundingCorners:(UIRectCorner)roundingCorners { 14 | return [self setCornerRadii:cornerRadii roundingCorners:roundingCorners borderWidth:0 borderColor:[UIColor whiteColor]]; 15 | } 16 | 17 | - (void)setCornerRadii:(CGFloat)cornerRadii roundingCorners:(UIRectCorner)roundingCorners borderWidth:(CGFloat)borderWidth 18 | borderColor:(UIColor *)borderColor { 19 | if (self.layer.mask) { 20 | self.layer.mask = nil; 21 | } 22 | self.layer.masksToBounds = YES; 23 | UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds 24 | byRoundingCorners:roundingCorners 25 | cornerRadii:CGSizeMake(cornerRadii, cornerRadii)]; 26 | CAShapeLayer *maskLayer = [CAShapeLayer layer]; 27 | maskLayer.frame = self.bounds; 28 | maskLayer.path = maskPath.CGPath; 29 | self.layer.mask = maskLayer; 30 | 31 | CAShapeLayer *borderLayer = [CAShapeLayer layer]; 32 | borderLayer.path = maskPath.CGPath; 33 | borderLayer.fillColor = [UIColor clearColor].CGColor; 34 | borderLayer.strokeColor = borderColor.CGColor; 35 | borderLayer.lineWidth = borderWidth; 36 | borderLayer.frame = self.bounds; 37 | 38 | [self.layer addSublayer:borderLayer]; 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIView/UIView+FindSubView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+FindSubView.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/11/18. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (FindSubView) 12 | 13 | /** 14 | * 判断两个view是否重叠 15 | */ 16 | + (BOOL)intersectsWithOtherView:(UIView *)otherView anotherView:(UIView *)anotherView; 17 | 18 | /** 19 | * @brief find all subviews 20 | * 21 | * @param cls class of subview 22 | */ 23 | - (NSArray *)subviewsWithClass:(Class)cls; 24 | 25 | /** 26 | * 判断self和view是否重叠 27 | */ 28 | - (BOOL)intersectsWithView:(UIView *)view; 29 | 30 | /** 31 | * 查找两个子视图的共同父视图 32 | */ 33 | + (NSArray *)findCommonSuperView:(UIView *)viewOne other:(UIView *)viewOther; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIView/UIView+Gesture.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Gesture.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^GestureActionBlock)(UIGestureRecognizer *gestureRecoginzer); 12 | 13 | @interface UIView (Gesture) 14 | 15 | /** 16 | * @brief 添加tap手势 17 | * 18 | * @param block 代码块 19 | */ 20 | - (void)addTapActionWithBlock:(GestureActionBlock)block; 21 | 22 | /** 23 | * @brief 添加长按手势 24 | * 25 | * @param block 代码块 26 | */ 27 | - (void)addLongPressActionWithBlock:(GestureActionBlock)block; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIView/UIView+Line.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Line.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/11/18. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Line) 12 | 13 | /** 14 | * 划各种线 和分割线 15 | */ 16 | - (CAShapeLayer *)addBezierLine:(UIBezierPath *)bezierLine color:(UIColor *)lineColor; 17 | 18 | - (CAShapeLayer *)addDottedLine:(CGPoint)startLine endPoint:(CGPoint)endPoint color:(UIColor *)lineColor; 19 | 20 | - (CAShapeLayer *)addLine:(CGPoint)startLine endPoint:(CGPoint)endPoint color:(UIColor *)lineColor; 21 | 22 | - (CAShapeLayer *)addLine:(CGPoint)startLine endPoint:(CGPoint)endPoint lineWidth:(CGFloat)lineWidth color:(UIColor *)lineColor; 23 | 24 | - (CAShapeLayer *)addCornerRadius:(CGFloat)cornerRadius; 25 | 26 | - (CAShapeLayer *)addCornerRadius:(CGFloat)cornerRadius color:(UIColor *)borderColor; 27 | 28 | - (CAShapeLayer *)addCornerRadius:(CGFloat)cornerRadius lineWidth:(CGFloat)lineWidth color:(UIColor *)borderColor; 29 | 30 | - (CAShapeLayer *)addCornerRadius:(CGFloat)cornerRadius lineWidth:(CGFloat)lineWidth color:(UIColor *)borderColor backgroundColor:(UIColor *)backgroundColor; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIView/UIView+Position.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Position.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Position) 12 | 13 | @property (nonatomic, assign) CGFloat x; 14 | @property (nonatomic, assign) CGFloat y; 15 | @property (nonatomic, assign) CGFloat width; 16 | @property (nonatomic, assign) CGFloat height; 17 | @property (nonatomic, assign) CGSize size; 18 | @property (nonatomic, assign) CGPoint origin; 19 | @property (nonatomic, assign) CGFloat centerX; 20 | @property (nonatomic, assign) CGFloat centerY; 21 | @property (nonatomic, assign) CGFloat left; 22 | @property (nonatomic, assign) CGFloat top; 23 | @property (nonatomic, assign) CGFloat right; 24 | @property (nonatomic, assign) CGFloat bottom; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIView/UIView+SuperController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+SuperController.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (SuperController) 12 | 13 | + (UIViewController *)viewController:(UIView *)view; 14 | + (UINavigationController *)navigationController:(UIView *)view; 15 | - (UIViewController *)viewController; 16 | - (UINavigationController *)navigationController; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIView/UIView+SuperController.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+SuperController.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/6. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UIView+SuperController.h" 10 | 11 | @implementation UIView (SuperController) 12 | 13 | + (UIViewController *)viewController:(UIView *)view { 14 | for (UIView *next = [view superview]; next; next = next.superview) { 15 | UIResponder *nextResponder = [next nextResponder]; 16 | if ([nextResponder isKindOfClass:[UIViewController class]]) { 17 | return (UIViewController*)nextResponder; 18 | } 19 | } 20 | return nil; 21 | } 22 | 23 | + (UINavigationController *)navigationController:(UIView *)view { 24 | for (UIView *next = [view superview]; next; next = next.superview) { 25 | UIResponder *nextResponder = [next nextResponder]; 26 | if ([nextResponder isKindOfClass:[UINavigationController class]]) { 27 | return (UINavigationController*)nextResponder; 28 | } 29 | } 30 | return nil; 31 | } 32 | 33 | - (UIViewController*)viewController { 34 | for (UIView *next = [self superview]; next; next = next.superview) { 35 | UIResponder* nextResponder = [next nextResponder]; 36 | if ([nextResponder isKindOfClass:[UIViewController class]]) { 37 | return (UIViewController*)nextResponder; 38 | } 39 | } 40 | return nil; 41 | } 42 | 43 | - (UINavigationController *)navigationController{ 44 | UIViewController *viewController = [self viewController]; 45 | if (viewController) { 46 | if (viewController.navigationController) { 47 | return viewController.navigationController; 48 | } 49 | } 50 | return nil; 51 | } 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+ClassName.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+ClassName.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/23. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (ClassName) 12 | 13 | + (void)displayClassName:(BOOL)yesOrNo; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+PageViewLevel.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+PageViewLevel.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/14. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (PageViewLevel) 12 | 13 | /** 14 | 从0开始,记录真实的页面层级不受 15 | UITabBarController, 16 | UINavigationController包含关系影响 17 | */ 18 | @property (nonatomic, readonly) NSInteger pageViewLevel; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+PreviousController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+PreviousController.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/14. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (PreviousController) 12 | 13 | /** 14 | 不支持UITabbarController切换记录前一个 15 | 扩展实现可通过 objc_setAssociatedObject(self, @selector(pc_previousController), sourcePageController, OBJC_ASSOCIATION_RETAIN_NONATOMIC) 设置 16 | 优先使用以设置的值 17 | */ 18 | @property (nonatomic, readonly) UIViewController *previousController; 19 | 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+TopViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+TopViewController.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/14. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (TopViewController) 12 | 13 | + (UIViewController *)topViewController; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIViewController/UIViewController+TopViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+TopViewController.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2018/3/14. 6 | // Copyright © 2018年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UIViewController+TopViewController.h" 10 | 11 | @implementation UIViewController (TopViewController) 12 | 13 | + (UIViewController *)topViewController { 14 | UIViewController *resultVC; 15 | #if TARGET_OS_IOS 16 | resultVC = [self _topViewController:[[UIApplication sharedApplication].keyWindow rootViewController]]; 17 | while (resultVC.presentedViewController) { 18 | resultVC = [self _topViewController:resultVC.presentedViewController]; 19 | } 20 | #else 21 | 22 | #endif 23 | return resultVC; 24 | } 25 | 26 | + (UIViewController *)_topViewController:(UIViewController *)vc { 27 | if ([vc isKindOfClass:[UINavigationController class]]) { 28 | return [self _topViewController:[(UINavigationController *)vc topViewController]]; 29 | } else if ([vc isKindOfClass:[UITabBarController class]]) { 30 | return [self _topViewController:[(UITabBarController *)vc selectedViewController]]; 31 | } else { 32 | return vc; 33 | } 34 | return nil; 35 | } 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIWindow/UIWindow+Hierarchy.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWindow+Hierarchy.h 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/7. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIWindow (Hierarchy) 12 | 13 | /*! 14 | @method topMostController 15 | 16 | @return Returns the current Top Most ViewController in hierarchy. 17 | */ 18 | - (UIViewController *)topMostController; 19 | 20 | /*! 21 | @method currentViewController 22 | 23 | @return Returns the topViewController in stack of topMostController. 24 | */ 25 | - (UIViewController *)currentViewController; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Pods/MYKit/MYKit/Classes/UIKit/UIWindow/UIWindow+Hierarchy.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIWindow+Hierarchy.m 3 | // MYKitDemo 4 | // 5 | // Created by sunjinshuai on 2017/9/7. 6 | // Copyright © 2017年 com.51fanxing. All rights reserved. 7 | // 8 | 9 | #import "UIWindow+Hierarchy.h" 10 | 11 | @implementation UIWindow (Hierarchy) 12 | 13 | - (UIViewController *)topMostController { 14 | UIViewController *topController = [self rootViewController]; 15 | 16 | // Getting topMost ViewController 17 | while ([topController presentedViewController]) topController = [topController presentedViewController]; 18 | 19 | // Returning topMost ViewController 20 | return topController; 21 | } 22 | 23 | - (UIViewController *)currentViewController { 24 | UIViewController *currentViewController = [self topMostController]; 25 | 26 | while ([currentViewController isKindOfClass:[UINavigationController class]] && [(UINavigationController*)currentViewController topViewController]) 27 | currentViewController = [(UINavigationController*)currentViewController topViewController]; 28 | 29 | return currentViewController; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Pods/MYKit/README.md: -------------------------------------------------------------------------------- 1 | # MYKit 2 | 3 | [![CI Status](https://img.shields.io/travis/sunjinshuai/MYKit.svg?style=flat)](https://travis-ci.org/sunjinshuai/MYKit) 4 | [![Version](https://img.shields.io/cocoapods/v/MYKit.svg?style=flat)](https://cocoapods.org/pods/MYKit) 5 | [![License](https://img.shields.io/cocoapods/l/MYKit.svg?style=flat)](https://cocoapods.org/pods/MYKit) 6 | [![Platform](https://img.shields.io/cocoapods/p/MYKit.svg?style=flat)](https://cocoapods.org/pods/MYKit) 7 | 8 | ## Example 9 | 10 | To run the example project, clone the repo, and run `pod install` from the Example directory first. 11 | 12 | ## Requirements 13 | 14 | ## Installation 15 | 16 | MYKit is available through [CocoaPods](https://cocoapods.org). To install 17 | it, simply add the following line to your Podfile: 18 | 19 | ```ruby 20 | pod 'MYKit' 21 | ``` 22 | 23 | ## Author 24 | 25 | sunjinshuai, sunjinshuai@aikucun.com 26 | 27 | ## License 28 | 29 | MYKit is available under the MIT license. See the LICENSE file for more info. 30 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - MBProgressHUD (1.1.0) 3 | - MYKit (1.1.3): 4 | - MYKit/Core (= 1.1.3) 5 | - MYKit/Core (1.1.3): 6 | - MYKit/Foundation 7 | - MYKit/SafeKit 8 | - MYKit/UIKit 9 | - MYKit/Foundation (1.1.3) 10 | - MYKit/SafeKit (1.1.3): 11 | - MYKit/Foundation 12 | - MYKit/UIKit (1.1.3): 13 | - MYKit/Foundation 14 | 15 | DEPENDENCIES: 16 | - MBProgressHUD 17 | - MYKit 18 | 19 | SPEC REPOS: 20 | https://github.com/cocoapods/specs.git: 21 | - MBProgressHUD 22 | - MYKit 23 | 24 | SPEC CHECKSUMS: 25 | MBProgressHUD: e7baa36a220447d8aeb12769bf0585582f3866d9 26 | MYKit: 36c106e574158ffbbf58cf1057f9ea71b713a653 27 | 28 | PODFILE CHECKSUM: 4fb032f5fa9f0ba11c944aef1a380d90439e03bf 29 | 30 | COCOAPODS: 1.6.1 31 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MBProgressHUD/MBProgressHUD-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MBProgressHUD : NSObject 3 | @end 4 | @implementation PodsDummy_MBProgressHUD 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MBProgressHUD/MBProgressHUD.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MBProgressHUD" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MBProgressHUD" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MBProgressHUD 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MYKit/MYKit-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MYKit : NSObject 3 | @end 4 | @implementation PodsDummy_MYKit 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MYKit/MYKit-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MYKit/MYKit.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MYKit 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MYKit" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MYKit" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MYKit 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-MYPerformanceKit/Pods-MYPerformanceKit-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_MYPerformanceKit : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_MYPerformanceKit 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-MYPerformanceKit/Pods-MYPerformanceKit.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MYKit" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MYKit" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"MBProgressHUD" -l"MYKit" -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_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-MYPerformanceKit/Pods-MYPerformanceKit.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MYKit" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MYKit" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"MBProgressHUD" -l"MYKit" -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_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | --------------------------------------------------------------------------------