├── .gitignore ├── .travis.yml ├── Category.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings ├── xcshareddata │ └── xcschemes │ │ └── Category.xcscheme └── xcuserdata │ └── silence.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ └── xcschememanagement.plist ├── Category ├── AppDelegate.h ├── AppDelegate.m ├── Assets.xcassets │ └── AppIcon.appiconset │ │ ├── AppIcon1024×1024.png │ │ ├── AppIcon20x20@2x~ipad.png │ │ ├── AppIcon20x20~ipad.png │ │ ├── AppIcon29x29@2x~ipad.png │ │ ├── AppIcon29x29~ipad.png │ │ ├── AppIcon40x40@2x~ipad.png │ │ ├── AppIcon60x60@2x.png │ │ ├── AppIcon60x60@3x.png │ │ ├── AppIcon76x76@2x~ipad.png │ │ ├── AppIcon76x76~ipad.png │ │ ├── AppIcon83.5x83.5@2x~ipad.png │ │ └── Contents.json ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist ├── MineViewController.h ├── MineViewController.m ├── ViewController.h ├── ViewController.m └── main.m ├── CategoryTests ├── EXTADTTest.h ├── EXTADTTest.m ├── EXTConcreteProtocolTest.h ├── EXTConcreteProtocolTest.m ├── EXTKeyPathCodingTest.h ├── EXTKeyPathCodingTest.m ├── EXTKeypathWeakWarningTest.h ├── EXTKeypathWeakWarningTest.m ├── EXTObjectiveCppCompileTest.h ├── EXTObjectiveCppCompileTest.mm ├── EXTRuntimeExtensionsTest.h ├── EXTRuntimeExtensionsTest.m ├── EXTRuntimeTestProtocol.h ├── EXTSafeCategoryTest.h ├── EXTSafeCategoryTest.m ├── EXTScopeTest.h ├── EXTScopeTest.m ├── EXTSelectorCheckingTest.h ├── EXTSelectorCheckingTest.m ├── EXTSynthesizeTest.h ├── EXTSynthesizeTest.m ├── Info.plist └── NSStringColorTests.m ├── Classes ├── EXTObj │ ├── EXTADT │ │ ├── EXTADT.h │ │ └── EXTADT.m │ ├── EXTConcreteProtocol │ │ ├── EXTConcreteProtocol.h │ │ └── EXTConcreteProtocol.m │ ├── EXTKeyPathCoding │ │ └── EXTKeyPathCoding.h │ ├── EXTNil │ │ ├── EXTNil.h │ │ └── EXTNil.m │ ├── EXTObjc.h │ ├── EXTSafeCategory │ │ ├── EXTSafeCategory.h │ │ └── EXTSafeCategory.m │ ├── EXTScope │ │ ├── EXTScope.h │ │ └── EXTScope.m │ ├── EXTSelectorChecking │ │ ├── EXTSelectorChecking.h │ │ └── EXTSelectorChecking.m │ ├── EXTSynthesize │ │ └── EXTSynthesize.h │ ├── NSInvocation+EXT │ │ ├── NSInvocation+EXT.h │ │ └── NSInvocation+EXT.m │ ├── NSMethodSignature+EXT │ │ ├── NSMethodSignature+EXT.h │ │ └── NSMethodSignature+EXT.m │ └── RuntimeExtensions │ │ ├── EXTRuntimeExtensions.h │ │ ├── EXTRuntimeExtensions.m │ │ └── metamacros.h ├── Foundation │ ├── NSArchiver │ │ ├── NSKeyedArchiver+Key.h │ │ ├── NSKeyedArchiver+Key.m │ │ ├── NSKeyedUnarchiver+Key.h │ │ └── NSKeyedUnarchiver+Key.m │ ├── NSArray │ │ ├── NSArray+Block.h │ │ ├── NSArray+Block.m │ │ ├── NSArray+Contains.h │ │ ├── NSArray+Contains.m │ │ ├── NSArray+JSONEncode.h │ │ ├── NSArray+JSONEncode.m │ │ ├── NSArray+Plist.h │ │ ├── NSArray+Plist.m │ │ ├── NSArray+SafeAccess.h │ │ └── NSArray+SafeAccess.m │ ├── NSBundle │ │ ├── NSBundle+AppInfo.h │ │ └── NSBundle+AppInfo.m │ ├── NSData │ │ ├── NSData+APNSToken.h │ │ ├── NSData+APNSToken.m │ │ ├── NSData+Base64.h │ │ ├── NSData+Base64.m │ │ ├── NSData+Cache.h │ │ ├── NSData+Cache.m │ │ ├── NSData+Code.h │ │ ├── NSData+Code.m │ │ ├── NSData+DataCache.h │ │ ├── NSData+DataCache.m │ │ ├── NSData+Encrypt.h │ │ ├── NSData+Encrypt.m │ │ ├── NSData+Gzip.h │ │ ├── NSData+Gzip.m │ │ ├── NSData+Hash.h │ │ ├── NSData+Hash.m │ │ ├── NSData+zlib.h │ │ └── NSData+zlib.m │ ├── NSDate │ │ ├── NSDate+Cupertino.h │ │ ├── NSDate+Cupertino.m │ │ ├── NSDate+Extension.h │ │ ├── NSDate+Extension.m │ │ ├── NSDate+Figure.h │ │ ├── NSDate+Figure.m │ │ ├── NSDate+Formatter.h │ │ ├── NSDate+Formatter.m │ │ ├── NSDate+Lunar.h │ │ ├── NSDate+Lunar.m │ │ ├── NSDate+Show.h │ │ └── NSDate+Show.m │ ├── NSDateFormatter │ │ ├── NSDateFormatter+Make.h │ │ └── NSDateFormatter+Make.m │ ├── NSDecimalNumber │ │ ├── NSDecimalNumber+Easy.h │ │ └── NSDecimalNumber+Easy.m │ ├── NSDictionary │ │ ├── NSDictionary+Block.h │ │ ├── NSDictionary+Block.m │ │ ├── NSDictionary+JSONEncode.h │ │ ├── NSDictionary+JSONEncode.m │ │ ├── NSDictionary+Merge.h │ │ ├── NSDictionary+Merge.m │ │ ├── NSDictionary+Plist.h │ │ ├── NSDictionary+Plist.m │ │ ├── NSDictionary+SafeAccess.h │ │ ├── NSDictionary+SafeAccess.m │ │ ├── NSDictionary+URL.h │ │ ├── NSDictionary+URL.m │ │ ├── NSDictionary+XML.h │ │ └── NSDictionary+XML.m │ ├── NSFileHandle │ │ ├── NSFileHandle+ReadLine.h │ │ └── NSFileHandle+ReadLine.m │ ├── NSFileManager │ │ ├── NSFileManager+Hash.h │ │ ├── NSFileManager+Hash.m │ │ ├── NSFileManager+Helper.h │ │ └── NSFileManager+Helper.m │ ├── NSIndexPath │ │ ├── NSIndexPath+Offset.h │ │ └── NSIndexPath+Offset.m │ ├── NSLog │ │ ├── KKLog.h │ │ ├── KKLog.m │ │ └── LogUnicode.m │ ├── NSNotificationCenter │ │ ├── NSNotificationCenter+AutoRemove.h │ │ ├── NSNotificationCenter+AutoRemove.m │ │ ├── NSNotificationCenter+Thread.h │ │ └── NSNotificationCenter+Thread.m │ ├── NSNumber │ │ ├── NSNumber+Display.h │ │ ├── NSNumber+Display.m │ │ ├── NSNumber+Roman.h │ │ ├── NSNumber+Roman.m │ │ ├── NSNumber+Round.h │ │ └── NSNumber+Round.m │ ├── NSObject │ │ ├── NSObject+Aspect.h │ │ ├── NSObject+Aspect.m │ │ ├── NSObject+AutoCoding.h │ │ ├── NSObject+AutoCoding.m │ │ ├── NSObject+Block.h │ │ ├── NSObject+Block.m │ │ ├── NSObject+BlockTarget.h │ │ ├── NSObject+BlockTarget.m │ │ ├── NSObject+Dealloc.h │ │ ├── NSObject+Dealloc.m │ │ ├── NSObject+GCD.h │ │ ├── NSObject+GCD.m │ │ ├── NSObject+Parse.h │ │ ├── NSObject+Parse.m │ │ ├── NSObject+PerformSelector.h │ │ ├── NSObject+PerformSelector.m │ │ ├── NSObject+Property.h │ │ ├── NSObject+Property.m │ │ ├── NSObject+QuickAssociated.h │ │ ├── NSObject+QuickAssociated.m │ │ ├── NSObject+QuickCode.h │ │ ├── NSObject+QuickCode.m │ │ ├── NSObject+QuickCopy.h │ │ ├── NSObject+QuickCopy.m │ │ ├── NSObject+Reflect.h │ │ ├── NSObject+Reflect.m │ │ ├── NSObject+Runtime.h │ │ ├── NSObject+Runtime.m │ │ ├── NSObject+Semaphore.h │ │ └── NSObject+Semaphore.m │ ├── NSString │ │ ├── NSString+AES.h │ │ ├── NSString+AES.m │ │ ├── NSString+AppInfo.h │ │ ├── NSString+AppInfo.m │ │ ├── NSString+Append.h │ │ ├── NSString+Append.m │ │ ├── NSString+AttributedBuilder.h │ │ ├── NSString+AttributedBuilder.m │ │ ├── NSString+Color.h │ │ ├── NSString+Color.m │ │ ├── NSString+Contains.h │ │ ├── NSString+Contains.m │ │ ├── NSString+Emoji.h │ │ ├── NSString+Emoji.m │ │ ├── NSString+HTML.h │ │ ├── NSString+HTML.m │ │ ├── NSString+Hash.h │ │ ├── NSString+Hash.m │ │ ├── NSString+JSONValue.h │ │ ├── NSString+JSONValue.m │ │ ├── NSString+MIME.h │ │ ├── NSString+MIME.m │ │ ├── NSString+Path.h │ │ ├── NSString+Path.m │ │ ├── NSString+PinYin.h │ │ ├── NSString+PinYin.m │ │ ├── NSString+QRcode.h │ │ ├── NSString+QRcode.m │ │ ├── NSString+Regex.h │ │ ├── NSString+Regex.m │ │ ├── NSString+Segmentation.h │ │ ├── NSString+Segmentation.m │ │ ├── NSString+Size.h │ │ ├── NSString+Size.m │ │ ├── NSString+Trims.h │ │ ├── NSString+Trims.m │ │ ├── NSString+URLEncode.h │ │ ├── NSString+URLEncode.m │ │ ├── NSString+VersionCompare.h │ │ ├── NSString+VersionCompare.m │ │ ├── NSString+XML.h │ │ └── NSString+XML.m │ ├── NSTimer │ │ ├── NSTimer+Block.h │ │ ├── NSTimer+Block.m │ │ ├── NSTimer+Pause.h │ │ └── NSTimer+Pause.m │ ├── NSURL │ │ ├── NSURL+QueryDictionary.h │ │ └── NSURL+QueryDictionary.m │ ├── NSURLProtocol │ │ ├── NSURLProtocol+WKWebViewSupport.h │ │ └── NSURLProtocol+WKWebViewSupport.m │ ├── NSURLRequest │ │ ├── NSURLRequest+Params.h │ │ ├── NSURLRequest+Params.m │ │ ├── NSURLRequest+Upload.h │ │ └── NSURLRequest+Upload.m │ ├── NSURLSession │ │ ├── NSURLSession+SynchronousTask.h │ │ └── NSURLSession+SynchronousTask.m │ ├── NSUserDefaults │ │ ├── NSUserDefaults+iCloudSync.h │ │ └── NSUserDefaults+iCloudSync.m │ └── SIFoundation.h ├── Macros │ ├── SIARCMacro.h │ ├── SIAutoLayoutMacro.h │ ├── SIChainMacro.h │ ├── SICollectionMacro.h │ ├── SIColorMacro.h │ ├── SICoreGraphicsMacro.h │ ├── SIDeviceMacro.h │ ├── SIExceptionMacro.h │ ├── SIFRCMacro.h │ ├── SIGCDMacro.h │ ├── SILogMacro.h │ ├── SIMacros.h │ ├── SIMathMacro.h │ ├── SINotificationMacro.h │ ├── SIRuntimeMacro.h │ ├── SISharedInstanceMacro.h │ ├── SIShortcutsMacro.h │ ├── SIUtilsMacro.h │ ├── SIViewMacro.h │ └── SIWarningMacro.h ├── Manager │ ├── AppPurchase │ │ ├── SIIAppPurchaseManager.h │ │ └── SIIAppPurchaseManager.m │ ├── AppVersion │ │ ├── SIAppVersionManager.h │ │ └── SIAppVersionManager.m │ ├── Authorization │ │ ├── SIAuthorizationManager.h │ │ └── SIAuthorizationManager.m │ ├── Bluetooth │ │ ├── SIBluetoothManager.h │ │ └── SIBluetoothManager.m │ ├── CaptivePortalCheck │ │ ├── SICaptivePortalCheckManager.h │ │ └── SICaptivePortalCheckManager.m │ ├── CountDownManager │ │ ├── CountDownManager.h │ │ └── CountDownManager.m │ ├── Debug │ │ ├── CallStack │ │ │ ├── SICallStackManager.h │ │ │ └── SICallStackManager.m │ │ ├── Console │ │ │ ├── SIConsoleManager.h │ │ │ └── SIConsoleManager.m │ │ └── FPS │ │ │ ├── SIFPSManager.h │ │ │ └── SIFPSManager.m │ ├── Download │ │ ├── SIDownloadManager.h │ │ └── SIDownloadManager.m │ ├── Keyboard │ │ ├── SIKeyboardManager.h │ │ └── SIKeyboardManager.m │ ├── Keychain │ │ ├── SIKeychainManager.h │ │ └── SIKeychainManager.m │ ├── Mediator │ │ ├── SIMediatorManager.h │ │ └── SIMediatorManager.m │ ├── NetAccessibity │ │ ├── SINetworkAccessibity.h │ │ └── SINetworkAccessibity.m │ ├── Proxy │ │ ├── SIProxyManager.h │ │ └── SIProxyManager.m │ ├── Push │ │ ├── SIPushNotificationManager.h │ │ └── SIPushNotificationManager.m │ ├── SIManager.h │ ├── Sound │ │ ├── SISoundManager.h │ │ └── SISoundManager.m │ └── TouchID │ │ ├── SITouchIDManager.h │ │ └── SITouchIDManager.m ├── QuartzCore │ ├── CAAnimation │ │ ├── CAAnimation+EasingEquations.h │ │ └── CAAnimation+EasingEquations.m │ ├── CALayer │ │ ├── CALayer+Frame.h │ │ ├── CALayer+Frame.m │ │ ├── CALayer+Property.h │ │ └── CALayer+Property.m │ ├── CAMediaTimingFunction │ │ ├── CAMediaTimingFunction+AdditionalEquations.h │ │ └── CAMediaTimingFunction+AdditionalEquations.m │ ├── CAShapeLayer │ │ ├── CAShapeLayer+UIBezierPath.h │ │ └── CAShapeLayer+UIBezierPath.m │ ├── CATransaction │ │ ├── CATransaction+AnimateWithDuration.h │ │ └── CATransaction+AnimateWithDuration.m │ └── SIQuartzCore.h ├── SICategory.h └── UIKit │ ├── NSLayoutConstraint │ ├── NSLayoutConstraint+Extensions.h │ ├── NSLayoutConstraint+Extensions.m │ ├── NSLayoutConstraint+Refer.h │ └── NSLayoutConstraint+Refer.m │ ├── SIUIKit.h │ ├── UIApplication │ ├── UIApplication+AppInfo.h │ ├── UIApplication+AppInfo.m │ ├── UIApplication+Authority.h │ ├── UIApplication+Authority.m │ ├── UIApplication+KeyboardFrame.h │ ├── UIApplication+KeyboardFrame.m │ ├── UIApplication+Permissions.h │ ├── UIApplication+Permissions.m │ ├── UIApplication+UIDebug.h │ └── UIApplication+UIDebug.m │ ├── UIBarButtonItem │ ├── UIBarButtonItem+Badge.h │ ├── UIBarButtonItem+Badge.m │ ├── UIBarButtonItem+Create.h │ └── UIBarButtonItem+Create.m │ ├── UIBezierPath │ ├── UIBezierPath+BasicShapes.h │ ├── UIBezierPath+BasicShapes.m │ ├── UIBezierPath+Length.h │ ├── UIBezierPath+Length.m │ ├── UIBezierPath+SVGString.h │ ├── UIBezierPath+SVGString.m │ ├── UIBezierPath+Symbol.h │ ├── UIBezierPath+Symbol.m │ ├── UIBezierPath+TextPaths.h │ └── UIBezierPath+TextPaths.m │ ├── UIButton │ ├── UIButton+BackgroundColor.h │ ├── UIButton+BackgroundColor.m │ ├── UIButton+Badge.h │ ├── UIButton+Badge.m │ ├── UIButton+Block.h │ ├── UIButton+Block.m │ ├── UIButton+ClickEdgeInsets.h │ ├── UIButton+ClickEdgeInsets.m │ ├── UIButton+CountDown.h │ ├── UIButton+CountDown.m │ ├── UIButton+ImagePosition.h │ ├── UIButton+ImagePosition.m │ ├── UIButton+Indicator.h │ ├── UIButton+Indicator.m │ ├── UIButton+Submitting.h │ └── UIButton+Submitting.m │ ├── UIColor │ ├── UIColor+CSSColors.h │ ├── UIColor+CSSColors.m │ ├── UIColor+FPBrandColor.h │ ├── UIColor+FPBrandColor.m │ ├── UIColor+FlatColors.h │ ├── UIColor+FlatColors.m │ ├── UIColor+Make.h │ ├── UIColor+Make.m │ ├── UIColor+Random.h │ └── UIColor+Random.m │ ├── UIControl │ ├── UIControl+ALActionBlocks.h │ ├── UIControl+ALActionBlocks.m │ ├── UIControl+Sound.h │ └── UIControl+Sound.m │ ├── UIDevice │ ├── UIDevice+CPU.h │ ├── UIDevice+CPU.m │ ├── UIDevice+Device.h │ ├── UIDevice+Device.m │ ├── UIDevice+Disk.h │ ├── UIDevice+Disk.m │ ├── UIDevice+NetWork.h │ └── UIDevice+NetWork.m │ ├── UIFont │ ├── UIFont+Load.h │ ├── UIFont+Load.m │ ├── UIFont+Make.h │ ├── UIFont+Make.m │ ├── UIFont+TTF.h │ ├── UIFont+TTF.m │ ├── UIFont+Traits.h │ └── UIFont+Traits.m │ ├── UIGestureRecognizer │ ├── UIGestureRecognizer+ALActionBlocks.h │ └── UIGestureRecognizer+ALActionBlocks.m │ ├── UIImage │ ├── UIImage+Alpha.h │ ├── UIImage+Alpha.m │ ├── UIImage+BetterFace.h │ ├── UIImage+BetterFace.m │ ├── UIImage+Capture.h │ ├── UIImage+Capture.m │ ├── UIImage+Color.h │ ├── UIImage+Color.m │ ├── UIImage+Compress.h │ ├── UIImage+Compress.m │ ├── UIImage+Effect.h │ ├── UIImage+Effect.m │ ├── UIImage+FileName.h │ ├── UIImage+FileName.m │ ├── UIImage+Fix.h │ ├── UIImage+Fix.m │ ├── UIImage+GIF.h │ ├── UIImage+GIF.m │ ├── UIImage+Make.h │ ├── UIImage+Make.m │ ├── UIImage+Merge.h │ ├── UIImage+Merge.m │ ├── UIImage+Modify.h │ ├── UIImage+Modify.m │ ├── UIImage+Rotate.h │ ├── UIImage+Rotate.m │ ├── UIImage+Sprite.h │ ├── UIImage+Sprite.m │ ├── UIImage+Tint.h │ ├── UIImage+Tint.m │ ├── UIImage+Video.h │ └── UIImage+Video.m │ ├── UIImageView │ ├── UIImageView+CornerRadius.h │ ├── UIImageView+CornerRadius.m │ ├── UIImageView+GeometryConversion.h │ ├── UIImageView+GeometryConversion.m │ ├── UIImageView+Letters.h │ ├── UIImageView+Letters.m │ ├── UIImageView+Reflect.h │ └── UIImageView+Reflect.m │ ├── UILabel │ ├── UILabel+AutoSize.h │ ├── UILabel+AutoSize.m │ ├── UILabel+AutomaticWriting.h │ ├── UILabel+AutomaticWriting.m │ ├── UILabel+ContenSize.h │ ├── UILabel+ContenSize.m │ ├── UILabel+Space.h │ └── UILabel+Space.m │ ├── UINavigationBar │ ├── UINavigationBar+Appear.h │ ├── UINavigationBar+Appear.m │ ├── UINavigationBar+Awesome.h │ └── UINavigationBar+Awesome.m │ ├── UINavigationController │ ├── UINavigationController+Appear.h │ ├── UINavigationController+Appear.m │ ├── UINavigationController+Hide.h │ ├── UINavigationController+Hide.m │ ├── UINavigationController+Stack.h │ ├── UINavigationController+Stack.m │ ├── UINavigationController+Transitions.h │ └── UINavigationController+Transitions.m │ ├── UINavigationItem │ ├── UINavigationItem+Loading.h │ ├── UINavigationItem+Loading.m │ ├── UINavigationItem+Lock.h │ ├── UINavigationItem+Lock.m │ ├── UINavigationItem+Margin.h │ └── UINavigationItem+Margin.m │ ├── UIResponder │ ├── UIResponder+Chain.h │ ├── UIResponder+Chain.m │ ├── UIResponder+FirstResponder.h │ └── UIResponder+FirstResponder.m │ ├── UIScreen │ ├── UIScreen+Info.h │ └── UIScreen+Info.m │ ├── UIScrollView │ ├── UIScrollView+Amplification.h │ ├── UIScrollView+Amplification.m │ ├── UIScrollView+Frame.h │ ├── UIScrollView+Frame.m │ ├── UIScrollView+PageNumber.h │ ├── UIScrollView+PageNumber.m │ ├── UIScrollView+SimpleScroll.h │ └── UIScrollView+SimpleScroll.m │ ├── UISlider │ ├── UISlider+Tap.h │ └── UISlider+Tap.m │ ├── UITabBarController │ ├── UITabBarController+Hide.h │ └── UITabBarController+Hide.m │ ├── UITableView │ ├── UITableView+CellStyle.h │ ├── UITableView+CellStyle.m │ ├── UITableView+Placeholder.h │ ├── UITableView+Placeholder.m │ ├── UITableView+Update.h │ ├── UITableView+Update.m │ ├── UITableView+iOS7Style.h │ └── UITableView+iOS7Style.m │ ├── UITableViewCell │ ├── UITableViewCell+NIB.h │ └── UITableViewCell+NIB.m │ ├── UITextField │ ├── UITextField+InputLimit.h │ ├── UITextField+InputLimit.m │ ├── UITextField+Select.h │ └── UITextField+Select.m │ ├── UITextView │ ├── UITextView+InputLimit.h │ ├── UITextView+InputLimit.m │ ├── UITextView+PlaceHolder.h │ ├── UITextView+PlaceHolder.m │ ├── UITextView+Select.h │ └── UITextView+Select.m │ ├── UIView │ ├── UIView+Animation.h │ ├── UIView+Animation.m │ ├── UIView+Badge.h │ ├── UIView+Badge.m │ ├── UIView+BlockGesture.h │ ├── UIView+BlockGesture.m │ ├── UIView+Border.h │ ├── UIView+Border.m │ ├── UIView+Constraints.h │ ├── UIView+Constraints.m │ ├── UIView+Find.h │ ├── UIView+Find.m │ ├── UIView+Frame.h │ ├── UIView+Frame.m │ ├── UIView+Genie.h │ ├── UIView+Genie.m │ ├── UIView+NIB.h │ ├── UIView+NIB.m │ ├── UIView+Radius.h │ ├── UIView+Radius.m │ ├── UIView+Recursion.h │ ├── UIView+Recursion.m │ ├── UIView+RelativeLayout.h │ ├── UIView+RelativeLayout.m │ ├── UIView+Screenshot.h │ ├── UIView+Screenshot.m │ ├── UIView+Shake.h │ ├── UIView+Shake.m │ ├── UIView+Skeleton.h │ ├── UIView+Skeleton.m │ ├── UIView+SubtractMask.h │ ├── UIView+SubtractMask.m │ ├── UIView+Toast.h │ ├── UIView+Toast.m │ ├── UIView+ViewController.h │ ├── UIView+ViewController.m │ ├── UIView+ViewPath.h │ ├── UIView+ViewPath.m │ ├── UIView+draggable.h │ └── UIView+draggable.m │ ├── UIViewController │ ├── UIViewController+Alert.h │ ├── UIViewController+Alert.m │ ├── UIViewController+BackAction.h │ ├── UIViewController+BackAction.m │ ├── UIViewController+KeyboardAnimation.h │ ├── UIViewController+KeyboardAnimation.m │ ├── UIViewController+MJPopupViewController.h │ ├── UIViewController+MJPopupViewController.m │ ├── UIViewController+RecursiveDescription.h │ ├── UIViewController+RecursiveDescription.m │ ├── UIViewController+Segues.h │ ├── UIViewController+Segues.m │ ├── UIViewController+TopBarMessage.h │ ├── UIViewController+TopBarMessage.m │ ├── UIViewController+TopViewController.h │ ├── UIViewController+TopViewController.m │ ├── UIViewController+Visible.h │ └── UIViewController+Visible.m │ └── UIWebView │ ├── UIWebView+JavaScript.h │ ├── UIWebView+JavaScript.m │ ├── UIWebView+Load.h │ ├── UIWebView+Load.m │ ├── UIWebView+MetaParser.h │ ├── UIWebView+MetaParser.m │ ├── UIWebView+Style.h │ ├── UIWebView+Style.m │ ├── UIWebView+SwipeGesture.h │ ├── UIWebView+SwipeGesture.m │ ├── UIWebView+WebStorage.h │ └── UIWebView+WebStorage.m ├── FrameWork └── SICategory.framework │ ├── Headers │ ├── Modules │ └── module.modulemap │ ├── SICategory │ └── Versions │ ├── A │ ├── Headers │ │ ├── CAAnimation+EasingEquations.h │ │ ├── CALayer+Frame.h │ │ ├── CALayer+Property.h │ │ ├── CAMediaTimingFunction+AdditionalEquations.h │ │ ├── CAShapeLayer+UIBezierPath.h │ │ ├── CATransaction+AnimateWithDuration.h │ │ ├── EXTADT.h │ │ ├── EXTConcreteProtocol.h │ │ ├── EXTKeyPathCoding.h │ │ ├── EXTNil.h │ │ ├── EXTObjc.h │ │ ├── EXTRuntimeExtensions.h │ │ ├── EXTSafeCategory.h │ │ ├── EXTScope.h │ │ ├── EXTSelectorChecking.h │ │ ├── EXTSynthesize.h │ │ ├── KKLog.h │ │ ├── NSArray+Block.h │ │ ├── NSArray+Contains.h │ │ ├── NSArray+JSONEncode.h │ │ ├── NSArray+Plist.h │ │ ├── NSArray+SafeAccess.h │ │ ├── NSBundle+AppInfo.h │ │ ├── NSData+APNSToken.h │ │ ├── NSData+Base64.h │ │ ├── NSData+Cache.h │ │ ├── NSData+Code.h │ │ ├── NSData+DataCache.h │ │ ├── NSData+Encrypt.h │ │ ├── NSData+Gzip.h │ │ ├── NSData+Hash.h │ │ ├── NSData+zlib.h │ │ ├── NSDate+Cupertino.h │ │ ├── NSDate+Extension.h │ │ ├── NSDate+Figure.h │ │ ├── NSDate+Formatter.h │ │ ├── NSDate+Lunar.h │ │ ├── NSDate+Show.h │ │ ├── NSDateFormatter+Make.h │ │ ├── NSDecimalNumber+Easy.h │ │ ├── NSDictionary+Block.h │ │ ├── NSDictionary+JSONEncode.h │ │ ├── NSDictionary+Merge.h │ │ ├── NSDictionary+Plist.h │ │ ├── NSDictionary+SafeAccess.h │ │ ├── NSDictionary+URL.h │ │ ├── NSDictionary+XML.h │ │ ├── NSFileHandle+ReadLine.h │ │ ├── NSFileManager+Hash.h │ │ ├── NSFileManager+Helper.h │ │ ├── NSIndexPath+Offset.h │ │ ├── NSInvocation+EXT.h │ │ ├── NSKeyedArchiver+Key.h │ │ ├── NSKeyedUnarchiver+Key.h │ │ ├── NSLayoutConstraint+Extensions.h │ │ ├── NSLayoutConstraint+Refer.h │ │ ├── NSMethodSignature+EXT.h │ │ ├── NSNotificationCenter+AutoRemove.h │ │ ├── NSNotificationCenter+Thread.h │ │ ├── NSNumber+Display.h │ │ ├── NSNumber+Roman.h │ │ ├── NSNumber+Round.h │ │ ├── NSObject+Aspect.h │ │ ├── NSObject+AutoCoding.h │ │ ├── NSObject+Block.h │ │ ├── NSObject+Dealloc.h │ │ ├── NSObject+GCD.h │ │ ├── NSObject+KVO.h │ │ ├── NSObject+Parse.h │ │ ├── NSObject+PerformSelector.h │ │ ├── NSObject+Property.h │ │ ├── NSObject+QuickAssociated.h │ │ ├── NSObject+QuickCode.h │ │ ├── NSObject+QuickCopy.h │ │ ├── NSObject+Reflect.h │ │ ├── NSObject+Runtime.h │ │ ├── NSString+AES.h │ │ ├── NSString+AppInfo.h │ │ ├── NSString+Append.h │ │ ├── NSString+AttributedBuilder.h │ │ ├── NSString+Color.h │ │ ├── NSString+Contains.h │ │ ├── NSString+Emoji.h │ │ ├── NSString+HTML.h │ │ ├── NSString+Hash.h │ │ ├── NSString+JSONValue.h │ │ ├── NSString+MIME.h │ │ ├── NSString+Path.h │ │ ├── NSString+PinYin.h │ │ ├── NSString+QRcode.h │ │ ├── NSString+Regex.h │ │ ├── NSString+Segmentation.h │ │ ├── NSString+Size.h │ │ ├── NSString+Trims.h │ │ ├── NSString+URLEncode.h │ │ ├── NSString+VersionCompare.h │ │ ├── NSString+XML.h │ │ ├── NSTimer+Block.h │ │ ├── NSTimer+Pause.h │ │ ├── NSURL+QueryDictionary.h │ │ ├── NSURLRequest+Params.h │ │ ├── NSURLRequest+Upload.h │ │ ├── NSURLSession+SynchronousTask.h │ │ ├── NSUserDefaults+iCloudSync.h │ │ ├── SIARCMacro.h │ │ ├── SIAppVersionManager.h │ │ ├── SIAuthorizationManager.h │ │ ├── SIAutoLayoutMacro.h │ │ ├── SIBluetoothManager.h │ │ ├── SICallStackManager.h │ │ ├── SICategory.h │ │ ├── SICollectionMacro.h │ │ ├── SIColorMacro.h │ │ ├── SIConsoleManager.h │ │ ├── SICoreGraphicsMacro.h │ │ ├── SIDeviceMacro.h │ │ ├── SIDownloadManager.h │ │ ├── SIExceptionMacro.h │ │ ├── SIFPSManager.h │ │ ├── SIFRCMacro.h │ │ ├── SIFoundation.h │ │ ├── SIGCDMacro.h │ │ ├── SIIAppPurchaseManager.h │ │ ├── SIKeyboardManager.h │ │ ├── SIKeychainManager.h │ │ ├── SILogMacro.h │ │ ├── SIMacros.h │ │ ├── SIManager.h │ │ ├── SIMathMacro.h │ │ ├── SIMediatorManager.h │ │ ├── SINotificationMacro.h │ │ ├── SIProxyManager.h │ │ ├── SIPushNotificationManager.h │ │ ├── SIQuartzCore.h │ │ ├── SIRuntimeMacro.h │ │ ├── SISharedInstanceMacro.h │ │ ├── SIShortcutsMacro.h │ │ ├── SISoundManager.h │ │ ├── SITouchIDManager.h │ │ ├── SIUIKit.h │ │ ├── SIUtilsMacro.h │ │ ├── SIViewMacro.h │ │ ├── SIWarningMacro.h │ │ ├── UIApplication+AppInfo.h │ │ ├── UIApplication+Authority.h │ │ ├── UIApplication+KeyboardFrame.h │ │ ├── UIApplication+Permissions.h │ │ ├── UIApplication+UIDebug.h │ │ ├── UIBarButtonItem+Badge.h │ │ ├── UIBarButtonItem+Create.h │ │ ├── UIBezierPath+BasicShapes.h │ │ ├── UIBezierPath+Length.h │ │ ├── UIBezierPath+SVGString.h │ │ ├── UIBezierPath+Symbol.h │ │ ├── UIBezierPath+TextPaths.h │ │ ├── UIButton+BackgroundColor.h │ │ ├── UIButton+Badge.h │ │ ├── UIButton+Block.h │ │ ├── UIButton+ClickEdgeInsets.h │ │ ├── UIButton+CountDown.h │ │ ├── UIButton+ImagePosition.h │ │ ├── UIButton+Indicator.h │ │ ├── UIButton+Submitting.h │ │ ├── UIColor+CSSColors.h │ │ ├── UIColor+FPBrandColor.h │ │ ├── UIColor+FlatColors.h │ │ ├── UIColor+Make.h │ │ ├── UIColor+Random.h │ │ ├── UIControl+ALActionBlocks.h │ │ ├── UIControl+Sound.h │ │ ├── UIDevice+CPU.h │ │ ├── UIDevice+Device.h │ │ ├── UIDevice+Disk.h │ │ ├── UIDevice+NetWork.h │ │ ├── UIFont+Load.h │ │ ├── UIFont+Make.h │ │ ├── UIFont+TTF.h │ │ ├── UIFont+Traits.h │ │ ├── UIGestureRecognizer+ALActionBlocks.h │ │ ├── UIImage+Alpha.h │ │ ├── UIImage+BetterFace.h │ │ ├── UIImage+Capture.h │ │ ├── UIImage+Color.h │ │ ├── UIImage+Compress.h │ │ ├── UIImage+Effect.h │ │ ├── UIImage+FileName.h │ │ ├── UIImage+Fix.h │ │ ├── UIImage+GIF.h │ │ ├── UIImage+Make.h │ │ ├── UIImage+Merge.h │ │ ├── UIImage+Modify.h │ │ ├── UIImage+Rotate.h │ │ ├── UIImage+Sprite.h │ │ ├── UIImage+Video.h │ │ ├── UIImageView+GeometryConversion.h │ │ ├── UIImageView+Letters.h │ │ ├── UIImageView+Reflect.h │ │ ├── UILabel+AutoSize.h │ │ ├── UILabel+AutomaticWriting.h │ │ ├── UILabel+ContenSize.h │ │ ├── UILabel+Space.h │ │ ├── UINavigationBar+Appear.h │ │ ├── UINavigationBar+Awesome.h │ │ ├── UINavigationController+Appear.h │ │ ├── UINavigationController+Hide.h │ │ ├── UINavigationController+Stack.h │ │ ├── UINavigationController+Transitions.h │ │ ├── UINavigationItem+Loading.h │ │ ├── UINavigationItem+Lock.h │ │ ├── UINavigationItem+Margin.h │ │ ├── UIResponder+Chain.h │ │ ├── UIResponder+FirstResponder.h │ │ ├── UIScreen+Info.h │ │ ├── UIScrollView+Amplification.h │ │ ├── UIScrollView+Frame.h │ │ ├── UIScrollView+PageNumber.h │ │ ├── UIScrollView+SimpleScroll.h │ │ ├── UISlider+Tap.h │ │ ├── UITabBarController+Hide.h │ │ ├── UITableView+CellStyle.h │ │ ├── UITableView+Placeholder.h │ │ ├── UITableView+Update.h │ │ ├── UITableView+iOS7Style.h │ │ ├── UITableViewCell+NIB.h │ │ ├── UITextField+InputLimit.h │ │ ├── UITextField+Select.h │ │ ├── UITextView+InputLimit.h │ │ ├── UITextView+PlaceHolder.h │ │ ├── UITextView+Select.h │ │ ├── UIView+Animation.h │ │ ├── UIView+Badge.h │ │ ├── UIView+BlockGesture.h │ │ ├── UIView+Border.h │ │ ├── UIView+Constraints.h │ │ ├── UIView+Find.h │ │ ├── UIView+Frame.h │ │ ├── UIView+Genie.h │ │ ├── UIView+NIB.h │ │ ├── UIView+Radius.h │ │ ├── UIView+Recursion.h │ │ ├── UIView+RelativeLayout.h │ │ ├── UIView+Screenshot.h │ │ ├── UIView+Shake.h │ │ ├── UIView+Skeleton.h │ │ ├── UIView+SubtractMask.h │ │ ├── UIView+Toast.h │ │ ├── UIView+ViewController.h │ │ ├── UIView+ViewPath.h │ │ ├── UIView+draggable.h │ │ ├── UIViewController+Alert.h │ │ ├── UIViewController+BackAction.h │ │ ├── UIViewController+KeyboardAnimation.h │ │ ├── UIViewController+MJPopupViewController.h │ │ ├── UIViewController+RecursiveDescription.h │ │ ├── UIViewController+Segues.h │ │ ├── UIViewController+TopBarMessage.h │ │ ├── UIViewController+Visible.h │ │ ├── UIWebView+JavaScript.h │ │ ├── UIWebView+Load.h │ │ ├── UIWebView+MetaParser.h │ │ ├── UIWebView+Style.h │ │ ├── UIWebView+SwipeGesture.h │ │ ├── UIWebView+WebStorage.h │ │ ├── UIWindow+Hierarchy.h │ │ └── metamacros.h │ └── SICategory │ └── Current ├── LICENSE ├── Library ├── include │ ├── CAAnimation+EasingEquations.h │ ├── CALayer+Frame.h │ ├── CALayer+Property.h │ ├── CAMediaTimingFunction+AdditionalEquations.h │ ├── CAShapeLayer+UIBezierPath.h │ ├── CATransaction+AnimateWithDuration.h │ ├── EXTADT.h │ ├── EXTConcreteProtocol.h │ ├── EXTKeyPathCoding.h │ ├── EXTNil.h │ ├── EXTObjc.h │ ├── EXTRuntimeExtensions.h │ ├── EXTSafeCategory.h │ ├── EXTScope.h │ ├── EXTSelectorChecking.h │ ├── EXTSynthesize.h │ ├── KKLog.h │ ├── NSArray+Block.h │ ├── NSArray+Contains.h │ ├── NSArray+JSONEncode.h │ ├── NSArray+Plist.h │ ├── NSArray+SafeAccess.h │ ├── NSBundle+AppInfo.h │ ├── NSData+APNSToken.h │ ├── NSData+Base64.h │ ├── NSData+Cache.h │ ├── NSData+Code.h │ ├── NSData+DataCache.h │ ├── NSData+Encrypt.h │ ├── NSData+Gzip.h │ ├── NSData+Hash.h │ ├── NSData+zlib.h │ ├── NSDate+Cupertino.h │ ├── NSDate+Extension.h │ ├── NSDate+Figure.h │ ├── NSDate+Formatter.h │ ├── NSDate+Lunar.h │ ├── NSDate+Show.h │ ├── NSDateFormatter+Make.h │ ├── NSDecimalNumber+Easy.h │ ├── NSDictionary+Block.h │ ├── NSDictionary+JSONEncode.h │ ├── NSDictionary+Merge.h │ ├── NSDictionary+Plist.h │ ├── NSDictionary+SafeAccess.h │ ├── NSDictionary+URL.h │ ├── NSDictionary+XML.h │ ├── NSFileHandle+ReadLine.h │ ├── NSFileManager+Hash.h │ ├── NSFileManager+Helper.h │ ├── NSIndexPath+Offset.h │ ├── NSInvocation+EXT.h │ ├── NSKeyedArchiver+Key.h │ ├── NSKeyedUnarchiver+Key.h │ ├── NSLayoutConstraint+Extensions.h │ ├── NSLayoutConstraint+Refer.h │ ├── NSMethodSignature+EXT.h │ ├── NSNotificationCenter+AutoRemove.h │ ├── NSNotificationCenter+Thread.h │ ├── NSNumber+Display.h │ ├── NSNumber+Roman.h │ ├── NSNumber+Round.h │ ├── NSObject+Aspect.h │ ├── NSObject+AutoCoding.h │ ├── NSObject+Block.h │ ├── NSObject+Dealloc.h │ ├── NSObject+GCD.h │ ├── NSObject+KVO.h │ ├── NSObject+Parse.h │ ├── NSObject+PerformSelector.h │ ├── NSObject+Property.h │ ├── NSObject+QuickAssociated.h │ ├── NSObject+QuickCode.h │ ├── NSObject+QuickCopy.h │ ├── NSObject+Reflect.h │ ├── NSObject+Runtime.h │ ├── NSString+AES.h │ ├── NSString+AppInfo.h │ ├── NSString+Append.h │ ├── NSString+AttributedBuilder.h │ ├── NSString+Color.h │ ├── NSString+Contains.h │ ├── NSString+Emoji.h │ ├── NSString+HTML.h │ ├── NSString+Hash.h │ ├── NSString+JSONValue.h │ ├── NSString+MIME.h │ ├── NSString+Path.h │ ├── NSString+PinYin.h │ ├── NSString+QRcode.h │ ├── NSString+Regex.h │ ├── NSString+Segmentation.h │ ├── NSString+Size.h │ ├── NSString+Trims.h │ ├── NSString+URLEncode.h │ ├── NSString+VersionCompare.h │ ├── NSString+XML.h │ ├── NSTimer+Block.h │ ├── NSTimer+Pause.h │ ├── NSURL+QueryDictionary.h │ ├── NSURLRequest+Params.h │ ├── NSURLRequest+Upload.h │ ├── NSURLSession+SynchronousTask.h │ ├── NSUserDefaults+iCloudSync.h │ ├── SIARCMacro.h │ ├── SIAppVersionManager.h │ ├── SIAuthorizationManager.h │ ├── SIAutoLayoutMacro.h │ ├── SIBluetoothManager.h │ ├── SICallStackManager.h │ ├── SICategory.h │ ├── SICollectionMacro.h │ ├── SIColorMacro.h │ ├── SIConsoleManager.h │ ├── SICoreGraphicsMacro.h │ ├── SIDeviceMacro.h │ ├── SIDownloadManager.h │ ├── SIExceptionMacro.h │ ├── SIFPSManager.h │ ├── SIFRCMacro.h │ ├── SIFoundation.h │ ├── SIGCDMacro.h │ ├── SIIAppPurchaseManager.h │ ├── SIKeyboardManager.h │ ├── SIKeychainManager.h │ ├── SILogMacro.h │ ├── SIMacros.h │ ├── SIManager.h │ ├── SIMathMacro.h │ ├── SIMediatorManager.h │ ├── SINotificationMacro.h │ ├── SIProxyManager.h │ ├── SIPushNotificationManager.h │ ├── SIQuartzCore.h │ ├── SIRuntimeMacro.h │ ├── SISharedInstanceMacro.h │ ├── SIShortcutsMacro.h │ ├── SISoundManager.h │ ├── SITouchIDManager.h │ ├── SIUIKit.h │ ├── SIUtilsMacro.h │ ├── SIViewMacro.h │ ├── SIWarningMacro.h │ ├── UIApplication+AppInfo.h │ ├── UIApplication+Authority.h │ ├── UIApplication+KeyboardFrame.h │ ├── UIApplication+Permissions.h │ ├── UIApplication+UIDebug.h │ ├── UIBarButtonItem+Badge.h │ ├── UIBarButtonItem+Create.h │ ├── UIBezierPath+BasicShapes.h │ ├── UIBezierPath+Length.h │ ├── UIBezierPath+SVGString.h │ ├── UIBezierPath+Symbol.h │ ├── UIBezierPath+TextPaths.h │ ├── UIButton+BackgroundColor.h │ ├── UIButton+Badge.h │ ├── UIButton+Block.h │ ├── UIButton+ClickEdgeInsets.h │ ├── UIButton+CountDown.h │ ├── UIButton+ImagePosition.h │ ├── UIButton+Indicator.h │ ├── UIButton+Submitting.h │ ├── UIColor+CSSColors.h │ ├── UIColor+FPBrandColor.h │ ├── UIColor+FlatColors.h │ ├── UIColor+Make.h │ ├── UIColor+Random.h │ ├── UIControl+ALActionBlocks.h │ ├── UIControl+Sound.h │ ├── UIDevice+CPU.h │ ├── UIDevice+Device.h │ ├── UIDevice+Disk.h │ ├── UIDevice+NetWork.h │ ├── UIFont+Load.h │ ├── UIFont+Make.h │ ├── UIFont+TTF.h │ ├── UIFont+Traits.h │ ├── UIGestureRecognizer+ALActionBlocks.h │ ├── UIImage+Alpha.h │ ├── UIImage+BetterFace.h │ ├── UIImage+Capture.h │ ├── UIImage+Color.h │ ├── UIImage+Compress.h │ ├── UIImage+Effect.h │ ├── UIImage+FileName.h │ ├── UIImage+Fix.h │ ├── UIImage+GIF.h │ ├── UIImage+Make.h │ ├── UIImage+Merge.h │ ├── UIImage+Modify.h │ ├── UIImage+Rotate.h │ ├── UIImage+Sprite.h │ ├── UIImage+Video.h │ ├── UIImageView+GeometryConversion.h │ ├── UIImageView+Letters.h │ ├── UIImageView+Reflect.h │ ├── UILabel+AutoSize.h │ ├── UILabel+AutomaticWriting.h │ ├── UILabel+ContenSize.h │ ├── UILabel+Space.h │ ├── UINavigationBar+Appear.h │ ├── UINavigationBar+Awesome.h │ ├── UINavigationController+Appear.h │ ├── UINavigationController+Hide.h │ ├── UINavigationController+Stack.h │ ├── UINavigationController+Transitions.h │ ├── UINavigationItem+Loading.h │ ├── UINavigationItem+Lock.h │ ├── UINavigationItem+Margin.h │ ├── UIResponder+Chain.h │ ├── UIResponder+FirstResponder.h │ ├── UIScreen+Info.h │ ├── UIScrollView+Amplification.h │ ├── UIScrollView+Frame.h │ ├── UIScrollView+PageNumber.h │ ├── UIScrollView+SimpleScroll.h │ ├── UISlider+Tap.h │ ├── UITabBarController+Hide.h │ ├── UITableView+CellStyle.h │ ├── UITableView+Placeholder.h │ ├── UITableView+Update.h │ ├── UITableView+iOS7Style.h │ ├── UITableViewCell+NIB.h │ ├── UITextField+InputLimit.h │ ├── UITextField+Select.h │ ├── UITextView+InputLimit.h │ ├── UITextView+PlaceHolder.h │ ├── UITextView+Select.h │ ├── UIView+Animation.h │ ├── UIView+Badge.h │ ├── UIView+BlockGesture.h │ ├── UIView+Border.h │ ├── UIView+Constraints.h │ ├── UIView+Find.h │ ├── UIView+Frame.h │ ├── UIView+Genie.h │ ├── UIView+NIB.h │ ├── UIView+Radius.h │ ├── UIView+Recursion.h │ ├── UIView+RelativeLayout.h │ ├── UIView+Screenshot.h │ ├── UIView+Shake.h │ ├── UIView+Skeleton.h │ ├── UIView+SubtractMask.h │ ├── UIView+Toast.h │ ├── UIView+ViewController.h │ ├── UIView+ViewPath.h │ ├── UIView+draggable.h │ ├── UIViewController+Alert.h │ ├── UIViewController+BackAction.h │ ├── UIViewController+KeyboardAnimation.h │ ├── UIViewController+MJPopupViewController.h │ ├── UIViewController+RecursiveDescription.h │ ├── UIViewController+Segues.h │ ├── UIViewController+TopBarMessage.h │ ├── UIViewController+Visible.h │ ├── UIWebView+JavaScript.h │ ├── UIWebView+Load.h │ ├── UIWebView+MetaParser.h │ ├── UIWebView+Style.h │ ├── UIWebView+SwipeGesture.h │ ├── UIWebView+WebStorage.h │ ├── UIWindow+Hierarchy.h │ └── metamacros.h └── libSICategory.a ├── README.md └── SICategory.podspec /.travis.yml: -------------------------------------------------------------------------------- 1 | osx_image: xcode10 2 | language: objective-c 3 | xcode_project: Category.xcodeproj # path to your xcodeproj folder 4 | xcode_scheme: Category 5 | xcode_destination: platform=iOS Simulator,iOS=11.3,name=iPhone X -------------------------------------------------------------------------------- /Category.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Category.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Category.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Category/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. 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 | -------------------------------------------------------------------------------- /Category/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "SIFPSManager.h" 11 | 12 | @interface AppDelegate () 13 | 14 | @end 15 | 16 | @implementation AppDelegate 17 | 18 | 19 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 20 | [[SIFPSManager sharedManager] open]; 21 | return YES; 22 | } 23 | 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Category/Assets.xcassets/AppIcon.appiconset/AppIcon1024×1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Category/Assets.xcassets/AppIcon.appiconset/AppIcon1024×1024.png -------------------------------------------------------------------------------- /Category/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Category/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@2x~ipad.png -------------------------------------------------------------------------------- /Category/Assets.xcassets/AppIcon.appiconset/AppIcon20x20~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Category/Assets.xcassets/AppIcon.appiconset/AppIcon20x20~ipad.png -------------------------------------------------------------------------------- /Category/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Category/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x~ipad.png -------------------------------------------------------------------------------- /Category/Assets.xcassets/AppIcon.appiconset/AppIcon29x29~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Category/Assets.xcassets/AppIcon.appiconset/AppIcon29x29~ipad.png -------------------------------------------------------------------------------- /Category/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Category/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x~ipad.png -------------------------------------------------------------------------------- /Category/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Category/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /Category/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Category/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /Category/Assets.xcassets/AppIcon.appiconset/AppIcon76x76@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Category/Assets.xcassets/AppIcon.appiconset/AppIcon76x76@2x~ipad.png -------------------------------------------------------------------------------- /Category/Assets.xcassets/AppIcon.appiconset/AppIcon76x76~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Category/Assets.xcassets/AppIcon.appiconset/AppIcon76x76~ipad.png -------------------------------------------------------------------------------- /Category/Assets.xcassets/AppIcon.appiconset/AppIcon83.5x83.5@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Category/Assets.xcassets/AppIcon.appiconset/AppIcon83.5x83.5@2x~ipad.png -------------------------------------------------------------------------------- /Category/MineViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MineViewController.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/5/29. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MineViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Category/MineViewController.m: -------------------------------------------------------------------------------- 1 | 2 | // 3 | // MineViewController.m 4 | // Category 5 | // 6 | // Created by Silence on 2017/5/29. 7 | // Copyright © 2017年 silence. All rights reserved. 8 | // 9 | 10 | #import "MineViewController.h" 11 | #import "UIViewController+BackAction.h" 12 | 13 | @interface MineViewController () 14 | 15 | @end 16 | 17 | @implementation MineViewController 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | [self backButtonTouched:^(UINavigationController *nav) { 22 | NSLog(@"点击了返回按钮") ; 23 | [nav popViewControllerAnimated:YES] ; 24 | }] ; 25 | } 26 | @end 27 | -------------------------------------------------------------------------------- /Category/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Category/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. 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 | -------------------------------------------------------------------------------- /CategoryTests/EXTADTTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTADTTest.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 19.06.12. 6 | // 7 | // 8 | 9 | #import 10 | #import "EXTADT.h" 11 | 12 | @interface EXTADTTest : XCTestCase 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /CategoryTests/EXTKeyPathCodingTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTKeyPathCodingTest.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 19.06.12. 6 | // 7 | // 8 | 9 | #import 10 | #import "EXTKeyPathCoding.h" 11 | 12 | @interface EXTKeyPathCodingTest : XCTestCase 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /CategoryTests/EXTKeypathWeakWarningTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTKeypathWeakWarningTest.h 3 | // extobjc 4 | // 5 | // Created by Javier Soto on 6/23/14. 6 | // 7 | // 8 | 9 | #import 10 | #import "EXTKeyPathCoding.h" 11 | 12 | @interface EXTKeypathWeakWarningTest : XCTestCase 13 | 14 | @end -------------------------------------------------------------------------------- /CategoryTests/EXTObjectiveCppCompileTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTObjectiveCppCompileTest.h 3 | // extobjc 4 | // 5 | // Created by Igor Kashkuta on 2013-04-01. 6 | // Released under the MIT license. 7 | // 8 | 9 | #import 10 | #import "extobjc.h" 11 | 12 | @interface EXTObjectiveCppCompileTest : XCTestCase 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /CategoryTests/EXTObjectiveCppCompileTest.mm: -------------------------------------------------------------------------------- 1 | // 2 | // EXTObjectiveCppCompileTest.mm 3 | // extobjc 4 | // 5 | // Created by Igor Kashkuta on 2013-04-01. 6 | // Released under the MIT license. 7 | // 8 | 9 | #import "EXTObjectiveCppCompileTest.h" 10 | 11 | @implementation EXTObjectiveCppCompileTest 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /CategoryTests/EXTRuntimeExtensionsTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTRuntimeExtensionsTest.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2011-03-06. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | #import 12 | #import "EXTRuntimeExtensions.h" 13 | 14 | @interface EXTRuntimeExtensionsTest : XCTestCase { 15 | 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /CategoryTests/EXTRuntimeTestProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTRuntimeTestProtocol.h 3 | // extobjc 4 | // 5 | // Created by Clay Bridges on 8/5/13. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @protocol EXTRuntimeTestProtocol 12 | 13 | @optional 14 | + (void)optionalClassMethod; 15 | - (void)optionalInstanceMethod; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /CategoryTests/EXTSafeCategoryTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTSafeCategoryTest.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2010-11-13. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | #import 12 | 13 | @interface EXTSafeCategoryTest : XCTestCase { 14 | 15 | } 16 | 17 | - (void)testSafeCategory; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /CategoryTests/EXTScopeTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTScopeTest.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2011-05-04. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | #import 12 | #import "EXTScope.h" 13 | 14 | @interface EXTScopeTest : XCTestCase { 15 | @private 16 | 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /CategoryTests/EXTSelectorCheckingTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTSelectorCheckingTest.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 26.06.12. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | #import "EXTSelectorChecking.h" 12 | 13 | @interface EXTSelectorCheckingTest : XCTestCase 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /CategoryTests/EXTSynthesizeTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTSynthesizeTest.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2012-09-04. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | 12 | @interface EXTSynthesizeTest : XCTestCase 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Classes/EXTObj/EXTObjc.h: -------------------------------------------------------------------------------- 1 | // 2 | // extobjc.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2010-11-09. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTADT.h" 11 | #import "EXTConcreteProtocol.h" 12 | #import "EXTKeyPathCoding.h" 13 | #import "EXTNil.h" 14 | #import "EXTSafeCategory.h" 15 | #import "EXTScope.h" 16 | #import "EXTSelectorChecking.h" 17 | #import "EXTSynthesize.h" 18 | #import "NSInvocation+EXT.h" 19 | #import "NSMethodSignature+EXT.h" 20 | 21 | -------------------------------------------------------------------------------- /Classes/EXTObj/EXTScope/EXTScope.m: -------------------------------------------------------------------------------- 1 | // 2 | // EXTScope.m 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2011-05-04. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTScope.h" 11 | 12 | void ext_executeCleanupBlock (__strong ext_cleanupBlock_t *block) { 13 | (*block)(); 14 | } 15 | 16 | -------------------------------------------------------------------------------- /Classes/EXTObj/EXTSelectorChecking/EXTSelectorChecking.m: -------------------------------------------------------------------------------- 1 | // 2 | // EXTSelectorChecking.m 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 26.06.12. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTSelectorChecking.h" 11 | 12 | @implementation NSString (EXTCheckedSelectorAdditions) 13 | - (SEL)ext_toSelector { 14 | return NSSelectorFromString(self); 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/Foundation/NSArray/NSArray+Contains.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+Contains.h 3 | // Category 4 | // 5 | // Created by Silence on 19/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSArray (Contains) 12 | 13 | 14 | /** 15 | 是否包含所有数组中元素 16 | 17 | @param array 要寻找的Array 18 | @return 是否包含 19 | */ 20 | -(BOOL)containsAll:(NSArray *)array; 21 | 22 | 23 | /** 24 | 是否包含其中任意一个元素 25 | 26 | @param array 要寻找的Array 27 | @return 是否包含 28 | */ 29 | -(BOOL)containsAny:(NSArray *)array; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Classes/Foundation/NSArray/NSArray+Contains.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+Contains.m 3 | // Category 4 | // 5 | // Created by Silence on 19/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import "NSArray+Contains.h" 10 | 11 | @implementation NSArray (Contains) 12 | 13 | -(BOOL)containsAll:(NSArray *)array{ 14 | for( id obj in array ) { 15 | if( ![self containsObject:obj] ) { 16 | return false; 17 | } 18 | } 19 | return true; 20 | } 21 | 22 | -(BOOL)containsAny:(NSArray *)array{ 23 | for( id obj in array ) { 24 | if( [self containsObject:obj] ) { 25 | return true; 26 | } 27 | } 28 | return false; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Classes/Foundation/NSArray/NSArray+JSONEncode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+JSONEncode.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSArray (JSONEncode) 12 | 13 | /** 14 | 转换为JSON 15 | 16 | @return JSON Sting 17 | */ 18 | - (NSString *)jsonStringEncoded; 19 | 20 | /** 21 | 返回格式化后JSON 22 | 23 | @return 格式化后的JSON String 24 | */ 25 | - (NSString *)jsonPrettyStringEncoded; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Classes/Foundation/NSData/NSData+APNSToken.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+APNSToken.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (APNSToken) 12 | 13 | /** 14 | * 将APNS NSData类型token 格式化成字符串 15 | * 16 | * @return 整理过后的字符串token 17 | */ 18 | - (NSString *)APNSToken; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/Foundation/NSData/NSData+APNSToken.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+APNSToken.m 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import "NSData+APNSToken.h" 10 | 11 | @implementation NSData (APNSToken) 12 | 13 | - (NSString *)APNSToken { 14 | return [[[[self description] 15 | stringByReplacingOccurrencesOfString: @"<" withString: @""] 16 | stringByReplacingOccurrencesOfString: @">" withString: @""] 17 | stringByReplacingOccurrencesOfString: @" " withString: @""]; 18 | } 19 | 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Classes/Foundation/NSData/NSData+Cache.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Cache.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (Cache) 12 | 13 | /** 14 | 根据key保存到磁盘里缓存起来 15 | 16 | @param key Key 17 | */ 18 | - (void)saveDataCacheWithKey:(NSString *)key; 19 | 20 | 21 | /** 22 | 根据key取出缓存data 23 | 24 | @param key Key 25 | @return 对象数据 26 | */ 27 | + (NSData *)getDataCacheWithKey:(NSString *)key; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Classes/Foundation/NSData/NSData+DataCache.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+DataCache.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (DataCache) 12 | 13 | /** 14 | * 将URL作为key保存到磁盘里缓存起来 15 | * 16 | * @param identifier url.absoluteString 17 | */ 18 | - (void)saveDataCacheWithIdentifier:(NSString *)identifier; 19 | 20 | /** 21 | * 取出缓存data 22 | * 23 | * @param identifier url.absoluteString 24 | * 25 | * @return 缓存 26 | */ 27 | + (NSData *)getDataCacheWithIdentifier:(NSString *)identifier; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Classes/Foundation/NSData/NSData+Encrypt.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Encrypt.h 3 | // Category 4 | // 5 | // Created by Silence on 30/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (Encrypt) 12 | 13 | /**利用AES加密数据*/ 14 | - (NSData *)encryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv; 15 | /**利用AES解密数据*/ 16 | - (NSData *)decryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv; 17 | 18 | /**利用3DES加密数据*/ 19 | - (NSData *)encryptedWith3DESUsingKey:(NSString*)key andIV:(NSData*)iv; 20 | /**利用3DES解密数据*/ 21 | - (NSData *)decryptedWith3DESUsingKey:(NSString*)key andIV:(NSData*)iv; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Classes/Foundation/NSDate/NSDate+Cupertino.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+Cupertino.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDate (Cupertino) 12 | 13 | - (NSDate *)beginningOfDay; 14 | - (NSDate *)endOfDay; 15 | 16 | - (NSDate *)beginningOfWeek; 17 | - (NSDate *)endOfWeek; 18 | 19 | - (NSDate *)beginningOfMonth; 20 | - (NSDate *)endOfMonth; 21 | 22 | 23 | - (NSDate *)beginningOfYear; 24 | - (NSDate *)endOfYear; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Classes/Foundation/NSDictionary/NSDictionary+JSONEncode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+JSONEncode.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (JSONEncode) 12 | 13 | /** 14 | JSON String Encoded 15 | 16 | @return JSON String 17 | */ 18 | - (nullable NSString *)jsonStringEncoded; 19 | 20 | 21 | /** 22 | JSON PrettyString Encoded 23 | 24 | @return JSON Pretty String 25 | */ 26 | - (nullable NSString *)jsonPrettyStringEncoded; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Classes/Foundation/NSDictionary/NSDictionary+Merge.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+Merge.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (Merge) 12 | 13 | /** 合并两个NSDictionary */ 14 | + (NSDictionary *)dictionaryByMerging:(NSDictionary *)dict1 with:(NSDictionary *)dict2; 15 | 16 | /** 并入一个NSDictionary */ 17 | - (NSDictionary *)dictionaryByMergingWith:(NSDictionary *)dict; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/Foundation/NSDictionary/NSDictionary+Plist.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+Plist.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface NSDictionary (Plist) 13 | 14 | /// 根据Plist数据初始化字典 15 | + (instancetype)dictionaryWithPlistData:(NSData *)plist; 16 | /// 根绝Plist String初始化字典 17 | + (instancetype)dictionaryWithPlistString:(NSString *)plist; 18 | 19 | /// Plist 数据信息 20 | - (NSData *)plistData; 21 | /// Plist String 22 | - (NSString *)plistString; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Classes/Foundation/NSDictionary/NSDictionary+URL.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+URL.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (URL) 12 | 13 | /// 将url参数转换成NSDictionary 14 | + (NSDictionary *)dictionaryWithURLQuery:(NSString *)query; 15 | /// 将NSDictionary转换成url参数字符串 16 | - (NSString *)URLQueryString; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Classes/Foundation/NSFileHandle/NSFileHandle+ReadLine.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSFileHandle+ReadLine.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSFileHandle (ReadLine) 12 | 13 | /** 14 | * @brief A Cocoa / Objective-C NSFileHandle category that adds the ability to read a file line by line. 15 | 16 | * 17 | * @param theDelimier 分隔符 18 | * 19 | * @return An NSData* object is returned with the line if found, or nil if no more lines were found 20 | */ 21 | - (NSData *)readLineWithDelimiter:(NSString *)theDelimier; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Classes/Foundation/NSIndexPath/NSIndexPath+Offset.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSIndexPath+Offset.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSIndexPath (Offset) 12 | 13 | /// previous row indexpath 14 | - (NSIndexPath *)previousRow; 15 | 16 | /// next row indexpath 17 | - (NSIndexPath *)nextRow; 18 | 19 | /// previous item indexpath 20 | - (NSIndexPath *)previousItem; 21 | 22 | /// next item indexpath 23 | - (NSIndexPath *)nextItem; 24 | 25 | /// next section indexpath 26 | - (NSIndexPath *)nextSection; 27 | 28 | /// previous section indexpath 29 | - (NSIndexPath *)previousSection; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Classes/Foundation/NSNotificationCenter/NSNotificationCenter+AutoRemove.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNotificationCenter+AutoRemove.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNotificationCenter (AutoRemove) 12 | 13 | /// 设置是否自动移除监听 14 | + (void)setNotificationAutoRemoveEnable:(BOOL)enable; 15 | /// 获取自动移除监听是否开启 16 | + (BOOL)notificationAutoRemoveEnable; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Classes/Foundation/NSNumber/NSNumber+Display.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+Display.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNumber (Display) 12 | 13 | /// 显示指定精读 14 | - (NSString *)displayNumberWithDigit:(NSInteger)digit; 15 | 16 | /// 显示百分比 17 | - (NSString *)displayPercentageWithDigit:(NSInteger)digit; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/Foundation/NSNumber/NSNumber+Roman.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+Roman.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNumber (Roman) 12 | 13 | /** 返回自己对应的罗马数字 */ 14 | - (NSString *)romanNumeral; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/Foundation/NSNumber/NSNumber+Round.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+Round.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNumber (Round) 12 | 13 | /** 14 | * @brief 四舍五入 15 | * @param digit 限制最大位数 16 | * @return 结果 17 | */ 18 | - (NSNumber*)roundWithDigit:(NSUInteger)digit; 19 | 20 | /** 21 | * @brief 取上整 22 | * @param digit 限制最大位数 23 | * @return 结果 24 | */ 25 | - (NSNumber*)ceilWithDigit:(NSUInteger)digit; 26 | 27 | /** 28 | * @brief 取下整 29 | * @param digit 限制最大位数 30 | * @return 结果 31 | */ 32 | - (NSNumber*)floorWithDigit:(NSUInteger)digit; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Classes/Foundation/NSObject/NSObject+Block.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Block.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (Block) 12 | 13 | + (id)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay; 14 | + (id)performBlock:(void (^)(id arg))block withObject:(id)anObject afterDelay:(NSTimeInterval)delay; 15 | - (id)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay; 16 | - (id)performBlock:(void (^)(id arg))block withObject:(id)anObject afterDelay:(NSTimeInterval)delay; 17 | 18 | + (void)cancelBlock:(id)block; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/Foundation/NSObject/NSObject+Dealloc.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Dealloc.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/5/25. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^DeallocBlock)(void); 12 | 13 | @interface NSObject (Dealloc) 14 | 15 | - (void)executeAtDealloc:(DeallocBlock)block; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/Foundation/NSObject/NSObject+Parse.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Parse.h 3 | // Category 4 | // 5 | // Created by Silence on 19/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (Parse) 12 | 13 | /// 转换为String 14 | - (NSString *)toString; 15 | 16 | /// 转换为Number 17 | - (NSNumber *)toNumber; 18 | 19 | /// 转化为Dictionary 20 | - (NSDictionary *)toDictionary; 21 | 22 | /// 转换为Array 23 | - (NSArray *)toArray; 24 | 25 | /// 转换为Array 26 | - (NSArray *)toArrayOf:(Class)itemClass; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Classes/Foundation/NSObject/NSObject+PerformSelector.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+PerformSelector.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/8/23. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (PerformSelector) 12 | 13 | - (id)performSelector:(SEL)aSelector withObjects:(NSArray *)objects; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Classes/Foundation/NSObject/NSObject+QuickCode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+QuickCode.h 3 | // Category 4 | // 5 | // Created by Silence on 30/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (QuickCode) 12 | 13 | /** 快速归档 */ 14 | - (id)quickCoderWith:(NSCoder *)aDecoder ; 15 | 16 | /** 快速解档 */ 17 | - (void)quickEncodeWithCoder:(NSCoder *)aCoder ; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/Foundation/NSObject/NSObject+QuickCopy.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+QuickCopy.h 3 | // Category 4 | // 5 | // Created by Silence on 30/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (QuickCopy) 12 | 13 | /** 快速浅复制目标的所有属性 */ 14 | - (BOOL)quickCopy:(NSObject *)instance ; 15 | 16 | /** 快速深复制目标的所有属性 */ 17 | - (BOOL)quickDeepCopy:(NSObject *)instance ; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/Foundation/NSObject/NSObject+Semaphore.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Semaphore.h 3 | // Category 4 | // 5 | // Created by Silence on 2020/1/8. 6 | // Copyright © 2020年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSObject (Semaphore) 14 | 15 | - (dispatch_semaphore_t)semaphoreWithKey:(void*)key; 16 | 17 | - (dispatch_semaphore_t)semaphoreWithKey:(void*)key andValue:(long)value; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Classes/Foundation/NSString/NSString+AES.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+AES.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/11/15. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (AES) 12 | 13 | /// 加密方法 14 | - (NSString *)encryptWithAESwithKey:(NSString *)key ivParameter:(NSString *)ivParameter; 15 | 16 | /// 解密方法 17 | - (NSString*)decryptWithAESwithKey:(NSString *)key ivParameter:(NSString *)ivParameter; 18 | 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/Foundation/NSString/NSString+Append.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Append.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/12/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (Append) 12 | 13 | - (NSString *)appendHomePath; 14 | - (NSString *)appendDocumentPath; 15 | - (NSString *)appendCachePath; 16 | - (NSString *)appendMainBundlePath; 17 | - (NSString *)appendTempPath; 18 | - (NSString *)appendPreferencesPath; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/Foundation/NSString/NSString+Contains.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Contains.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (Contains) 12 | 13 | /**是否包含中文*/ 14 | - (BOOL)isContainChinese; 15 | 16 | /**是否包含空格*/ 17 | - (BOOL)isContainBlank; 18 | 19 | /**是否包含set*/ 20 | - (BOOL)containsCharacterSet:(NSCharacterSet *)set; 21 | 22 | /**是否包含String*/ 23 | - (BOOL)containsString:(NSString *)string; 24 | 25 | /**字符数量*/ 26 | - (int)wordsCount; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Classes/Foundation/NSString/NSString+JSONValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+JSONValue.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (JSONValue) 12 | 13 | /// JSON String 转换为字典 14 | - (NSDictionary *)JSONDictionaryValue ; 15 | 16 | /// JSON String 转换为数组 17 | - (NSArray *)JSONArrayValue ; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/Foundation/NSString/NSString+MIME.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+MIME.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (MIME) 12 | 13 | 14 | /** 15 | 文件名的MIME 16 | 17 | @return MIME 18 | */ 19 | - (NSString *)MIMEType; 20 | 21 | /** 22 | 根绝后辍名获取MIME Type 23 | 24 | @param extension 后辍名 25 | @return MIME 26 | */ 27 | + (NSString *)MIMETypeForExtension:(NSString *)extension; 28 | 29 | /** 30 | MIMEDict信息 31 | 32 | @return MIMEDict字典 33 | */ 34 | + (NSDictionary *)MIMEDict; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Classes/Foundation/NSString/NSString+QRcode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+QRcode.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class UIImage; 12 | @interface NSString (QRcode) 13 | 14 | /** 15 | String的二维码信息 16 | 17 | @return String的二维码图片 18 | */ 19 | - (UIImage *)QRcode ; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Classes/Foundation/NSString/NSString+XML.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+XML.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (XML) 12 | 13 | /** 14 | * xml字符串转换成NSDictionary 15 | * 16 | * @return NSDictionary 17 | */ 18 | -(NSDictionary *)XMLDictionary; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/Foundation/NSTimer/NSTimer+Pause.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSTimer+Pause.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/14. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSTimer (Pause) 12 | 13 | /// 暂停NSTimer 14 | - (void)pauseTimer; 15 | 16 | /// 开始NSTimer 17 | - (void)resumeTimer; 18 | 19 | /// 延迟开始NSTimer 20 | - (void)resumeTimerAfterTimeInterval:(NSTimeInterval)interval; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Classes/Foundation/NSURLProtocol/NSURLProtocol+WKWebViewSupport.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSURLProtocol+WKWebViewSupport.h 3 | // Category 4 | // 5 | // Created by Silence on 2020/4/26. 6 | // Copyright © 2020年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NSURLProtocol (WKWebViewSupport) 14 | 15 | + (void)wk_registerScheme:(NSString *)scheme; 16 | + (void)wk_unregisterScheme:(NSString *)scheme; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Classes/Foundation/NSUserDefaults/NSUserDefaults+iCloudSync.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSUserDefaults+iCloudSync.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/14. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSUserDefaults (iCloudSync) 12 | 13 | -(void)setValue:(id)value forKey:(NSString *)key iCloudSync:(BOOL)sync; 14 | -(void)setObject:(id)value forKey:(NSString *)key iCloudSync:(BOOL)sync; 15 | 16 | -(id)valueForKey:(NSString *)key iCloudSync:(BOOL)sync; 17 | -(id)objectForKey:(NSString *)key iCloudSync:(BOOL)sync; 18 | 19 | -(BOOL)synchronizeAlsoiCloudSync:(BOOL)sync; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Classes/Macros/SIARCMacro.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIARCMacros.h 3 | // Category 4 | // 5 | // Created by Silence on 16/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | // 强弱引用 10 | #define WeakSelf __weak __typeof(self) weakSelf = self; 11 | #define StrongSelf __strong __typeof(weakSelf)strongSelf = weakSelf; 12 | -------------------------------------------------------------------------------- /Classes/Macros/SICoreGraphicsMacro.h: -------------------------------------------------------------------------------- 1 | // 2 | // SICoreGraphicsMacros.h 3 | // Category 4 | // 5 | // Created by Silence on 16/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #define CGizeMultiply(size, mult) CGSizeMake(size.width * mult, size.height * mult) 10 | 11 | #define CGizeWith320(size) CGizeMultiply(size, [UIScreen mainScreen].bounds.size.width / 320) 12 | #define CGizeWith375(size) CGizeMultiply(size, [UIScreen mainScreen].bounds.size.width / 375) 13 | 14 | -------------------------------------------------------------------------------- /Classes/Macros/SIMathMacro.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIMaths.h 3 | // Category 4 | // 5 | // Created by Silence on 16/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | // 度弧度转换 10 | #define DEGREES_TO_RADIANS(degrees) ((degrees*M_PI)/180.0) 11 | #define RADIANS_TO_DEGREES(radians) ((radians*180.0)/M_PI) 12 | 13 | // 随机Int 14 | #define RANDOM_INT(from,to) ((int)((from) + arc4random() % ((to)-(from) + 1))) 15 | 16 | -------------------------------------------------------------------------------- /Classes/Manager/AppVersion/SIAppVersionManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIAppVersionManager.h 3 | // Category 4 | // 5 | // Created by Silence on 24/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SIAppVersionManager : NSObject 12 | 13 | /// 单例 14 | + (SIAppVersionManager *)sharedManager ; 15 | 16 | /// 检查新版本 17 | - (void)checkVersionWithAppID:(NSString *)appID showNewestMsg:(BOOL)showMsg; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/Manager/Debug/FPS/SIFPSManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIFPSManager.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/12/6. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SIFPSManager : UIWindow 12 | 13 | + (SIFPSManager *)sharedManager; 14 | 15 | - (void)open; 16 | - (void)close; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Classes/Manager/Proxy/SIProxyManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIProxyManager.h 3 | // Category 4 | // 5 | // Created by Silence on 2018/9/27. 6 | // Copyright © 2018年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | /// 将消息进行分发 13 | @interface SIProxyManager : NSObject 14 | 15 | - (void)addTarger:(id)target; 16 | - (void)removeTarget:(id)target; 17 | 18 | @property (nonatomic,strong,readonly) NSPointerArray *targets; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Classes/QuartzCore/CALayer/CALayer+Frame.h: -------------------------------------------------------------------------------- 1 | // 2 | // CALayer+Frame.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/4/24. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CALayer (Frame) 12 | 13 | @property CGFloat top; 14 | @property CGFloat bottom; 15 | @property CGFloat left; 16 | @property CGFloat right; 17 | 18 | @property CGFloat centerX; 19 | @property CGFloat centerY; 20 | 21 | @property CGFloat height; 22 | @property CGFloat width; 23 | 24 | @property CGPoint center; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Classes/QuartzCore/CAShapeLayer/CAShapeLayer+UIBezierPath.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayer+UIBezierPath.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/4/24. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface CAShapeLayer (UIBezierPath) 13 | 14 | /**Update CAShapeLayer with UIBezierPath.*/ 15 | - (void)updateWithBezierPath:(UIBezierPath *)path; 16 | 17 | /**Get UIBezierPath object, constructed from CAShapeLayer.*/ 18 | - (UIBezierPath *)bezierPath; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/QuartzCore/SIQuartzCore.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIQuartzCore.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/4/24. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #ifndef SIQuartzCore_h 10 | #define SIQuartzCore_h 11 | 12 | #import "CALayer+Frame.h" 13 | #import "CALayer+Property.h" 14 | 15 | #import "CATransaction+AnimateWithDuration.h" 16 | 17 | #import "CAShapeLayer+UIBezierPath.h" 18 | 19 | #import "CAAnimation+EasingEquations.h" 20 | 21 | #import "CAMediaTimingFunction+AdditionalEquations.h" 22 | 23 | #endif /* SIQuartzCore_h */ 24 | -------------------------------------------------------------------------------- /Classes/SICategory.h: -------------------------------------------------------------------------------- 1 | // 2 | // SICategory.h 3 | // Category 4 | // 5 | // Created by Silence on 07/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #ifndef SICategory_h 10 | #define SICategory_h 11 | 12 | #import "SIFoundation.h" 13 | #import "SIUIKit.h" 14 | #import "SIMacros.h" 15 | #import "EXTObjc.h" 16 | #import "SIManager.h" 17 | #import "SIQuartzCore.h" 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /Classes/UIKit/UIApplication/UIApplication+KeyboardFrame.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+KeyboardFrame.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIApplication (KeyboardFrame) 12 | 13 | @property (nonatomic,readonly) CGRect keyboardFrame ; /// 键盘的Frame 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Classes/UIKit/UIApplication/UIApplication+UIDebug.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+UIDebug.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/5/27. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIApplication (UIDebug) 12 | 13 | /// 显示系统自带的UI调试插件(UIDebuggingInformationOverlay) 14 | + (void)showDebuggingInformationOverlay ; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UIBezierPath/UIBezierPath+BasicShapes.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBezierPath+BasicShapes.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBezierPath (BasicShapes) 12 | 13 | + (UIBezierPath *)heartShape:(CGRect)originalFrame; 14 | + (UIBezierPath *)userShape:(CGRect)originalFrame; 15 | + (UIBezierPath *)martiniShape:(CGRect)originalFrame; 16 | + (UIBezierPath *)beakerShape:(CGRect)originalFrame; 17 | + (UIBezierPath *)starShape:(CGRect)originalFrame; 18 | + (UIBezierPath *)stars:(NSUInteger)numberOfStars shapeInFrame:(CGRect)originalFrame; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/UIKit/UIBezierPath/UIBezierPath+Length.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBezierPath+Length.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBezierPath (Length) 12 | 13 | - (CGFloat)length; 14 | 15 | - (CGPoint)pointAtPercentOfLength:(CGFloat)percent; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/UIKit/UIBezierPath/UIBezierPath+SVGString.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBezierPath+SVGString.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBezierPath (SVGString) 12 | 13 | /// UIBezierPath转成SVG 14 | - (NSString*)SVGString; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UIButton/UIButton+BackgroundColor.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+BackgroundColor.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (BackgroundColor) 12 | 13 | 14 | /** 15 | 给按钮设置背景颜色 16 | 17 | @param backgroundColor Color 18 | @param state 按钮的状态 19 | */ 20 | - (void)setBackgroundColor:(UIColor *)backgroundColor forState:(UIControlState)state; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Classes/UIKit/UIButton/UIButton+Block.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Block.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^TouchedBlock)(id sender); 12 | @interface UIButton (Block) 13 | 14 | /// 给点击状态添加事件 15 | -(void)addActionHandler:(TouchedBlock)touchHandler; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/UIKit/UIButton/UIButton+ClickEdgeInsets.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+ClickEdgeInsets.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /// 改变按钮的响应区域 12 | @interface UIButton (ClickEdgeInsets) 13 | 14 | /// 上左下右分别增加或减小多少 正数为增加 负数为减小 15 | @property (nonatomic, assign) UIEdgeInsets clickEdgeInsets; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/UIKit/UIButton/UIButton+CountDown.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+CountDown.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (CountDown) 12 | 13 | /** 14 | 倒计时按钮 15 | 16 | @param timeout 总时间 17 | @param waitBlock 倒计时过程中可以再里面做一些操作 18 | @param finishBlock 完成时执行的block 19 | */ 20 | - (void)startTime:(NSInteger)timeout waitBlock:(void(^)(NSInteger remainTime))waitBlock finishBlock:(void(^)(void))finishBlock; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Classes/UIKit/UIButton/UIButton+Indicator.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Indicator.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (Indicator) 12 | 13 | /// 显示菊花 14 | - (void)showIndicator; 15 | 16 | /// 隐藏菊花 17 | - (void)hideIndicator; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/UIKit/UIButton/UIButton+Submitting.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Submitting.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (Submitting) 12 | 13 | /// 按钮点击后,禁用按钮并在按钮上显示ActivityIndicator,以及title 按钮上显示的文字 14 | - (void)beginSubmitting:(NSString *)title; 15 | 16 | /// 按钮点击后,恢复按钮点击前的状态 17 | - (void)endSubmitting; 18 | 19 | /// 按钮是否正在提交中 20 | @property(nonatomic, readonly, getter=isSubmitting) NSNumber *submitting; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Classes/UIKit/UIColor/UIColor+Random.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+Random.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIColor (Random) 12 | 13 | /// 随机颜色 14 | + (UIColor *)randomColor ; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UIColor/UIColor+Random.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+Random.m 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import "UIColor+Random.h" 10 | 11 | @implementation UIColor (Random) 12 | 13 | + (UIColor *)randomColor{ 14 | NSInteger aRedValue = arc4random() % 255; 15 | NSInteger aGreenValue = arc4random() % 255; 16 | NSInteger aBlueValue = arc4random() % 255; 17 | UIColor *randColor = [UIColor colorWithRed:aRedValue / 255.0f green:aGreenValue / 255.0f blue:aBlueValue / 255.0f alpha:1.0f]; 18 | return randColor; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Classes/UIKit/UIControl/UIControl+Sound.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIControl+Sound.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIControl (Sound) 12 | 13 | /// 不同事件增加不同声音 14 | - (void)setSoundNamed:(NSString *)name forControlEvent:(UIControlEvents)controlEvent; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UIDevice/UIDevice+CPU.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIDevice+CPU.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIDevice (CPU) 12 | 13 | @property (nonatomic,readonly) NSUInteger cpuNumber ; /// CPU核心数 14 | @property (nonatomic,readonly) NSUInteger cpuFrequency ; /// CPU频率 15 | @property (nonatomic,readonly) NSUInteger busFrequency ; /// BUS频率 16 | 17 | @property (nonatomic,readonly) float cpuUsage ; /// CPU利用率 18 | @property (nonatomic,readonly) NSArray *cpuUsagePerProcessor ; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/UIKit/UIFont/UIFont+Load.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont+Load.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIFont (Load) 12 | 13 | /// Load the font from file path. Support format:TTF,OTF. 14 | /// If return YES, font can be load use it PostScript Name: [UIFont fontWithName:...] 15 | + (BOOL)loadFontFromPath:(NSString *)path; 16 | + (void)unloadFontFromPath:(NSString *)path; 17 | 18 | + (UIFont *)loadFontFromData:(NSData *)data; 19 | + (BOOL)unloadFontFromData:(UIFont *)font; 20 | 21 | + (NSData *)dataFromFont:(UIFont *)font; 22 | + (NSData *)dataFromCGFont:(CGFontRef)cgFont; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Classes/UIKit/UIFont/UIFont+Make.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont+Make.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface UIFont (Make) 13 | 14 | - (UIFont *)fontWithBold ; 15 | - (UIFont *)fontWithItalic ; 16 | - (UIFont *)fontWithBoldItalic ; 17 | - (UIFont *)fontWithNormal ; 18 | 19 | + (UIFont *)fontWithCTFont:(CTFontRef)CTFont; 20 | + (UIFont *)fontWithCGFont:(CGFontRef)CGFont size:(CGFloat)size; 21 | 22 | - (CTFontRef)CTFontRef ; 23 | - (CGFontRef)CGFontRef ; 24 | 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Classes/UIKit/UIFont/UIFont+TTF.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont+TTF.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIFont (TTF) 12 | 13 | + (UIFont *)fontWithTTFAtPath:(NSString *)path size:(CGFloat)size; 14 | + (UIFont *)fontWithTTFAtURL:(NSURL *)URL size:(CGFloat)size; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UIFont/UIFont+Traits.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont+Traits.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIFont (Traits) 12 | 13 | @property (nonatomic, readonly) BOOL isBold; 14 | @property (nonatomic, readonly) BOOL isItalic; 15 | @property (nonatomic, readonly) BOOL isMonoSpace; 16 | @property (nonatomic, readonly) BOOL isColorGlyphs; 17 | @property (nonatomic, readonly) CGFloat fontWeight; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/UIKit/UIGestureRecognizer/UIGestureRecognizer+ALActionBlocks.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIGestureRecognizer+ALActionBlocks.h 3 | // ALActionBlocks 4 | // 5 | // Created by Andy LaVoy on 10/17/13. 6 | // Copyright (c) 2013 Andy LaVoy. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "UIControl+ALActionBlocks.h" 11 | 12 | @interface UIGestureRecognizer (ALActionBlocks) 13 | 14 | + (instancetype)gestureRecognizerWithBlock:(ALActionBlock)actionBlock; 15 | - (void)setBlock:(ALActionBlock)actionBlock; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/UIKit/UIImage/UIImage+BetterFace.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+BetterFace.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSUInteger, Accuracy) { 12 | AccuracyLow = 0, 13 | AccuracyHigh, 14 | }; 15 | @interface UIImage (BetterFace) 16 | 17 | - (UIImage *)betterFaceImageForSize:(CGSize)size 18 | accuracy:(Accuracy)accurary; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/UIKit/UIImage/UIImage+Capture.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Capture.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Capture) 12 | 13 | /** 14 | 截取View生成图片 15 | 16 | @param view 视图 17 | @return 生成的图片 18 | */ 19 | + (UIImage *)captureWithView:(UIView *)view ; 20 | 21 | /// 对图片进行缩放 22 | + (UIImage *)imageWithSize:(CGRect)myImageRect FromImage:(UIImage *)bigImage; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Classes/UIKit/UIImage/UIImage+FileName.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+FileName.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (FileName) 12 | 13 | /// 根据main bundle中的文件名读取图片 14 | + (UIImage *)imageWithFileName:(NSString *)name; 15 | 16 | /// 根据指定bundle中的文件名读取图片 17 | + (UIImage *)imageWithFileName:(NSString *)name inBundle:(NSBundle*)bundle; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/UIKit/UIImage/UIImage+Merge.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Merge.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Merge) 12 | 13 | /** 14 | Merge Image 15 | 16 | @param firstImage 第一张图片 17 | @param secondImage 第二章图片 18 | @return Image 19 | */ 20 | + (UIImage*)mergeImage:(UIImage*)firstImage withImage:(UIImage*)secondImage ; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Classes/UIKit/UIImage/UIImage+Video.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Video.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/14. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Video) 12 | 13 | /// 获取视频的截图信息 14 | + (UIImage *)imageWithVideo:(NSString *)stringURL; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UIImageView/UIImageView+GeometryConversion.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+GeometryConversion.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImageView (GeometryConversion) 12 | 13 | - (CGPoint)convertPointFromImage:(CGPoint)imagePoint; 14 | - (CGRect)convertRectFromImage:(CGRect)imageRect; 15 | 16 | - (CGPoint)convertPointFromView:(CGPoint)viewPoint; 17 | - (CGRect)convertRectFromView:(CGRect)viewRect; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/UIKit/UIImageView/UIImageView+Reflect.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+Reflect.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImageView (Reflect) 12 | 13 | /// 倒影 14 | - (void)reflect; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UILabel/UILabel+ContenSize.h: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+ContenSize.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UILabel (ContenSize) 12 | 13 | 14 | /** 15 | Content的Size 16 | 17 | @param width 限制宽度 18 | @return Size 19 | */ 20 | - (CGSize)contentSizeForWidth:(CGFloat)width; 21 | 22 | 23 | /** 24 | Content Size 25 | 26 | @return Size 27 | */ 28 | - (CGSize)contentSize; 29 | 30 | 31 | /** 32 | 是否被截断 33 | 34 | @return 是否被截断 35 | */ 36 | - (BOOL)isTruncated; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Classes/UIKit/UILabel/UILabel+Space.h: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+Space.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UILabel (Space) 12 | 13 | /// 设置字间距 14 | - (void)setColumnSpace:(CGFloat)columnSpace; 15 | 16 | /// 设置行距 17 | - (void)setRowSpace:(CGFloat)rowSpace; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/UIKit/UINavigationBar/UINavigationBar+Appear.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationBar+Appear.h 3 | // Category 4 | // 5 | // Created by Silence on 07/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationBar (Appear) 12 | 13 | /// 隐藏阴影 14 | - (void)hideBottomShadow; 15 | /// 显示阴影 16 | - (void)showBottomShadow; 17 | 18 | /// 导航栏透明 19 | - (void)makeTransparent; 20 | /// 默认导航栏 21 | - (void)makeDefault; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Classes/UIKit/UINavigationBar/UINavigationBar+Awesome.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationBar+Awesome.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationBar (Awesome) 12 | 13 | - (void)setBackgroundColor:(UIColor *)backgroundColor; 14 | - (void)setElementsAlpha:(CGFloat)alpha; 15 | - (void)setTranslationY:(CGFloat)translationY; 16 | - (void)reset; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Classes/UIKit/UINavigationController/UINavigationController+Hide.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+Hide.h 3 | // HIdeDemo 4 | // 5 | // Created by Silence on 17/01/2017. 6 | // Copyright © 2017 Silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationController (Hide) 12 | 13 | @property (nonatomic,getter=isNavBarHidden,readonly) BOOL navBarHidden ; /// 导航栏是否隐藏 14 | 15 | 16 | /** 17 | 设置NavBar隐藏 18 | 19 | @param hidden Hidden 20 | @param animated 是否有动画 21 | @param completion 完成回调 22 | */ 23 | - (void)setNavBarHidden:(BOOL)hidden 24 | animated:(BOOL)animated 25 | completion:(void (^)(BOOL finished))completion; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Classes/UIKit/UINavigationItem/UINavigationItem+Lock.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationItem+Lock.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationItem (Lock) 12 | 13 | /** 14 | * @brief 锁定RightItem 15 | * 16 | * @param lock 是否锁定 17 | */ 18 | - (void)lockRightItem:(BOOL)lock; 19 | /** 20 | * @brief 锁定LeftItem 21 | * 22 | * @param lock 是否锁定 23 | */ 24 | - (void)lockLeftItem:(BOOL)lock; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Classes/UIKit/UIResponder/UIResponder+Chain.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+Chain.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. 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 | -------------------------------------------------------------------------------- /Classes/UIKit/UIResponder/UIResponder+FirstResponder.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+FirstResponder.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIResponder (FirstResponder) 12 | 13 | /** 14 | * @brief 当前第一响应者 15 | * 16 | * @return 当前第一响应者 17 | */ 18 | + (id)currentFirstResponder; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/UIKit/UIResponder/UIResponder+FirstResponder.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+FirstResponder.m 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import "UIResponder+FirstResponder.h" 10 | 11 | static __weak id currentFirstResponder; 12 | @implementation UIResponder (FirstResponder) 13 | 14 | + (id)currentFirstResponder { 15 | currentFirstResponder = nil; 16 | [[UIApplication sharedApplication] sendAction:@selector(findCurrentFirstResponder:) to:nil from:nil forEvent:nil]; 17 | return currentFirstResponder; 18 | } 19 | 20 | - (void)findCurrentFirstResponder:(id)sender { 21 | currentFirstResponder = self; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Classes/UIKit/UIScrollView/UIScrollView+Amplification.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+Amplification.h 3 | // Category 4 | // 5 | // Created by Silence on 04/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (Amplification) 12 | 13 | @property (nonatomic, strong) UIView *bigView; 14 | @property (nonatomic, strong) UIView *headerView; 15 | -(void)setBigView:(UIView *)bigView withHeaderView:(UIView *)headerView; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/UIKit/UIScrollView/UIScrollView+PageNumber.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+PageNumber.h 3 | // Category 4 | // 5 | // Created by Silence on 04/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (PageNumber) 12 | 13 | -(NSInteger)totalPages; 14 | 15 | -(void)setPageNumber:(NSInteger)pageNumber animated:(BOOL)animated; 16 | -(void)setPageNumber:(NSInteger)pageNumber; 17 | -(NSInteger)pageNumber; 18 | 19 | -(BOOL)isLastPage; 20 | -(BOOL)isFirstPage; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Classes/UIKit/UIScrollView/UIScrollView+SimpleScroll.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+SimpleScroll.h 3 | // Category 4 | // 5 | // Created by Silence on 04/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (SimpleScroll) 12 | 13 | - (void)scrollToTop; 14 | - (void)scrollToBottom; 15 | - (void)scrollToLeft; 16 | - (void)scrollToRight; 17 | 18 | - (void)scrollToTopAnimated:(BOOL)animated; 19 | - (void)scrollToBottomAnimated:(BOOL)animated; 20 | - (void)scrollToLeftAnimated:(BOOL)animated; 21 | - (void)scrollToRightAnimated:(BOOL)animated; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Classes/UIKit/UISlider/UISlider+Tap.h: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+Tap.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/12. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UISlider (Tap) 12 | 13 | /// 单击手势,会自动到对应比例 14 | - (void)addTapGestureWithTarget: (id)target action: (SEL)action; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UITabBarController/UITabBarController+Hide.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITabBarController+Hide.h 3 | // HIdeDemo 4 | // 5 | // Created by Silence on 17/01/2017. 6 | // Copyright © 2017 Silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITabBarController (Hide) 12 | 13 | @property (nonatomic,getter=isTabBarHidden,readonly) BOOL tabBarHidden ; 14 | 15 | 16 | /** 17 | 设置Tabbar隐藏 18 | 19 | @param hidden 是否隐藏 20 | @param animated 是否有动画 21 | @param completion 返回回调 22 | */ 23 | - (void)setTabBarHidden:(BOOL)hidden 24 | animated:(BOOL)animated 25 | completion:(void (^)(BOOL finished))completion; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Classes/UIKit/UITableView/UITableView+Placeholder.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+Placeholder.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/12/20. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^PlaceholderClickBlock)(UIView *view); 12 | 13 | @interface UITableView (Placeholder) 14 | 15 | @property (nonatomic, assign) BOOL showPlaceholder; 16 | 17 | @property (nonatomic, copy) PlaceholderClickBlock placeholderClickBlock; 18 | @property (nonatomic, copy) NSString *placeholderText; 19 | @property (nonatomic, copy) UIImage *placeholderImage; 20 | @property (nonatomic, copy) UIView *placeholderCustomView; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Classes/UIKit/UITableView/UITableView+iOS7Style.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+iOS7Style.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITableView (iOS7Style) 12 | 13 | /** 14 | * @brief ios7设置页面的UITableViewCell样式 15 | * 16 | * @param cell cell 17 | * @param indexPath indexPath 18 | */ 19 | -(void)applyiOS7SettingsStyleGrouping:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Classes/UIKit/UITableViewCell/UITableViewCell+NIB.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableViewCell+NIB.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITableViewCell (NIB) 12 | 13 | /// 加载同类名的nib 14 | + (UINib*)nib; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UITableViewCell/UITableViewCell+NIB.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITableViewCell+NIB.m 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import "UITableViewCell+NIB.h" 10 | 11 | @implementation UITableViewCell (NIB) 12 | 13 | + (UINib *)nib { 14 | return [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil]; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/UIKit/UITextField/UITextField+InputLimit.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+InputLimit.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextField (InputLimit) 12 | 13 | @property (assign, nonatomic) NSInteger maxLength ; // <= 0无限制 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Classes/UIKit/UITextField/UITextField+Select.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+Select.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextField (Select) 12 | 13 | /** 14 | * 当前选中的字符串范围 15 | * 16 | * @return NSRange 17 | */ 18 | - (NSRange)selectedRange; 19 | /** 20 | * 选中所有文字 21 | */ 22 | - (void)selectAllText; 23 | /** 24 | * 选中指定范围的文字 25 | * 26 | * @param range NSRange范围 27 | */ 28 | - (void)setSelectedRange:(NSRange)range; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Classes/UIKit/UITextView/UITextView+InputLimit.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+InputLimit.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextView (InputLimit) 12 | 13 | @property (assign, nonatomic) NSInteger maxLength;//if <=0, no limit 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Classes/UIKit/UITextView/UITextView+Select.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+Select.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextView (Select) 12 | 13 | /// 当前选中的字符串范围 14 | - (NSRange)selectedRange; 15 | 16 | /// 选中所有文字 17 | - (void)selectAllText; 18 | 19 | /// 选中指定范围的文字 20 | - (void)setSelectedRange:(NSRange)range; 21 | 22 | /// 用于计算textview输入情况下的字符数,解决实现限制字符数时,计算不准的问题 23 | - (NSInteger)getInputLengthWithText:(NSString *)text; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Classes/UIKit/UIView/UIView+BlockGesture.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+BlockGesture.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^GestureActionBlock)(UIGestureRecognizer *gestureRecoginzer); 12 | 13 | @interface UIView (BlockGesture) 14 | 15 | /// 添加点击手势 16 | - (void)addTapActionWithBlock:(GestureActionBlock)block; 17 | /// 添加长按手势 18 | - (void)addLongPressActionWithBlock:(GestureActionBlock)block; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/UIKit/UIView/UIView+Find.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Find.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Find) 12 | 13 | /// 找到指定类名的第一个subView 14 | - (UIView *)findSubViewWithClass:(Class)clazz; 15 | 16 | /// 找到指定类名的所有subview 17 | - (NSArray *)findAllSubViewsWithClass:(Class)clazz; 18 | 19 | /// 找到当前view所在的viewcontroler 20 | - (UIViewController *)viewController; 21 | 22 | /// 所有的子控件,包括子控件的子控件 23 | - (NSArray *)allSubviews; 24 | 25 | /// 移除所有的子控件 26 | - (void)removeAllSubviews; 27 | 28 | /// 找到view上的第一响应者 29 | - (UIView *)findFirstResponder; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Classes/UIKit/UIView/UIView+Frame.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Frame.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Frame) 12 | 13 | @property (nonatomic, assign) CGPoint origin; 14 | @property (nonatomic, assign) CGSize size; 15 | 16 | @property (nonatomic) CGFloat centerX; 17 | @property (nonatomic) CGFloat centerY; 18 | 19 | @property (nonatomic) CGFloat top; 20 | @property (nonatomic) CGFloat bottom; 21 | @property (nonatomic) CGFloat right; 22 | @property (nonatomic) CGFloat left; 23 | 24 | @property (nonatomic) CGFloat width; 25 | @property (nonatomic) CGFloat height; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Classes/UIKit/UIView/UIView+NIB.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+NIB.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (NIB) 12 | 13 | + (UINib *)loadNib; 14 | + (UINib *)loadNibNamed:(NSString*)nibName; 15 | + (UINib *)loadNibNamed:(NSString*)nibName bundle:(NSBundle *)bundle; 16 | 17 | + (instancetype)loadInstanceFromNib; 18 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName; 19 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName owner:(id)owner; 20 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName owner:(id)owner bundle:(NSBundle *)bundle; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Classes/UIKit/UIView/UIView+Radius.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+IBnspectable.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** View的XIB可视化扩展类> */ 12 | @interface UIView (Radius) 13 | 14 | /// 给UIView 设置圆角 15 | @property (assign,nonatomic) NSInteger cornerRadius; 16 | @property (assign,nonatomic) BOOL masksToBounds; 17 | 18 | 19 | ///设置 view的 边框颜色(选择器和Hex颜色)以及 边框的宽度 20 | @property (assign,nonatomic) NSInteger borderWidth; 21 | @property (strong,nonatomic) UIColor *borderColor; 22 | 23 | - (void)setLayerShadow:(UIColor*)color offset:(CGSize)offset radius:(CGFloat)radius; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Classes/UIKit/UIView/UIView+Recursion.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Recursion.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^SubviewBlock) (UIView* view); 12 | typedef void (^SuperviewBlock) (UIView* superview); 13 | @interface UIView (Recursion) 14 | 15 | - (UIView*)findViewRecursively:(BOOL(^)(UIView* subview, BOOL* stop))recurse; 16 | 17 | 18 | -(void)runBlockOnAllSubviews:(SubviewBlock)block; 19 | -(void)runBlockOnAllSuperviews:(SuperviewBlock)block; 20 | -(void)enableAllControlsInViewHierarchy; 21 | -(void)disableAllControlsInViewHierarchy; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Classes/UIKit/UIView/UIView+Screenshot.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Screenshot.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Screenshot) 12 | 13 | /// 截取当前View 14 | - (nullable UIImage *)snapshotImage; 15 | 16 | - (nullable UIImage *)snapshotImageAfterScreenUpdates:(BOOL)afterUpdates; 17 | /// 截取当前View为PDF 18 | - (nullable NSData *)snapshotPDF; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/UIKit/UIView/UIView+SubtractMask.h: -------------------------------------------------------------------------------- 1 | // 2 | // SubtractMask.h 3 | // Category 4 | // 5 | // Created by Silence on 2018/11/20. 6 | // Copyright © 2018年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIView (SubtractMask) 14 | 15 | /** 16 | 设置镂空遮罩视图,该方法本质上是设置maskView 17 | 如果寄宿图的内容有更新,需要手动再调用setter方法 18 | 19 | @param view 遮罩视图 20 | */ 21 | - (void)setSubtractMaskView:(UIView *)view; 22 | 23 | /** 24 | 获取镂空遮罩视图,用于动态修改遮罩的一些属性 25 | 26 | @return 遮罩视图 27 | */ 28 | - (UIView *)subtractMaskView; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /Classes/UIKit/UIView/UIView+ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+ViewController.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/13. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (ViewController) 12 | 13 | /// 所在的ViewController 14 | - (UIViewController *)viewController ; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UIView/UIView+ViewPath.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+ViewPath.h 3 | // ViewPathDemo 4 | // 5 | // Created by Silence on 2019/4/8. 6 | // Copyright © 2019年 Silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIView (ViewPath) 14 | 15 | @property (nonatomic, readonly) NSString *viewPath; 16 | 17 | @property (nonatomic ,readonly) NSString *viewID; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Classes/UIKit/UIViewController/UIViewController+BackAction.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+BackAction.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/5/29. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^SIBackAction)(UINavigationController *vc); 12 | 13 | @interface UIViewController (BackAction) 14 | 15 | -(void)backButtonTouched:(SIBackAction)backButtonHandler; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/UIKit/UIViewController/UIViewController+RecursiveDescription.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+RecursiveDescription.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (RecursiveDescription) 12 | 13 | /** 14 | * @brief 视图层级 15 | * 16 | * @return 视图层级字符串 17 | */ 18 | -(NSString*)recursiveDescription; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Classes/UIKit/UIViewController/UIViewController+Segues.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Segues.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/22. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^UIViewControllerSeguesPrepareCallback)(UIViewController* target); 12 | 13 | @interface UIViewController (Segues) 14 | 15 | - (void)performSegueWithIdentifier:(NSString *)identifier prepareCallback:(UIViewControllerSeguesPrepareCallback)callback; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/UIKit/UIViewController/UIViewController+TopViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+TopViewController.h 3 | // Category 4 | // 5 | // Created by Silence on 2019/8/5. 6 | // Copyright © 2019年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (TopViewController) 12 | 13 | - (UIViewController * _Nullable)topViewController; 14 | - (void)presentViewControllerOnTopAnimated:(BOOL)flag completion:(void (^ _Nullable)(void))completion; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UIViewController/UIViewController+Visible.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Visible.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (Visible) 12 | 13 | - (BOOL)isVisible; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Classes/UIKit/UIViewController/UIViewController+Visible.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Visible.m 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import "UIViewController+Visible.h" 10 | 11 | @implementation UIViewController (Visible) 12 | 13 | - (BOOL)isVisible { 14 | return [self isViewLoaded] && self.view.window; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/UIKit/UIWebView/UIWebView+MetaParser.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWebView+MetaParser.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIWebView (MetaParser) 12 | 13 | ///获取网页meta信息 14 | -(NSArray *)getMetaData; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/UIKit/UIWebView/UIWebView+SwipeGesture.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWebView+SwipeGesture.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIWebView (SwipeGesture) 12 | 13 | - (void)useSwipeGesture ; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module SICategory { 2 | umbrella header "SICategory.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/SICategory: -------------------------------------------------------------------------------- 1 | Versions/Current/SICategory -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/CALayer+Frame.h: -------------------------------------------------------------------------------- 1 | // 2 | // CALayer+Frame.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/4/24. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CALayer (Frame) 12 | 13 | @property CGFloat top; 14 | @property CGFloat bottom; 15 | @property CGFloat left; 16 | @property CGFloat right; 17 | 18 | @property CGFloat centerX; 19 | @property CGFloat centerY; 20 | 21 | @property CGFloat height; 22 | @property CGFloat width; 23 | 24 | @property CGPoint center; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/CAShapeLayer+UIBezierPath.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayer+UIBezierPath.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/4/24. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface CAShapeLayer (UIBezierPath) 13 | 14 | /**Update CAShapeLayer with UIBezierPath.*/ 15 | - (void)updateWithBezierPath:(UIBezierPath *)path; 16 | 17 | /**Get UIBezierPath object, constructed from CAShapeLayer.*/ 18 | - (UIBezierPath *)bezierPath; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/EXTObjc.h: -------------------------------------------------------------------------------- 1 | // 2 | // extobjc.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2010-11-09. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTADT.h" 11 | #import "EXTConcreteProtocol.h" 12 | #import "EXTKeyPathCoding.h" 13 | #import "EXTNil.h" 14 | #import "EXTSafeCategory.h" 15 | #import "EXTScope.h" 16 | #import "EXTSelectorChecking.h" 17 | #import "EXTSynthesize.h" 18 | #import "NSInvocation+EXT.h" 19 | #import "NSMethodSignature+EXT.h" 20 | 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSArray+Contains.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+Contains.h 3 | // Category 4 | // 5 | // Created by Silence on 19/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSArray (Contains) 12 | 13 | 14 | /** 15 | 是否包含所有数组中元素 16 | 17 | @param array 要寻找的Array 18 | @return 是否包含 19 | */ 20 | -(BOOL)containsAll:(NSArray *)array; 21 | 22 | 23 | /** 24 | 是否包含其中任意一个元素 25 | 26 | @param array 要寻找的Array 27 | @return 是否包含 28 | */ 29 | -(BOOL)containsAny:(NSArray *)array; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSArray+JSONEncode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+JSONEncode.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSArray (JSONEncode) 12 | 13 | /** 14 | 转换为JSON 15 | 16 | @return JSON Sting 17 | */ 18 | - (NSString *)jsonStringEncoded; 19 | 20 | /** 21 | 返回格式化后JSON 22 | 23 | @return 格式化后的JSON String 24 | */ 25 | - (NSString *)jsonPrettyStringEncoded; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSData+APNSToken.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+APNSToken.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (APNSToken) 12 | 13 | /** 14 | * 将APNS NSData类型token 格式化成字符串 15 | * 16 | * @return 整理过后的字符串token 17 | */ 18 | - (NSString *)APNSToken; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSData+Cache.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Cache.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (Cache) 12 | 13 | /** 14 | 根据key保存到磁盘里缓存起来 15 | 16 | @param key Key 17 | */ 18 | - (void)saveDataCacheWithKey:(NSString *)key; 19 | 20 | 21 | /** 22 | 根据key取出缓存data 23 | 24 | @param key Key 25 | @return 对象数据 26 | */ 27 | + (NSData *)getDataCacheWithKey:(NSString *)key; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSData+DataCache.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+DataCache.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (DataCache) 12 | 13 | /** 14 | * 将URL作为key保存到磁盘里缓存起来 15 | * 16 | * @param identifier url.absoluteString 17 | */ 18 | - (void)saveDataCacheWithIdentifier:(NSString *)identifier; 19 | 20 | /** 21 | * 取出缓存data 22 | * 23 | * @param identifier url.absoluteString 24 | * 25 | * @return 缓存 26 | */ 27 | + (NSData *)getDataCacheWithIdentifier:(NSString *)identifier; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSData+Encrypt.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Encrypt.h 3 | // Category 4 | // 5 | // Created by Silence on 30/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (Encrypt) 12 | 13 | /**利用AES加密数据*/ 14 | - (NSData *)encryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv; 15 | /**利用AES解密数据*/ 16 | - (NSData *)decryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv; 17 | 18 | /**利用3DES加密数据*/ 19 | - (NSData *)encryptedWith3DESUsingKey:(NSString*)key andIV:(NSData*)iv; 20 | /**利用3DES解密数据*/ 21 | - (NSData *)decryptedWith3DESUsingKey:(NSString*)key andIV:(NSData*)iv; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSDate+Cupertino.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+Cupertino.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDate (Cupertino) 12 | 13 | - (NSDate *)beginningOfDay; 14 | - (NSDate *)endOfDay; 15 | 16 | - (NSDate *)beginningOfWeek; 17 | - (NSDate *)endOfWeek; 18 | 19 | - (NSDate *)beginningOfMonth; 20 | - (NSDate *)endOfMonth; 21 | 22 | 23 | - (NSDate *)beginningOfYear; 24 | - (NSDate *)endOfYear; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSDictionary+JSONEncode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+JSONEncode.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (JSONEncode) 12 | 13 | /** 14 | JSON String Encoded 15 | 16 | @return JSON String 17 | */ 18 | - (nullable NSString *)jsonStringEncoded; 19 | 20 | 21 | /** 22 | JSON PrettyString Encoded 23 | 24 | @return JSON Pretty String 25 | */ 26 | - (nullable NSString *)jsonPrettyStringEncoded; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSDictionary+Merge.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+Merge.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (Merge) 12 | 13 | /** 合并两个NSDictionary */ 14 | + (NSDictionary *)dictionaryByMerging:(NSDictionary *)dict1 with:(NSDictionary *)dict2; 15 | 16 | /** 并入一个NSDictionary */ 17 | - (NSDictionary *)dictionaryByMergingWith:(NSDictionary *)dict; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSDictionary+Plist.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+Plist.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface NSDictionary (Plist) 13 | 14 | /// 根据Plist数据初始化字典 15 | + (instancetype)dictionaryWithPlistData:(NSData *)plist; 16 | /// 根绝Plist String初始化字典 17 | + (instancetype)dictionaryWithPlistString:(NSString *)plist; 18 | 19 | /// Plist 数据信息 20 | - (NSData *)plistData; 21 | /// Plist String 22 | - (NSString *)plistString; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSDictionary+URL.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+URL.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (URL) 12 | 13 | /// 将url参数转换成NSDictionary 14 | + (NSDictionary *)dictionaryWithURLQuery:(NSString *)query; 15 | /// 将NSDictionary转换成url参数字符串 16 | - (NSString *)URLQueryString; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSFileHandle+ReadLine.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSFileHandle+ReadLine.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSFileHandle (ReadLine) 12 | 13 | /** 14 | * @brief A Cocoa / Objective-C NSFileHandle category that adds the ability to read a file line by line. 15 | 16 | * 17 | * @param theDelimier 分隔符 18 | * 19 | * @return An NSData* object is returned with the line if found, or nil if no more lines were found 20 | */ 21 | - (NSData *)readLineWithDelimiter:(NSString *)theDelimier; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSNotificationCenter+AutoRemove.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNotificationCenter+AutoRemove.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNotificationCenter (AutoRemove) 12 | 13 | /// 设置是否自动移除监听 14 | + (void)setNotificationAutoRemoveEnable:(BOOL)enable; 15 | /// 获取自动移除监听是否开启 16 | + (BOOL)notificationAutoRemoveEnable; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSNumber+Display.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+Display.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNumber (Display) 12 | 13 | /// 显示指定精读 14 | - (NSString *)displayNumberWithDigit:(NSInteger)digit; 15 | 16 | /// 显示百分比 17 | - (NSString *)displayPercentageWithDigit:(NSInteger)digit; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSNumber+Roman.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+Roman.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNumber (Roman) 12 | 13 | /** 返回自己对应的罗马数字 */ 14 | - (NSString *)romanNumeral; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSObject+Block.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Block.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (Block) 12 | 13 | + (id)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay; 14 | + (id)performBlock:(void (^)(id arg))block withObject:(id)anObject afterDelay:(NSTimeInterval)delay; 15 | - (id)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay; 16 | - (id)performBlock:(void (^)(id arg))block withObject:(id)anObject afterDelay:(NSTimeInterval)delay; 17 | 18 | + (void)cancelBlock:(id)block; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSObject+Dealloc.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Dealloc.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/5/25. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^DeallocBlock)(void); 12 | 13 | @interface NSObject (Dealloc) 14 | 15 | - (void)executeAtDealloc:(DeallocBlock)block; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSObject+Parse.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Parse.h 3 | // Category 4 | // 5 | // Created by Silence on 19/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (Parse) 12 | 13 | /// 转换为String 14 | - (NSString *)toString; 15 | 16 | /// 转换为Number 17 | - (NSNumber *)toNumber; 18 | 19 | /// 转化为Dictionary 20 | - (NSDictionary *)toDictionary; 21 | 22 | /// 转换为Array 23 | - (NSArray *)toArray; 24 | 25 | /// 转换为Array 26 | - (NSArray *)toArrayOf:(Class)itemClass; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSObject+PerformSelector.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+PerformSelector.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/8/23. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (PerformSelector) 12 | 13 | - (id)performSelector:(SEL)aSelector withObjects:(NSArray *)objects; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSObject+QuickCode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+QuickCode.h 3 | // Category 4 | // 5 | // Created by Silence on 30/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (QuickCode) 12 | 13 | /** 快速归档 */ 14 | - (id)quickCoderWith:(NSCoder *)aDecoder ; 15 | 16 | /** 快速解档 */ 17 | - (void)quickEncodeWithCoder:(NSCoder *)aCoder ; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSObject+QuickCopy.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+QuickCopy.h 3 | // Category 4 | // 5 | // Created by Silence on 30/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (QuickCopy) 12 | 13 | /** 快速浅复制目标的所有属性 */ 14 | - (BOOL)quickCopy:(NSObject *)instance ; 15 | 16 | /** 快速深复制目标的所有属性 */ 17 | - (BOOL)quickDeepCopy:(NSObject *)instance ; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSString+AES.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+AES.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/11/15. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (AES) 12 | 13 | /// 加密方法 14 | - (NSString *)encryptWithAESwithKey:(NSString *)key ivParameter:(NSString *)ivParameter; 15 | 16 | /// 解密方法 17 | - (NSString*)decryptWithAESwithKey:(NSString *)key ivParameter:(NSString *)ivParameter; 18 | 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSString+Append.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Append.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/12/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (Append) 12 | 13 | - (NSString *)appendHomePath; 14 | - (NSString *)appendDocumentPath; 15 | - (NSString *)appendCachePath; 16 | - (NSString *)appendMainBundlePath; 17 | - (NSString *)appendTempPath; 18 | - (NSString *)appendPreferencesPath; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSString+Contains.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Contains.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (Contains) 12 | 13 | /**是否包含中文*/ 14 | - (BOOL)isContainChinese; 15 | 16 | /**是否包含空格*/ 17 | - (BOOL)isContainBlank; 18 | 19 | /**是否包含set*/ 20 | - (BOOL)containsCharacterSet:(NSCharacterSet *)set; 21 | 22 | /**是否包含String*/ 23 | - (BOOL)containsString:(NSString *)string; 24 | 25 | /**字符数量*/ 26 | - (int)wordsCount; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSString+JSONValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+JSONValue.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (JSONValue) 12 | 13 | /// JSON String 转换为字典 14 | - (NSDictionary *)JSONDictionaryValue ; 15 | 16 | /// JSON String 转换为数组 17 | - (NSArray *)JSONArrayValue ; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSString+MIME.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+MIME.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (MIME) 12 | 13 | 14 | /** 15 | 文件名的MIME 16 | 17 | @return MIME 18 | */ 19 | - (NSString *)MIMEType; 20 | 21 | /** 22 | 根绝后辍名获取MIME Type 23 | 24 | @param extension 后辍名 25 | @return MIME 26 | */ 27 | + (NSString *)MIMETypeForExtension:(NSString *)extension; 28 | 29 | /** 30 | MIMEDict信息 31 | 32 | @return MIMEDict字典 33 | */ 34 | + (NSDictionary *)MIMEDict; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSString+QRcode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+QRcode.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class UIImage; 12 | @interface NSString (QRcode) 13 | 14 | /** 15 | String的二维码信息 16 | 17 | @return String的二维码图片 18 | */ 19 | - (UIImage *)QRcode ; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSString+XML.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+XML.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (XML) 12 | 13 | /** 14 | * xml字符串转换成NSDictionary 15 | * 16 | * @return NSDictionary 17 | */ 18 | -(NSDictionary *)XMLDictionary; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSTimer+Pause.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSTimer+Pause.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/14. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSTimer (Pause) 12 | 13 | /// 暂停NSTimer 14 | - (void)pauseTimer; 15 | 16 | /// 开始NSTimer 17 | - (void)resumeTimer; 18 | 19 | /// 延迟开始NSTimer 20 | - (void)resumeTimerAfterTimeInterval:(NSTimeInterval)interval; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/NSUserDefaults+iCloudSync.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSUserDefaults+iCloudSync.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/14. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSUserDefaults (iCloudSync) 12 | 13 | -(void)setValue:(id)value forKey:(NSString *)key iCloudSync:(BOOL)sync; 14 | -(void)setObject:(id)value forKey:(NSString *)key iCloudSync:(BOOL)sync; 15 | 16 | -(id)valueForKey:(NSString *)key iCloudSync:(BOOL)sync; 17 | -(id)objectForKey:(NSString *)key iCloudSync:(BOOL)sync; 18 | 19 | -(BOOL)synchronizeAlsoiCloudSync:(BOOL)sync; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/SIARCMacro.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIARCMacros.h 3 | // Category 4 | // 5 | // Created by Silence on 16/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | // 强弱引用 10 | #define WeakSelf __weak __typeof(self) weakSelf = self; 11 | #define StrongSelf __strong __typeof(weakSelf)strongSelf = weakSelf; 12 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/SIAppVersionManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIAppVersionManager.h 3 | // Category 4 | // 5 | // Created by Silence on 24/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SIAppVersionManager : NSObject 12 | 13 | /// 单例 14 | + (SIAppVersionManager *)sharedManager ; 15 | 16 | /// 检查新版本 17 | - (void)checkVersionWithAppID:(NSString *)appID showNewestMsg:(BOOL)showMsg; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/SICategory.h: -------------------------------------------------------------------------------- 1 | // 2 | // SICategory.h 3 | // Category 4 | // 5 | // Created by Silence on 07/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #ifndef SICategory_h 10 | #define SICategory_h 11 | 12 | #import "SIFoundation.h" 13 | #import "SIUIKit.h" 14 | #import "SIMacros.h" 15 | #import "EXTObjc.h" 16 | #import "SIManager.h" 17 | #import "SIQuartzCore.h" 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/SICoreGraphicsMacro.h: -------------------------------------------------------------------------------- 1 | // 2 | // SICoreGraphicsMacros.h 3 | // Category 4 | // 5 | // Created by Silence on 16/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #define CGizeMultiply(size, mult) CGSizeMake(size.width * mult, size.height * mult) 10 | 11 | #define CGizeWith320(size) CGizeMultiply(size, [UIScreen mainScreen].bounds.size.width / 320) 12 | #define CGizeWith375(size) CGizeMultiply(size, [UIScreen mainScreen].bounds.size.width / 375) 13 | 14 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/SIFPSManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIFPSManager.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/12/6. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SIFPSManager : UIWindow 12 | 13 | + (SIFPSManager *)sharedManager; 14 | 15 | - (void)open; 16 | - (void)close; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/SIMathMacro.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIMaths.h 3 | // Category 4 | // 5 | // Created by Silence on 16/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | // 度弧度转换 10 | #define DEGREES_TO_RADIANS(degrees) ((degrees*M_PI)/180.0) 11 | #define RADIANS_TO_DEGREES(radians) ((radians*180.0)/M_PI) 12 | 13 | // 随机Int 14 | #define RANDOM_INT(from,to) ((int)((from) + arc4random() % ((to)-(from) + 1))) 15 | 16 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/SIProxyManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIProxyManager.h 3 | // Category 4 | // 5 | // Created by Silence on 2018/9/27. 6 | // Copyright © 2018年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | /// 将消息进行分发 13 | @interface SIProxyManager : NSObject 14 | 15 | - (void)addTarger:(id)target; 16 | - (void)removeTarget:(id)target; 17 | 18 | @property (nonatomic,strong,readonly) NSPointerArray *targets; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/SIQuartzCore.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIQuartzCore.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/4/24. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #ifndef SIQuartzCore_h 10 | #define SIQuartzCore_h 11 | 12 | #import "CALayer+Frame.h" 13 | #import "CALayer+Property.h" 14 | 15 | #import "CATransaction+AnimateWithDuration.h" 16 | 17 | #import "CAShapeLayer+UIBezierPath.h" 18 | 19 | #import "CAAnimation+EasingEquations.h" 20 | 21 | #import "CAMediaTimingFunction+AdditionalEquations.h" 22 | 23 | #endif /* SIQuartzCore_h */ 24 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIApplication+KeyboardFrame.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+KeyboardFrame.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIApplication (KeyboardFrame) 12 | 13 | @property (nonatomic,readonly) CGRect keyboardFrame ; /// 键盘的Frame 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIApplication+UIDebug.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+UIDebug.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/5/27. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIApplication (UIDebug) 12 | 13 | /// 显示系统自带的UI调试插件(UIDebuggingInformationOverlay) 14 | + (void)showDebuggingInformationOverlay ; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIBezierPath+BasicShapes.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBezierPath+BasicShapes.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBezierPath (BasicShapes) 12 | 13 | + (UIBezierPath *)heartShape:(CGRect)originalFrame; 14 | + (UIBezierPath *)userShape:(CGRect)originalFrame; 15 | + (UIBezierPath *)martiniShape:(CGRect)originalFrame; 16 | + (UIBezierPath *)beakerShape:(CGRect)originalFrame; 17 | + (UIBezierPath *)starShape:(CGRect)originalFrame; 18 | + (UIBezierPath *)stars:(NSUInteger)numberOfStars shapeInFrame:(CGRect)originalFrame; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIBezierPath+Length.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBezierPath+Length.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBezierPath (Length) 12 | 13 | - (CGFloat)length; 14 | 15 | - (CGPoint)pointAtPercentOfLength:(CGFloat)percent; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIBezierPath+SVGString.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBezierPath+SVGString.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBezierPath (SVGString) 12 | 13 | /// UIBezierPath转成SVG 14 | - (NSString*)SVGString; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIButton+BackgroundColor.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+BackgroundColor.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (BackgroundColor) 12 | 13 | 14 | /** 15 | 给按钮设置背景颜色 16 | 17 | @param backgroundColor Color 18 | @param state 按钮的状态 19 | */ 20 | - (void)setBackgroundColor:(UIColor *)backgroundColor forState:(UIControlState)state; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIButton+Block.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Block.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^TouchedBlock)(id sender); 12 | @interface UIButton (Block) 13 | 14 | /// 给点击状态添加事件 15 | -(void)addActionHandler:(TouchedBlock)touchHandler; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIButton+ClickEdgeInsets.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+ClickEdgeInsets.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /// 改变按钮的响应区域 12 | @interface UIButton (ClickEdgeInsets) 13 | 14 | /// 上左下右分别增加或减小多少 正数为增加 负数为减小 15 | @property (nonatomic, assign) UIEdgeInsets clickEdgeInsets; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIButton+CountDown.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+CountDown.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (CountDown) 12 | 13 | /** 14 | 倒计时按钮 15 | 16 | @param timeout 总时间 17 | @param waitBlock 倒计时过程中可以再里面做一些操作 18 | @param finishBlock 完成时执行的block 19 | */ 20 | - (void)startTime:(NSInteger)timeout waitBlock:(void(^)(NSInteger remainTime))waitBlock finishBlock:(void(^)(void))finishBlock; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIButton+Indicator.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Indicator.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (Indicator) 12 | 13 | /// 显示菊花 14 | - (void)showIndicator; 15 | 16 | /// 隐藏菊花 17 | - (void)hideIndicator; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIButton+Submitting.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Submitting.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (Submitting) 12 | 13 | /// 按钮点击后,禁用按钮并在按钮上显示ActivityIndicator,以及title 按钮上显示的文字 14 | - (void)beginSubmitting:(NSString *)title; 15 | 16 | /// 按钮点击后,恢复按钮点击前的状态 17 | - (void)endSubmitting; 18 | 19 | /// 按钮是否正在提交中 20 | @property(nonatomic, readonly, getter=isSubmitting) NSNumber *submitting; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIColor+Random.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+Random.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIColor (Random) 12 | 13 | /// 随机颜色 14 | + (UIColor *)randomColor ; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIControl+Sound.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIControl+Sound.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIControl (Sound) 12 | 13 | /// 不同事件增加不同声音 14 | - (void)setSoundNamed:(NSString *)name forControlEvent:(UIControlEvents)controlEvent; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIDevice+CPU.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIDevice+CPU.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIDevice (CPU) 12 | 13 | @property (nonatomic,readonly) NSUInteger cpuNumber ; /// CPU核心数 14 | @property (nonatomic,readonly) NSUInteger cpuFrequency ; /// CPU频率 15 | @property (nonatomic,readonly) NSUInteger busFrequency ; /// BUS频率 16 | 17 | @property (nonatomic,readonly) float cpuUsage ; /// CPU利用率 18 | @property (nonatomic,readonly) NSArray *cpuUsagePerProcessor ; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIFont+Make.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont+Make.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface UIFont (Make) 13 | 14 | - (UIFont *)fontWithBold ; 15 | - (UIFont *)fontWithItalic ; 16 | - (UIFont *)fontWithBoldItalic ; 17 | - (UIFont *)fontWithNormal ; 18 | 19 | + (UIFont *)fontWithCTFont:(CTFontRef)CTFont; 20 | + (UIFont *)fontWithCGFont:(CGFontRef)CGFont size:(CGFloat)size; 21 | 22 | - (CTFontRef)CTFontRef ; 23 | - (CGFontRef)CGFontRef ; 24 | 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIFont+TTF.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont+TTF.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIFont (TTF) 12 | 13 | + (UIFont *)fontWithTTFAtPath:(NSString *)path size:(CGFloat)size; 14 | + (UIFont *)fontWithTTFAtURL:(NSURL *)URL size:(CGFloat)size; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIFont+Traits.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont+Traits.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIFont (Traits) 12 | 13 | @property (nonatomic, readonly) BOOL isBold; 14 | @property (nonatomic, readonly) BOOL isItalic; 15 | @property (nonatomic, readonly) BOOL isMonoSpace; 16 | @property (nonatomic, readonly) BOOL isColorGlyphs; 17 | @property (nonatomic, readonly) CGFloat fontWeight; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIGestureRecognizer+ALActionBlocks.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIGestureRecognizer+ALActionBlocks.h 3 | // ALActionBlocks 4 | // 5 | // Created by Andy LaVoy on 10/17/13. 6 | // Copyright (c) 2013 Andy LaVoy. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "UIControl+ALActionBlocks.h" 11 | 12 | @interface UIGestureRecognizer (ALActionBlocks) 13 | 14 | + (instancetype)gestureRecognizerWithBlock:(ALActionBlock)actionBlock; 15 | - (void)setBlock:(ALActionBlock)actionBlock; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIImage+BetterFace.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+BetterFace.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSUInteger, Accuracy) { 12 | AccuracyLow = 0, 13 | AccuracyHigh, 14 | }; 15 | @interface UIImage (BetterFace) 16 | 17 | - (UIImage *)betterFaceImageForSize:(CGSize)size 18 | accuracy:(Accuracy)accurary; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIImage+Capture.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Capture.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Capture) 12 | 13 | /** 14 | 截取View生成图片 15 | 16 | @param view 视图 17 | @return 生成的图片 18 | */ 19 | + (UIImage *)captureWithView:(UIView *)view ; 20 | 21 | /// 对图片进行缩放 22 | + (UIImage *)imageWithSize:(CGRect)myImageRect FromImage:(UIImage *)bigImage; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIImage+FileName.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+FileName.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (FileName) 12 | 13 | /// 根据main bundle中的文件名读取图片 14 | + (UIImage *)imageWithFileName:(NSString *)name; 15 | 16 | /// 根据指定bundle中的文件名读取图片 17 | + (UIImage *)imageWithFileName:(NSString *)name inBundle:(NSBundle*)bundle; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIImage+Merge.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Merge.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Merge) 12 | 13 | /** 14 | Merge Image 15 | 16 | @param firstImage 第一张图片 17 | @param secondImage 第二章图片 18 | @return Image 19 | */ 20 | + (UIImage*)mergeImage:(UIImage*)firstImage withImage:(UIImage*)secondImage ; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIImage+Video.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Video.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/14. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Video) 12 | 13 | /// 获取视频的截图信息 14 | + (UIImage *)imageWithVideo:(NSString *)stringURL; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIImageView+GeometryConversion.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+GeometryConversion.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImageView (GeometryConversion) 12 | 13 | - (CGPoint)convertPointFromImage:(CGPoint)imagePoint; 14 | - (CGRect)convertRectFromImage:(CGRect)imageRect; 15 | 16 | - (CGPoint)convertPointFromView:(CGPoint)viewPoint; 17 | - (CGRect)convertRectFromView:(CGRect)viewRect; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIImageView+Reflect.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+Reflect.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImageView (Reflect) 12 | 13 | /// 倒影 14 | - (void)reflect; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UILabel+ContenSize.h: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+ContenSize.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UILabel (ContenSize) 12 | 13 | 14 | /** 15 | Content的Size 16 | 17 | @param width 限制宽度 18 | @return Size 19 | */ 20 | - (CGSize)contentSizeForWidth:(CGFloat)width; 21 | 22 | 23 | /** 24 | Content Size 25 | 26 | @return Size 27 | */ 28 | - (CGSize)contentSize; 29 | 30 | 31 | /** 32 | 是否被截断 33 | 34 | @return 是否被截断 35 | */ 36 | - (BOOL)isTruncated; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UILabel+Space.h: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+Space.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UILabel (Space) 12 | 13 | /// 设置字间距 14 | - (void)setColumnSpace:(CGFloat)columnSpace; 15 | 16 | /// 设置行距 17 | - (void)setRowSpace:(CGFloat)rowSpace; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UINavigationBar+Appear.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationBar+Appear.h 3 | // Category 4 | // 5 | // Created by Silence on 07/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationBar (Appear) 12 | 13 | /// 隐藏阴影 14 | - (void)hideBottomShadow; 15 | /// 显示阴影 16 | - (void)showBottomShadow; 17 | 18 | /// 导航栏透明 19 | - (void)makeTransparent; 20 | /// 默认导航栏 21 | - (void)makeDefault; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UINavigationBar+Awesome.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationBar+Awesome.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationBar (Awesome) 12 | 13 | - (void)setBackgroundColor:(UIColor *)backgroundColor; 14 | - (void)setElementsAlpha:(CGFloat)alpha; 15 | - (void)setTranslationY:(CGFloat)translationY; 16 | - (void)reset; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UINavigationController+Hide.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+Hide.h 3 | // HIdeDemo 4 | // 5 | // Created by Silence on 17/01/2017. 6 | // Copyright © 2017 Silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationController (Hide) 12 | 13 | @property (nonatomic,getter=isNavBarHidden,readonly) BOOL navBarHidden ; /// 导航栏是否隐藏 14 | 15 | 16 | /** 17 | 设置NavBar隐藏 18 | 19 | @param hidden Hidden 20 | @param animated 是否有动画 21 | @param completion 完成回调 22 | */ 23 | - (void)setNavBarHidden:(BOOL)hidden 24 | animated:(BOOL)animated 25 | completion:(void (^)(BOOL finished))completion; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UINavigationItem+Lock.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationItem+Lock.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationItem (Lock) 12 | 13 | /** 14 | * @brief 锁定RightItem 15 | * 16 | * @param lock 是否锁定 17 | */ 18 | - (void)lockRightItem:(BOOL)lock; 19 | /** 20 | * @brief 锁定LeftItem 21 | * 22 | * @param lock 是否锁定 23 | */ 24 | - (void)lockLeftItem:(BOOL)lock; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIResponder+Chain.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+Chain.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. 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 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIResponder+FirstResponder.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+FirstResponder.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIResponder (FirstResponder) 12 | 13 | /** 14 | * @brief 当前第一响应者 15 | * 16 | * @return 当前第一响应者 17 | */ 18 | + (id)currentFirstResponder; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIScrollView+Amplification.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+Amplification.h 3 | // Category 4 | // 5 | // Created by Silence on 04/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (Amplification) 12 | 13 | @property (nonatomic, strong) UIView *bigView; 14 | @property (nonatomic, strong) UIView *headerView; 15 | -(void)setBigView:(UIView *)bigView withHeaderView:(UIView *)headerView; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIScrollView+PageNumber.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+PageNumber.h 3 | // Category 4 | // 5 | // Created by Silence on 04/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (PageNumber) 12 | 13 | -(NSInteger)totalPages; 14 | 15 | -(void)setPageNumber:(NSInteger)pageNumber animated:(BOOL)animated; 16 | -(void)setPageNumber:(NSInteger)pageNumber; 17 | -(NSInteger)pageNumber; 18 | 19 | -(BOOL)isLastPage; 20 | -(BOOL)isFirstPage; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIScrollView+SimpleScroll.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+SimpleScroll.h 3 | // Category 4 | // 5 | // Created by Silence on 04/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (SimpleScroll) 12 | 13 | - (void)scrollToTop; 14 | - (void)scrollToBottom; 15 | - (void)scrollToLeft; 16 | - (void)scrollToRight; 17 | 18 | - (void)scrollToTopAnimated:(BOOL)animated; 19 | - (void)scrollToBottomAnimated:(BOOL)animated; 20 | - (void)scrollToLeftAnimated:(BOOL)animated; 21 | - (void)scrollToRightAnimated:(BOOL)animated; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UISlider+Tap.h: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+Tap.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/12. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UISlider (Tap) 12 | 13 | /// 单击手势,会自动到对应比例 14 | - (void)addTapGestureWithTarget: (id)target action: (SEL)action; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UITabBarController+Hide.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITabBarController+Hide.h 3 | // HIdeDemo 4 | // 5 | // Created by Silence on 17/01/2017. 6 | // Copyright © 2017 Silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITabBarController (Hide) 12 | 13 | @property (nonatomic,getter=isTabBarHidden,readonly) BOOL tabBarHidden ; 14 | 15 | 16 | /** 17 | 设置Tabbar隐藏 18 | 19 | @param hidden 是否隐藏 20 | @param animated 是否有动画 21 | @param completion 返回回调 22 | */ 23 | - (void)setTabBarHidden:(BOOL)hidden 24 | animated:(BOOL)animated 25 | completion:(void (^)(BOOL finished))completion; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UITableView+Placeholder.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+Placeholder.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/12/20. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^PlaceholderClickBlock)(UIView *view); 12 | 13 | @interface UITableView (Placeholder) 14 | 15 | @property (nonatomic, assign) BOOL showPlaceholder; 16 | 17 | @property (nonatomic, copy) PlaceholderClickBlock placeholderClickBlock; 18 | @property (nonatomic, copy) NSString *placeholderText; 19 | @property (nonatomic, copy) UIImage *placeholderImage; 20 | @property (nonatomic, copy) UIView *placeholderCustomView; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UITableView+iOS7Style.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+iOS7Style.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITableView (iOS7Style) 12 | 13 | /** 14 | * @brief ios7设置页面的UITableViewCell样式 15 | * 16 | * @param cell cell 17 | * @param indexPath indexPath 18 | */ 19 | -(void)applyiOS7SettingsStyleGrouping:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UITableViewCell+NIB.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableViewCell+NIB.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITableViewCell (NIB) 12 | 13 | /// 加载同类名的nib 14 | + (UINib*)nib; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UITextField+InputLimit.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+InputLimit.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextField (InputLimit) 12 | 13 | @property (assign, nonatomic) NSInteger maxLength ; // <= 0无限制 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UITextField+Select.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+Select.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextField (Select) 12 | 13 | /** 14 | * 当前选中的字符串范围 15 | * 16 | * @return NSRange 17 | */ 18 | - (NSRange)selectedRange; 19 | /** 20 | * 选中所有文字 21 | */ 22 | - (void)selectAllText; 23 | /** 24 | * 选中指定范围的文字 25 | * 26 | * @param range NSRange范围 27 | */ 28 | - (void)setSelectedRange:(NSRange)range; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UITextView+InputLimit.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+InputLimit.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextView (InputLimit) 12 | 13 | @property (assign, nonatomic) NSInteger maxLength;//if <=0, no limit 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UITextView+Select.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+Select.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextView (Select) 12 | 13 | /// 当前选中的字符串范围 14 | - (NSRange)selectedRange; 15 | 16 | /// 选中所有文字 17 | - (void)selectAllText; 18 | 19 | /// 选中指定范围的文字 20 | - (void)setSelectedRange:(NSRange)range; 21 | 22 | /// 用于计算textview输入情况下的字符数,解决实现限制字符数时,计算不准的问题 23 | - (NSInteger)getInputLengthWithText:(NSString *)text; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIView+BlockGesture.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+BlockGesture.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^GestureActionBlock)(UIGestureRecognizer *gestureRecoginzer); 12 | 13 | @interface UIView (BlockGesture) 14 | 15 | /// 添加点击手势 16 | - (void)addTapActionWithBlock:(GestureActionBlock)block; 17 | /// 添加长按手势 18 | - (void)addLongPressActionWithBlock:(GestureActionBlock)block; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIView+Find.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Find.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Find) 12 | 13 | /// 找到指定类名的第一个subView 14 | - (UIView *)findSubViewWithClass:(Class)clazz; 15 | 16 | /// 找到指定类名的所有subview 17 | - (NSArray *)findAllSubViewsWithClass:(Class)clazz; 18 | 19 | /// 找到当前view所在的viewcontroler 20 | - (UIViewController *)viewController; 21 | 22 | /// 所有的子控件,包括子控件的子控件 23 | - (NSArray *)allSubviews; 24 | 25 | /// 移除所有的子控件 26 | - (void)removeAllSubviews; 27 | 28 | /// 找到view上的第一响应者 29 | - (UIView *)findFirstResponder; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIView+Radius.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+IBnspectable.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** View的XIB可视化扩展类> */ 12 | @interface UIView (Radius) 13 | 14 | /// 给UIView 设置圆角 15 | @property (assign,nonatomic) NSInteger cornerRadius; 16 | @property (assign,nonatomic) BOOL masksToBounds; 17 | 18 | 19 | ///设置 view的 边框颜色(选择器和Hex颜色)以及 边框的宽度 20 | @property (assign,nonatomic) NSInteger borderWidth; 21 | @property (strong,nonatomic) UIColor *borderColor; 22 | 23 | - (void)setLayerShadow:(UIColor*)color offset:(CGSize)offset radius:(CGFloat)radius; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIView+Recursion.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Recursion.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^SubviewBlock) (UIView* view); 12 | typedef void (^SuperviewBlock) (UIView* superview); 13 | @interface UIView (Recursion) 14 | 15 | - (UIView*)findViewRecursively:(BOOL(^)(UIView* subview, BOOL* stop))recurse; 16 | 17 | 18 | -(void)runBlockOnAllSubviews:(SubviewBlock)block; 19 | -(void)runBlockOnAllSuperviews:(SuperviewBlock)block; 20 | -(void)enableAllControlsInViewHierarchy; 21 | -(void)disableAllControlsInViewHierarchy; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIView+Screenshot.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Screenshot.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Screenshot) 12 | 13 | /// 截取当前View 14 | - (nullable UIImage *)snapshotImage; 15 | 16 | - (nullable UIImage *)snapshotImageAfterScreenUpdates:(BOOL)afterUpdates; 17 | /// 截取当前View为PDF 18 | - (nullable NSData *)snapshotPDF; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIView+SubtractMask.h: -------------------------------------------------------------------------------- 1 | // 2 | // SubtractMask.h 3 | // Category 4 | // 5 | // Created by Silence on 2018/11/20. 6 | // Copyright © 2018年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIView (SubtractMask) 14 | 15 | /** 16 | 设置镂空遮罩视图,该方法本质上是设置maskView 17 | 如果寄宿图的内容有更新,需要手动再调用setter方法 18 | 19 | @param view 遮罩视图 20 | */ 21 | - (void)setSubtractMaskView:(UIView *)view; 22 | 23 | /** 24 | 获取镂空遮罩视图,用于动态修改遮罩的一些属性 25 | 26 | @return 遮罩视图 27 | */ 28 | - (UIView *)subtractMaskView; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIView+ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+ViewController.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/13. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (ViewController) 12 | 13 | /// 所在的ViewController 14 | - (UIViewController *)viewController ; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIView+ViewPath.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+ViewPath.h 3 | // ViewPathDemo 4 | // 5 | // Created by Silence on 2019/4/8. 6 | // Copyright © 2019年 Silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIView (ViewPath) 14 | 15 | @property (nonatomic, readonly) NSString *viewPath; 16 | 17 | @property (nonatomic ,readonly) NSString *viewID; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIViewController+BackAction.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+BackAction.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/5/29. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^SIBackAction)(UINavigationController *vc); 12 | 13 | @interface UIViewController (BackAction) 14 | 15 | -(void)backButtonTouched:(SIBackAction)backButtonHandler; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIViewController+RecursiveDescription.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+RecursiveDescription.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (RecursiveDescription) 12 | 13 | /** 14 | * @brief 视图层级 15 | * 16 | * @return 视图层级字符串 17 | */ 18 | -(NSString*)recursiveDescription; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIViewController+Segues.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Segues.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/22. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^UIViewControllerSeguesPrepareCallback)(UIViewController* target); 12 | 13 | @interface UIViewController (Segues) 14 | 15 | - (void)performSegueWithIdentifier:(NSString *)identifier prepareCallback:(UIViewControllerSeguesPrepareCallback)callback; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIViewController+Visible.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Visible.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (Visible) 12 | 13 | - (BOOL)isVisible; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIWebView+MetaParser.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWebView+MetaParser.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIWebView (MetaParser) 12 | 13 | ///获取网页meta信息 14 | -(NSArray *)getMetaData; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIWebView+SwipeGesture.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWebView+SwipeGesture.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIWebView (SwipeGesture) 12 | 13 | - (void)useSwipeGesture ; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/Headers/UIWindow+Hierarchy.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWindow+Hierarchy.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. 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 | -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/A/SICategory: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/FrameWork/SICategory.framework/Versions/A/SICategory -------------------------------------------------------------------------------- /FrameWork/SICategory.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /Library/include/CALayer+Frame.h: -------------------------------------------------------------------------------- 1 | // 2 | // CALayer+Frame.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/4/24. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CALayer (Frame) 12 | 13 | @property CGFloat top; 14 | @property CGFloat bottom; 15 | @property CGFloat left; 16 | @property CGFloat right; 17 | 18 | @property CGFloat centerX; 19 | @property CGFloat centerY; 20 | 21 | @property CGFloat height; 22 | @property CGFloat width; 23 | 24 | @property CGPoint center; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Library/include/CAShapeLayer+UIBezierPath.h: -------------------------------------------------------------------------------- 1 | // 2 | // CAShapeLayer+UIBezierPath.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/4/24. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface CAShapeLayer (UIBezierPath) 13 | 14 | /**Update CAShapeLayer with UIBezierPath.*/ 15 | - (void)updateWithBezierPath:(UIBezierPath *)path; 16 | 17 | /**Get UIBezierPath object, constructed from CAShapeLayer.*/ 18 | - (UIBezierPath *)bezierPath; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/EXTObjc.h: -------------------------------------------------------------------------------- 1 | // 2 | // extobjc.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2010-11-09. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTADT.h" 11 | #import "EXTConcreteProtocol.h" 12 | #import "EXTKeyPathCoding.h" 13 | #import "EXTNil.h" 14 | #import "EXTSafeCategory.h" 15 | #import "EXTScope.h" 16 | #import "EXTSelectorChecking.h" 17 | #import "EXTSynthesize.h" 18 | #import "NSInvocation+EXT.h" 19 | #import "NSMethodSignature+EXT.h" 20 | 21 | -------------------------------------------------------------------------------- /Library/include/NSArray+Contains.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+Contains.h 3 | // Category 4 | // 5 | // Created by Silence on 19/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSArray (Contains) 12 | 13 | 14 | /** 15 | 是否包含所有数组中元素 16 | 17 | @param array 要寻找的Array 18 | @return 是否包含 19 | */ 20 | -(BOOL)containsAll:(NSArray *)array; 21 | 22 | 23 | /** 24 | 是否包含其中任意一个元素 25 | 26 | @param array 要寻找的Array 27 | @return 是否包含 28 | */ 29 | -(BOOL)containsAny:(NSArray *)array; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Library/include/NSArray+JSONEncode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+JSONEncode.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSArray (JSONEncode) 12 | 13 | /** 14 | 转换为JSON 15 | 16 | @return JSON Sting 17 | */ 18 | - (NSString *)jsonStringEncoded; 19 | 20 | /** 21 | 返回格式化后JSON 22 | 23 | @return 格式化后的JSON String 24 | */ 25 | - (NSString *)jsonPrettyStringEncoded; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Library/include/NSData+APNSToken.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+APNSToken.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (APNSToken) 12 | 13 | /** 14 | * 将APNS NSData类型token 格式化成字符串 15 | * 16 | * @return 整理过后的字符串token 17 | */ 18 | - (NSString *)APNSToken; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/NSData+Cache.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Cache.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (Cache) 12 | 13 | /** 14 | 根据key保存到磁盘里缓存起来 15 | 16 | @param key Key 17 | */ 18 | - (void)saveDataCacheWithKey:(NSString *)key; 19 | 20 | 21 | /** 22 | 根据key取出缓存data 23 | 24 | @param key Key 25 | @return 对象数据 26 | */ 27 | + (NSData *)getDataCacheWithKey:(NSString *)key; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Library/include/NSData+DataCache.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+DataCache.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (DataCache) 12 | 13 | /** 14 | * 将URL作为key保存到磁盘里缓存起来 15 | * 16 | * @param identifier url.absoluteString 17 | */ 18 | - (void)saveDataCacheWithIdentifier:(NSString *)identifier; 19 | 20 | /** 21 | * 取出缓存data 22 | * 23 | * @param identifier url.absoluteString 24 | * 25 | * @return 缓存 26 | */ 27 | + (NSData *)getDataCacheWithIdentifier:(NSString *)identifier; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Library/include/NSData+Encrypt.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Encrypt.h 3 | // Category 4 | // 5 | // Created by Silence on 30/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (Encrypt) 12 | 13 | /**利用AES加密数据*/ 14 | - (NSData *)encryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv; 15 | /**利用AES解密数据*/ 16 | - (NSData *)decryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv; 17 | 18 | /**利用3DES加密数据*/ 19 | - (NSData *)encryptedWith3DESUsingKey:(NSString*)key andIV:(NSData*)iv; 20 | /**利用3DES解密数据*/ 21 | - (NSData *)decryptedWith3DESUsingKey:(NSString*)key andIV:(NSData*)iv; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Library/include/NSDate+Cupertino.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+Cupertino.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDate (Cupertino) 12 | 13 | - (NSDate *)beginningOfDay; 14 | - (NSDate *)endOfDay; 15 | 16 | - (NSDate *)beginningOfWeek; 17 | - (NSDate *)endOfWeek; 18 | 19 | - (NSDate *)beginningOfMonth; 20 | - (NSDate *)endOfMonth; 21 | 22 | 23 | - (NSDate *)beginningOfYear; 24 | - (NSDate *)endOfYear; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Library/include/NSDictionary+JSONEncode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+JSONEncode.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (JSONEncode) 12 | 13 | /** 14 | JSON String Encoded 15 | 16 | @return JSON String 17 | */ 18 | - (nullable NSString *)jsonStringEncoded; 19 | 20 | 21 | /** 22 | JSON PrettyString Encoded 23 | 24 | @return JSON Pretty String 25 | */ 26 | - (nullable NSString *)jsonPrettyStringEncoded; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Library/include/NSDictionary+Merge.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+Merge.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (Merge) 12 | 13 | /** 合并两个NSDictionary */ 14 | + (NSDictionary *)dictionaryByMerging:(NSDictionary *)dict1 with:(NSDictionary *)dict2; 15 | 16 | /** 并入一个NSDictionary */ 17 | - (NSDictionary *)dictionaryByMergingWith:(NSDictionary *)dict; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Library/include/NSDictionary+Plist.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+Plist.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface NSDictionary (Plist) 13 | 14 | /// 根据Plist数据初始化字典 15 | + (instancetype)dictionaryWithPlistData:(NSData *)plist; 16 | /// 根绝Plist String初始化字典 17 | + (instancetype)dictionaryWithPlistString:(NSString *)plist; 18 | 19 | /// Plist 数据信息 20 | - (NSData *)plistData; 21 | /// Plist String 22 | - (NSString *)plistString; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Library/include/NSDictionary+URL.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+URL.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (URL) 12 | 13 | /// 将url参数转换成NSDictionary 14 | + (NSDictionary *)dictionaryWithURLQuery:(NSString *)query; 15 | /// 将NSDictionary转换成url参数字符串 16 | - (NSString *)URLQueryString; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Library/include/NSFileHandle+ReadLine.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSFileHandle+ReadLine.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSFileHandle (ReadLine) 12 | 13 | /** 14 | * @brief A Cocoa / Objective-C NSFileHandle category that adds the ability to read a file line by line. 15 | 16 | * 17 | * @param theDelimier 分隔符 18 | * 19 | * @return An NSData* object is returned with the line if found, or nil if no more lines were found 20 | */ 21 | - (NSData *)readLineWithDelimiter:(NSString *)theDelimier; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Library/include/NSIndexPath+Offset.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSIndexPath+Offset.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSIndexPath (Offset) 12 | 13 | /// previous row indexpath 14 | - (NSIndexPath *)previousRow; 15 | 16 | /// next row indexpath 17 | - (NSIndexPath *)nextRow; 18 | 19 | /// previous item indexpath 20 | - (NSIndexPath *)previousItem; 21 | 22 | /// next item indexpath 23 | - (NSIndexPath *)nextItem; 24 | 25 | /// next section indexpath 26 | - (NSIndexPath *)nextSection; 27 | 28 | /// previous section indexpath 29 | - (NSIndexPath *)previousSection; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Library/include/NSNotificationCenter+AutoRemove.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNotificationCenter+AutoRemove.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNotificationCenter (AutoRemove) 12 | 13 | /// 设置是否自动移除监听 14 | + (void)setNotificationAutoRemoveEnable:(BOOL)enable; 15 | /// 获取自动移除监听是否开启 16 | + (BOOL)notificationAutoRemoveEnable; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Library/include/NSNumber+Display.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+Display.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNumber (Display) 12 | 13 | /// 显示指定精读 14 | - (NSString *)displayNumberWithDigit:(NSInteger)digit; 15 | 16 | /// 显示百分比 17 | - (NSString *)displayPercentageWithDigit:(NSInteger)digit; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Library/include/NSNumber+Roman.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+Roman.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNumber (Roman) 12 | 13 | /** 返回自己对应的罗马数字 */ 14 | - (NSString *)romanNumeral; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/NSNumber+Round.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNumber+Round.h 3 | // Category 4 | // 5 | // Created by Silence on 31/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNumber (Round) 12 | 13 | /** 14 | * @brief 四舍五入 15 | * @param digit 限制最大位数 16 | * @return 结果 17 | */ 18 | - (NSNumber*)roundWithDigit:(NSUInteger)digit; 19 | 20 | /** 21 | * @brief 取上整 22 | * @param digit 限制最大位数 23 | * @return 结果 24 | */ 25 | - (NSNumber*)ceilWithDigit:(NSUInteger)digit; 26 | 27 | /** 28 | * @brief 取下整 29 | * @param digit 限制最大位数 30 | * @return 结果 31 | */ 32 | - (NSNumber*)floorWithDigit:(NSUInteger)digit; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Library/include/NSObject+Block.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Block.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (Block) 12 | 13 | + (id)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay; 14 | + (id)performBlock:(void (^)(id arg))block withObject:(id)anObject afterDelay:(NSTimeInterval)delay; 15 | - (id)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay; 16 | - (id)performBlock:(void (^)(id arg))block withObject:(id)anObject afterDelay:(NSTimeInterval)delay; 17 | 18 | + (void)cancelBlock:(id)block; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/NSObject+Dealloc.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Dealloc.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/5/25. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^DeallocBlock)(void); 12 | 13 | @interface NSObject (Dealloc) 14 | 15 | - (void)executeAtDealloc:(DeallocBlock)block; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Library/include/NSObject+Parse.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Parse.h 3 | // Category 4 | // 5 | // Created by Silence on 19/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (Parse) 12 | 13 | /// 转换为String 14 | - (NSString *)toString; 15 | 16 | /// 转换为Number 17 | - (NSNumber *)toNumber; 18 | 19 | /// 转化为Dictionary 20 | - (NSDictionary *)toDictionary; 21 | 22 | /// 转换为Array 23 | - (NSArray *)toArray; 24 | 25 | /// 转换为Array 26 | - (NSArray *)toArrayOf:(Class)itemClass; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Library/include/NSObject+PerformSelector.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+PerformSelector.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/8/23. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (PerformSelector) 12 | 13 | - (id)performSelector:(SEL)aSelector withObjects:(NSArray *)objects; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Library/include/NSObject+QuickCode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+QuickCode.h 3 | // Category 4 | // 5 | // Created by Silence on 30/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (QuickCode) 12 | 13 | /** 快速归档 */ 14 | - (id)quickCoderWith:(NSCoder *)aDecoder ; 15 | 16 | /** 快速解档 */ 17 | - (void)quickEncodeWithCoder:(NSCoder *)aCoder ; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Library/include/NSObject+QuickCopy.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+QuickCopy.h 3 | // Category 4 | // 5 | // Created by Silence on 30/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (QuickCopy) 12 | 13 | /** 快速浅复制目标的所有属性 */ 14 | - (BOOL)quickCopy:(NSObject *)instance ; 15 | 16 | /** 快速深复制目标的所有属性 */ 17 | - (BOOL)quickDeepCopy:(NSObject *)instance ; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Library/include/NSString+AES.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+AES.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/11/15. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (AES) 12 | 13 | /// 加密方法 14 | - (NSString *)encryptWithAESwithKey:(NSString *)key ivParameter:(NSString *)ivParameter; 15 | 16 | /// 解密方法 17 | - (NSString*)decryptWithAESwithKey:(NSString *)key ivParameter:(NSString *)ivParameter; 18 | 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/NSString+Append.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Append.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/12/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (Append) 12 | 13 | - (NSString *)appendHomePath; 14 | - (NSString *)appendDocumentPath; 15 | - (NSString *)appendCachePath; 16 | - (NSString *)appendMainBundlePath; 17 | - (NSString *)appendTempPath; 18 | - (NSString *)appendPreferencesPath; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/NSString+Contains.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Contains.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (Contains) 12 | 13 | /**是否包含中文*/ 14 | - (BOOL)isContainChinese; 15 | 16 | /**是否包含空格*/ 17 | - (BOOL)isContainBlank; 18 | 19 | /**是否包含set*/ 20 | - (BOOL)containsCharacterSet:(NSCharacterSet *)set; 21 | 22 | /**是否包含String*/ 23 | - (BOOL)containsString:(NSString *)string; 24 | 25 | /**字符数量*/ 26 | - (int)wordsCount; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Library/include/NSString+JSONValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+JSONValue.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (JSONValue) 12 | 13 | /// JSON String 转换为字典 14 | - (NSDictionary *)JSONDictionaryValue ; 15 | 16 | /// JSON String 转换为数组 17 | - (NSArray *)JSONArrayValue ; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Library/include/NSString+MIME.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+MIME.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (MIME) 12 | 13 | 14 | /** 15 | 文件名的MIME 16 | 17 | @return MIME 18 | */ 19 | - (NSString *)MIMEType; 20 | 21 | /** 22 | 根绝后辍名获取MIME Type 23 | 24 | @param extension 后辍名 25 | @return MIME 26 | */ 27 | + (NSString *)MIMETypeForExtension:(NSString *)extension; 28 | 29 | /** 30 | MIMEDict信息 31 | 32 | @return MIMEDict字典 33 | */ 34 | + (NSDictionary *)MIMEDict; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Library/include/NSString+QRcode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+QRcode.h 3 | // Category 4 | // 5 | // Created by Silence on 29/12/2016. 6 | // Copyright © 2016 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class UIImage; 12 | @interface NSString (QRcode) 13 | 14 | /** 15 | String的二维码信息 16 | 17 | @return String的二维码图片 18 | */ 19 | - (UIImage *)QRcode ; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Library/include/NSString+XML.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+XML.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (XML) 12 | 13 | /** 14 | * xml字符串转换成NSDictionary 15 | * 16 | * @return NSDictionary 17 | */ 18 | -(NSDictionary *)XMLDictionary; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/NSTimer+Pause.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSTimer+Pause.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/14. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSTimer (Pause) 12 | 13 | /// 暂停NSTimer 14 | - (void)pauseTimer; 15 | 16 | /// 开始NSTimer 17 | - (void)resumeTimer; 18 | 19 | /// 延迟开始NSTimer 20 | - (void)resumeTimerAfterTimeInterval:(NSTimeInterval)interval; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Library/include/NSUserDefaults+iCloudSync.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSUserDefaults+iCloudSync.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/14. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSUserDefaults (iCloudSync) 12 | 13 | -(void)setValue:(id)value forKey:(NSString *)key iCloudSync:(BOOL)sync; 14 | -(void)setObject:(id)value forKey:(NSString *)key iCloudSync:(BOOL)sync; 15 | 16 | -(id)valueForKey:(NSString *)key iCloudSync:(BOOL)sync; 17 | -(id)objectForKey:(NSString *)key iCloudSync:(BOOL)sync; 18 | 19 | -(BOOL)synchronizeAlsoiCloudSync:(BOOL)sync; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Library/include/SIARCMacro.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIARCMacros.h 3 | // Category 4 | // 5 | // Created by Silence on 16/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | // 强弱引用 10 | #define WeakSelf __weak __typeof(self) weakSelf = self; 11 | #define StrongSelf __strong __typeof(weakSelf)strongSelf = weakSelf; 12 | -------------------------------------------------------------------------------- /Library/include/SIAppVersionManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIAppVersionManager.h 3 | // Category 4 | // 5 | // Created by Silence on 24/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SIAppVersionManager : NSObject 12 | 13 | /// 单例 14 | + (SIAppVersionManager *)sharedManager ; 15 | 16 | /// 检查新版本 17 | - (void)checkVersionWithAppID:(NSString *)appID showNewestMsg:(BOOL)showMsg; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Library/include/SICategory.h: -------------------------------------------------------------------------------- 1 | // 2 | // SICategory.h 3 | // Category 4 | // 5 | // Created by Silence on 07/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #ifndef SICategory_h 10 | #define SICategory_h 11 | 12 | #import "SIFoundation.h" 13 | #import "SIUIKit.h" 14 | #import "SIMacros.h" 15 | #import "EXTObjc.h" 16 | #import "SIManager.h" 17 | #import "SIQuartzCore.h" 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /Library/include/SICoreGraphicsMacro.h: -------------------------------------------------------------------------------- 1 | // 2 | // SICoreGraphicsMacros.h 3 | // Category 4 | // 5 | // Created by Silence on 16/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #define CGizeMultiply(size, mult) CGSizeMake(size.width * mult, size.height * mult) 10 | 11 | #define CGizeWith320(size) CGizeMultiply(size, [UIScreen mainScreen].bounds.size.width / 320) 12 | #define CGizeWith375(size) CGizeMultiply(size, [UIScreen mainScreen].bounds.size.width / 375) 13 | 14 | -------------------------------------------------------------------------------- /Library/include/SIFPSManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIFPSManager.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/12/6. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SIFPSManager : UIWindow 12 | 13 | + (SIFPSManager *)sharedManager; 14 | 15 | - (void)open; 16 | - (void)close; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Library/include/SIManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIManager.h 3 | // Category 4 | // 5 | // Created by Silence on 24/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | 10 | #import "SIAuthorizationManager.h" 11 | #import "SIAppVersionManager.h" 12 | #import "SIKeyboardManager.h" 13 | #import "SITouchIDManager.h" 14 | #import "SIMediatorManager.h" 15 | #import "SIIAppPurchaseManager.h" 16 | #import "SIBluetoothManager.h" 17 | #import "SIDownloadManager.h" 18 | #import "SISoundManager.h" 19 | #import "SIKeychainManager.h" 20 | #import "SIFPSManager.h" 21 | #import "SIPushNotificationManager.h" 22 | #import "SIConsoleManager.h" 23 | #import "SICallStackManager.h" 24 | #import "SIProxyManager.h" 25 | 26 | -------------------------------------------------------------------------------- /Library/include/SIMathMacro.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIMaths.h 3 | // Category 4 | // 5 | // Created by Silence on 16/02/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | // 度弧度转换 10 | #define DEGREES_TO_RADIANS(degrees) ((degrees*M_PI)/180.0) 11 | #define RADIANS_TO_DEGREES(radians) ((radians*180.0)/M_PI) 12 | 13 | // 随机Int 14 | #define RANDOM_INT(from,to) ((int)((from) + arc4random() % ((to)-(from) + 1))) 15 | 16 | -------------------------------------------------------------------------------- /Library/include/SIProxyManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIProxyManager.h 3 | // Category 4 | // 5 | // Created by Silence on 2018/9/27. 6 | // Copyright © 2018年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | /// 将消息进行分发 13 | @interface SIProxyManager : NSObject 14 | 15 | - (void)addTarger:(id)target; 16 | - (void)removeTarget:(id)target; 17 | 18 | @property (nonatomic,strong,readonly) NSPointerArray *targets; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Library/include/SIQuartzCore.h: -------------------------------------------------------------------------------- 1 | // 2 | // SIQuartzCore.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/4/24. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #ifndef SIQuartzCore_h 10 | #define SIQuartzCore_h 11 | 12 | #import "CALayer+Frame.h" 13 | #import "CALayer+Property.h" 14 | 15 | #import "CATransaction+AnimateWithDuration.h" 16 | 17 | #import "CAShapeLayer+UIBezierPath.h" 18 | 19 | #import "CAAnimation+EasingEquations.h" 20 | 21 | #import "CAMediaTimingFunction+AdditionalEquations.h" 22 | 23 | #endif /* SIQuartzCore_h */ 24 | -------------------------------------------------------------------------------- /Library/include/UIApplication+KeyboardFrame.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+KeyboardFrame.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIApplication (KeyboardFrame) 12 | 13 | @property (nonatomic,readonly) CGRect keyboardFrame ; /// 键盘的Frame 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Library/include/UIApplication+UIDebug.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+UIDebug.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/5/27. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIApplication (UIDebug) 12 | 13 | /// 显示系统自带的UI调试插件(UIDebuggingInformationOverlay) 14 | + (void)showDebuggingInformationOverlay ; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/UIBezierPath+BasicShapes.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBezierPath+BasicShapes.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBezierPath (BasicShapes) 12 | 13 | + (UIBezierPath *)heartShape:(CGRect)originalFrame; 14 | + (UIBezierPath *)userShape:(CGRect)originalFrame; 15 | + (UIBezierPath *)martiniShape:(CGRect)originalFrame; 16 | + (UIBezierPath *)beakerShape:(CGRect)originalFrame; 17 | + (UIBezierPath *)starShape:(CGRect)originalFrame; 18 | + (UIBezierPath *)stars:(NSUInteger)numberOfStars shapeInFrame:(CGRect)originalFrame; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/UIBezierPath+Length.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBezierPath+Length.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBezierPath (Length) 12 | 13 | - (CGFloat)length; 14 | 15 | - (CGPoint)pointAtPercentOfLength:(CGFloat)percent; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Library/include/UIBezierPath+SVGString.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBezierPath+SVGString.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBezierPath (SVGString) 12 | 13 | /// UIBezierPath转成SVG 14 | - (NSString*)SVGString; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/UIButton+BackgroundColor.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+BackgroundColor.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (BackgroundColor) 12 | 13 | 14 | /** 15 | 给按钮设置背景颜色 16 | 17 | @param backgroundColor Color 18 | @param state 按钮的状态 19 | */ 20 | - (void)setBackgroundColor:(UIColor *)backgroundColor forState:(UIControlState)state; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Library/include/UIButton+Block.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Block.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^TouchedBlock)(id sender); 12 | @interface UIButton (Block) 13 | 14 | /// 给点击状态添加事件 15 | -(void)addActionHandler:(TouchedBlock)touchHandler; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Library/include/UIButton+ClickEdgeInsets.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+ClickEdgeInsets.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /// 改变按钮的响应区域 12 | @interface UIButton (ClickEdgeInsets) 13 | 14 | /// 上左下右分别增加或减小多少 正数为增加 负数为减小 15 | @property (nonatomic, assign) UIEdgeInsets clickEdgeInsets; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Library/include/UIButton+CountDown.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+CountDown.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (CountDown) 12 | 13 | /** 14 | 倒计时按钮 15 | 16 | @param timeout 总时间 17 | @param waitBlock 倒计时过程中可以再里面做一些操作 18 | @param finishBlock 完成时执行的block 19 | */ 20 | - (void)startTime:(NSInteger)timeout waitBlock:(void(^)(NSInteger remainTime))waitBlock finishBlock:(void(^)(void))finishBlock; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Library/include/UIButton+Indicator.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Indicator.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (Indicator) 12 | 13 | /// 显示菊花 14 | - (void)showIndicator; 15 | 16 | /// 隐藏菊花 17 | - (void)hideIndicator; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Library/include/UIButton+Submitting.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+Submitting.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIButton (Submitting) 12 | 13 | /// 按钮点击后,禁用按钮并在按钮上显示ActivityIndicator,以及title 按钮上显示的文字 14 | - (void)beginSubmitting:(NSString *)title; 15 | 16 | /// 按钮点击后,恢复按钮点击前的状态 17 | - (void)endSubmitting; 18 | 19 | /// 按钮是否正在提交中 20 | @property(nonatomic, readonly, getter=isSubmitting) NSNumber *submitting; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Library/include/UIColor+Random.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+Random.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIColor (Random) 12 | 13 | /// 随机颜色 14 | + (UIColor *)randomColor ; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/UIControl+Sound.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIControl+Sound.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIControl (Sound) 12 | 13 | /// 不同事件增加不同声音 14 | - (void)setSoundNamed:(NSString *)name forControlEvent:(UIControlEvents)controlEvent; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/UIDevice+CPU.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIDevice+CPU.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIDevice (CPU) 12 | 13 | @property (nonatomic,readonly) NSUInteger cpuNumber ; /// CPU核心数 14 | @property (nonatomic,readonly) NSUInteger cpuFrequency ; /// CPU频率 15 | @property (nonatomic,readonly) NSUInteger busFrequency ; /// BUS频率 16 | 17 | @property (nonatomic,readonly) float cpuUsage ; /// CPU利用率 18 | @property (nonatomic,readonly) NSArray *cpuUsagePerProcessor ; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/UIFont+Load.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont+Load.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIFont (Load) 12 | 13 | /// Load the font from file path. Support format:TTF,OTF. 14 | /// If return YES, font can be load use it PostScript Name: [UIFont fontWithName:...] 15 | + (BOOL)loadFontFromPath:(NSString *)path; 16 | + (void)unloadFontFromPath:(NSString *)path; 17 | 18 | + (UIFont *)loadFontFromData:(NSData *)data; 19 | + (BOOL)unloadFontFromData:(UIFont *)font; 20 | 21 | + (NSData *)dataFromFont:(UIFont *)font; 22 | + (NSData *)dataFromCGFont:(CGFontRef)cgFont; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Library/include/UIFont+Make.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont+Make.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface UIFont (Make) 13 | 14 | - (UIFont *)fontWithBold ; 15 | - (UIFont *)fontWithItalic ; 16 | - (UIFont *)fontWithBoldItalic ; 17 | - (UIFont *)fontWithNormal ; 18 | 19 | + (UIFont *)fontWithCTFont:(CTFontRef)CTFont; 20 | + (UIFont *)fontWithCGFont:(CGFontRef)CGFont size:(CGFloat)size; 21 | 22 | - (CTFontRef)CTFontRef ; 23 | - (CGFontRef)CGFontRef ; 24 | 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Library/include/UIFont+TTF.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont+TTF.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIFont (TTF) 12 | 13 | + (UIFont *)fontWithTTFAtPath:(NSString *)path size:(CGFloat)size; 14 | + (UIFont *)fontWithTTFAtURL:(NSURL *)URL size:(CGFloat)size; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/UIFont+Traits.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont+Traits.h 3 | // Category 4 | // 5 | // Created by Silence on 01/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIFont (Traits) 12 | 13 | @property (nonatomic, readonly) BOOL isBold; 14 | @property (nonatomic, readonly) BOOL isItalic; 15 | @property (nonatomic, readonly) BOOL isMonoSpace; 16 | @property (nonatomic, readonly) BOOL isColorGlyphs; 17 | @property (nonatomic, readonly) CGFloat fontWeight; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Library/include/UIGestureRecognizer+ALActionBlocks.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIGestureRecognizer+ALActionBlocks.h 3 | // ALActionBlocks 4 | // 5 | // Created by Andy LaVoy on 10/17/13. 6 | // Copyright (c) 2013 Andy LaVoy. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "UIControl+ALActionBlocks.h" 11 | 12 | @interface UIGestureRecognizer (ALActionBlocks) 13 | 14 | + (instancetype)gestureRecognizerWithBlock:(ALActionBlock)actionBlock; 15 | - (void)setBlock:(ALActionBlock)actionBlock; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Library/include/UIImage+BetterFace.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+BetterFace.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSUInteger, Accuracy) { 12 | AccuracyLow = 0, 13 | AccuracyHigh, 14 | }; 15 | @interface UIImage (BetterFace) 16 | 17 | - (UIImage *)betterFaceImageForSize:(CGSize)size 18 | accuracy:(Accuracy)accurary; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/UIImage+Capture.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Capture.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Capture) 12 | 13 | /** 14 | 截取View生成图片 15 | 16 | @param view 视图 17 | @return 生成的图片 18 | */ 19 | + (UIImage *)captureWithView:(UIView *)view ; 20 | 21 | /// 对图片进行缩放 22 | + (UIImage *)imageWithSize:(CGRect)myImageRect FromImage:(UIImage *)bigImage; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Library/include/UIImage+FileName.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+FileName.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (FileName) 12 | 13 | /// 根据main bundle中的文件名读取图片 14 | + (UIImage *)imageWithFileName:(NSString *)name; 15 | 16 | /// 根据指定bundle中的文件名读取图片 17 | + (UIImage *)imageWithFileName:(NSString *)name inBundle:(NSBundle*)bundle; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Library/include/UIImage+Merge.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Merge.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Merge) 12 | 13 | /** 14 | Merge Image 15 | 16 | @param firstImage 第一张图片 17 | @param secondImage 第二章图片 18 | @return Image 19 | */ 20 | + (UIImage*)mergeImage:(UIImage*)firstImage withImage:(UIImage*)secondImage ; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Library/include/UIImage+Video.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Video.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/14. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Video) 12 | 13 | /// 获取视频的截图信息 14 | + (UIImage *)imageWithVideo:(NSString *)stringURL; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/UIImageView+GeometryConversion.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+GeometryConversion.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImageView (GeometryConversion) 12 | 13 | - (CGPoint)convertPointFromImage:(CGPoint)imagePoint; 14 | - (CGRect)convertRectFromImage:(CGRect)imageRect; 15 | 16 | - (CGPoint)convertPointFromView:(CGPoint)viewPoint; 17 | - (CGRect)convertRectFromView:(CGRect)viewRect; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Library/include/UIImageView+Reflect.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+Reflect.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImageView (Reflect) 12 | 13 | /// 倒影 14 | - (void)reflect; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/UILabel+ContenSize.h: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+ContenSize.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UILabel (ContenSize) 12 | 13 | 14 | /** 15 | Content的Size 16 | 17 | @param width 限制宽度 18 | @return Size 19 | */ 20 | - (CGSize)contentSizeForWidth:(CGFloat)width; 21 | 22 | 23 | /** 24 | Content Size 25 | 26 | @return Size 27 | */ 28 | - (CGSize)contentSize; 29 | 30 | 31 | /** 32 | 是否被截断 33 | 34 | @return 是否被截断 35 | */ 36 | - (BOOL)isTruncated; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Library/include/UILabel+Space.h: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+Space.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UILabel (Space) 12 | 13 | /// 设置字间距 14 | - (void)setColumnSpace:(CGFloat)columnSpace; 15 | 16 | /// 设置行距 17 | - (void)setRowSpace:(CGFloat)rowSpace; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Library/include/UINavigationBar+Appear.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationBar+Appear.h 3 | // Category 4 | // 5 | // Created by Silence on 07/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationBar (Appear) 12 | 13 | /// 隐藏阴影 14 | - (void)hideBottomShadow; 15 | /// 显示阴影 16 | - (void)showBottomShadow; 17 | 18 | /// 导航栏透明 19 | - (void)makeTransparent; 20 | /// 默认导航栏 21 | - (void)makeDefault; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Library/include/UINavigationBar+Awesome.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationBar+Awesome.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationBar (Awesome) 12 | 13 | - (void)setBackgroundColor:(UIColor *)backgroundColor; 14 | - (void)setElementsAlpha:(CGFloat)alpha; 15 | - (void)setTranslationY:(CGFloat)translationY; 16 | - (void)reset; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Library/include/UINavigationController+Hide.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+Hide.h 3 | // HIdeDemo 4 | // 5 | // Created by Silence on 17/01/2017. 6 | // Copyright © 2017 Silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationController (Hide) 12 | 13 | @property (nonatomic,getter=isNavBarHidden,readonly) BOOL navBarHidden ; /// 导航栏是否隐藏 14 | 15 | 16 | /** 17 | 设置NavBar隐藏 18 | 19 | @param hidden Hidden 20 | @param animated 是否有动画 21 | @param completion 完成回调 22 | */ 23 | - (void)setNavBarHidden:(BOOL)hidden 24 | animated:(BOOL)animated 25 | completion:(void (^)(BOOL finished))completion; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Library/include/UINavigationItem+Lock.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationItem+Lock.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationItem (Lock) 12 | 13 | /** 14 | * @brief 锁定RightItem 15 | * 16 | * @param lock 是否锁定 17 | */ 18 | - (void)lockRightItem:(BOOL)lock; 19 | /** 20 | * @brief 锁定LeftItem 21 | * 22 | * @param lock 是否锁定 23 | */ 24 | - (void)lockLeftItem:(BOOL)lock; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Library/include/UIResponder+Chain.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+Chain.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. 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 | -------------------------------------------------------------------------------- /Library/include/UIResponder+FirstResponder.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+FirstResponder.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIResponder (FirstResponder) 12 | 13 | /** 14 | * @brief 当前第一响应者 15 | * 16 | * @return 当前第一响应者 17 | */ 18 | + (id)currentFirstResponder; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/UIScrollView+Amplification.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+Amplification.h 3 | // Category 4 | // 5 | // Created by Silence on 04/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (Amplification) 12 | 13 | @property (nonatomic, strong) UIView *bigView; 14 | @property (nonatomic, strong) UIView *headerView; 15 | -(void)setBigView:(UIView *)bigView withHeaderView:(UIView *)headerView; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Library/include/UIScrollView+PageNumber.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+PageNumber.h 3 | // Category 4 | // 5 | // Created by Silence on 04/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (PageNumber) 12 | 13 | -(NSInteger)totalPages; 14 | 15 | -(void)setPageNumber:(NSInteger)pageNumber animated:(BOOL)animated; 16 | -(void)setPageNumber:(NSInteger)pageNumber; 17 | -(NSInteger)pageNumber; 18 | 19 | -(BOOL)isLastPage; 20 | -(BOOL)isFirstPage; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Library/include/UIScrollView+SimpleScroll.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+SimpleScroll.h 3 | // Category 4 | // 5 | // Created by Silence on 04/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (SimpleScroll) 12 | 13 | - (void)scrollToTop; 14 | - (void)scrollToBottom; 15 | - (void)scrollToLeft; 16 | - (void)scrollToRight; 17 | 18 | - (void)scrollToTopAnimated:(BOOL)animated; 19 | - (void)scrollToBottomAnimated:(BOOL)animated; 20 | - (void)scrollToLeftAnimated:(BOOL)animated; 21 | - (void)scrollToRightAnimated:(BOOL)animated; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Library/include/UISlider+Tap.h: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+Tap.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/12. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UISlider (Tap) 12 | 13 | /// 单击手势,会自动到对应比例 14 | - (void)addTapGestureWithTarget: (id)target action: (SEL)action; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/UITabBarController+Hide.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITabBarController+Hide.h 3 | // HIdeDemo 4 | // 5 | // Created by Silence on 17/01/2017. 6 | // Copyright © 2017 Silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITabBarController (Hide) 12 | 13 | @property (nonatomic,getter=isTabBarHidden,readonly) BOOL tabBarHidden ; 14 | 15 | 16 | /** 17 | 设置Tabbar隐藏 18 | 19 | @param hidden 是否隐藏 20 | @param animated 是否有动画 21 | @param completion 返回回调 22 | */ 23 | - (void)setTabBarHidden:(BOOL)hidden 24 | animated:(BOOL)animated 25 | completion:(void (^)(BOOL finished))completion; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Library/include/UITableView+Placeholder.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+Placeholder.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/12/20. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^PlaceholderClickBlock)(UIView *view); 12 | 13 | @interface UITableView (Placeholder) 14 | 15 | @property (nonatomic, assign) BOOL showPlaceholder; 16 | 17 | @property (nonatomic, copy) PlaceholderClickBlock placeholderClickBlock; 18 | @property (nonatomic, copy) NSString *placeholderText; 19 | @property (nonatomic, copy) UIImage *placeholderImage; 20 | @property (nonatomic, copy) UIView *placeholderCustomView; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Library/include/UITableView+iOS7Style.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+iOS7Style.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/21. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITableView (iOS7Style) 12 | 13 | /** 14 | * @brief ios7设置页面的UITableViewCell样式 15 | * 16 | * @param cell cell 17 | * @param indexPath indexPath 18 | */ 19 | -(void)applyiOS7SettingsStyleGrouping:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Library/include/UITableViewCell+NIB.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableViewCell+NIB.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITableViewCell (NIB) 12 | 13 | /// 加载同类名的nib 14 | + (UINib*)nib; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/UITextField+InputLimit.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+InputLimit.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextField (InputLimit) 12 | 13 | @property (assign, nonatomic) NSInteger maxLength ; // <= 0无限制 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Library/include/UITextField+Select.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+Select.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextField (Select) 12 | 13 | /** 14 | * 当前选中的字符串范围 15 | * 16 | * @return NSRange 17 | */ 18 | - (NSRange)selectedRange; 19 | /** 20 | * 选中所有文字 21 | */ 22 | - (void)selectAllText; 23 | /** 24 | * 选中指定范围的文字 25 | * 26 | * @param range NSRange范围 27 | */ 28 | - (void)setSelectedRange:(NSRange)range; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Library/include/UITextView+InputLimit.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+InputLimit.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextView (InputLimit) 12 | 13 | @property (assign, nonatomic) NSInteger maxLength;//if <=0, no limit 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Library/include/UITextView+Select.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+Select.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITextView (Select) 12 | 13 | /// 当前选中的字符串范围 14 | - (NSRange)selectedRange; 15 | 16 | /// 选中所有文字 17 | - (void)selectAllText; 18 | 19 | /// 选中指定范围的文字 20 | - (void)setSelectedRange:(NSRange)range; 21 | 22 | /// 用于计算textview输入情况下的字符数,解决实现限制字符数时,计算不准的问题 23 | - (NSInteger)getInputLengthWithText:(NSString *)text; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Library/include/UIView+BlockGesture.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+BlockGesture.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^GestureActionBlock)(UIGestureRecognizer *gestureRecoginzer); 12 | 13 | @interface UIView (BlockGesture) 14 | 15 | /// 添加点击手势 16 | - (void)addTapActionWithBlock:(GestureActionBlock)block; 17 | /// 添加长按手势 18 | - (void)addLongPressActionWithBlock:(GestureActionBlock)block; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/UIView+Find.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Find.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Find) 12 | 13 | /// 找到指定类名的第一个subView 14 | - (UIView *)findSubViewWithClass:(Class)clazz; 15 | 16 | /// 找到指定类名的所有subview 17 | - (NSArray *)findAllSubViewsWithClass:(Class)clazz; 18 | 19 | /// 找到当前view所在的viewcontroler 20 | - (UIViewController *)viewController; 21 | 22 | /// 所有的子控件,包括子控件的子控件 23 | - (NSArray *)allSubviews; 24 | 25 | /// 移除所有的子控件 26 | - (void)removeAllSubviews; 27 | 28 | /// 找到view上的第一响应者 29 | - (UIView *)findFirstResponder; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Library/include/UIView+Frame.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Frame.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Frame) 12 | 13 | @property (nonatomic, assign) CGPoint origin; 14 | @property (nonatomic, assign) CGSize size; 15 | 16 | @property (nonatomic) CGFloat centerX; 17 | @property (nonatomic) CGFloat centerY; 18 | 19 | @property (nonatomic) CGFloat top; 20 | @property (nonatomic) CGFloat bottom; 21 | @property (nonatomic) CGFloat right; 22 | @property (nonatomic) CGFloat left; 23 | 24 | @property (nonatomic) CGFloat width; 25 | @property (nonatomic) CGFloat height; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Library/include/UIView+NIB.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+NIB.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (NIB) 12 | 13 | + (UINib *)loadNib; 14 | + (UINib *)loadNibNamed:(NSString*)nibName; 15 | + (UINib *)loadNibNamed:(NSString*)nibName bundle:(NSBundle *)bundle; 16 | 17 | + (instancetype)loadInstanceFromNib; 18 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName; 19 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName owner:(id)owner; 20 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName owner:(id)owner bundle:(NSBundle *)bundle; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Library/include/UIView+Radius.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+IBnspectable.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** View的XIB可视化扩展类> */ 12 | @interface UIView (Radius) 13 | 14 | /// 给UIView 设置圆角 15 | @property (assign,nonatomic) NSInteger cornerRadius; 16 | @property (assign,nonatomic) BOOL masksToBounds; 17 | 18 | 19 | ///设置 view的 边框颜色(选择器和Hex颜色)以及 边框的宽度 20 | @property (assign,nonatomic) NSInteger borderWidth; 21 | @property (strong,nonatomic) UIColor *borderColor; 22 | 23 | - (void)setLayerShadow:(UIColor*)color offset:(CGSize)offset radius:(CGFloat)radius; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Library/include/UIView+Recursion.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Recursion.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^SubviewBlock) (UIView* view); 12 | typedef void (^SuperviewBlock) (UIView* superview); 13 | @interface UIView (Recursion) 14 | 15 | - (UIView*)findViewRecursively:(BOOL(^)(UIView* subview, BOOL* stop))recurse; 16 | 17 | 18 | -(void)runBlockOnAllSubviews:(SubviewBlock)block; 19 | -(void)runBlockOnAllSuperviews:(SuperviewBlock)block; 20 | -(void)enableAllControlsInViewHierarchy; 21 | -(void)disableAllControlsInViewHierarchy; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Library/include/UIView+Screenshot.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Screenshot.h 3 | // Category 4 | // 5 | // Created by Silence on 02/01/2017. 6 | // Copyright © 2017 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Screenshot) 12 | 13 | /// 截取当前View 14 | - (nullable UIImage *)snapshotImage; 15 | 16 | - (nullable UIImage *)snapshotImageAfterScreenUpdates:(BOOL)afterUpdates; 17 | /// 截取当前View为PDF 18 | - (nullable NSData *)snapshotPDF; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/UIView+SubtractMask.h: -------------------------------------------------------------------------------- 1 | // 2 | // SubtractMask.h 3 | // Category 4 | // 5 | // Created by Silence on 2018/11/20. 6 | // Copyright © 2018年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIView (SubtractMask) 14 | 15 | /** 16 | 设置镂空遮罩视图,该方法本质上是设置maskView 17 | 如果寄宿图的内容有更新,需要手动再调用setter方法 18 | 19 | @param view 遮罩视图 20 | */ 21 | - (void)setSubtractMaskView:(UIView *)view; 22 | 23 | /** 24 | 获取镂空遮罩视图,用于动态修改遮罩的一些属性 25 | 26 | @return 遮罩视图 27 | */ 28 | - (UIView *)subtractMaskView; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /Library/include/UIView+ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+ViewController.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/13. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (ViewController) 12 | 13 | /// 所在的ViewController 14 | - (UIViewController *)viewController ; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/UIView+ViewPath.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+ViewPath.h 3 | // ViewPathDemo 4 | // 5 | // Created by Silence on 2019/4/8. 6 | // Copyright © 2019年 Silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIView (ViewPath) 14 | 15 | @property (nonatomic, readonly) NSString *viewPath; 16 | 17 | @property (nonatomic ,readonly) NSString *viewID; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Library/include/UIViewController+BackAction.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+BackAction.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/5/29. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (^SIBackAction)(UINavigationController *vc); 12 | 13 | @interface UIViewController (BackAction) 14 | 15 | -(void)backButtonTouched:(SIBackAction)backButtonHandler; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Library/include/UIViewController+RecursiveDescription.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+RecursiveDescription.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (RecursiveDescription) 12 | 13 | /** 14 | * @brief 视图层级 15 | * 16 | * @return 视图层级字符串 17 | */ 18 | -(NSString*)recursiveDescription; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Library/include/UIViewController+Segues.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Segues.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/22. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^UIViewControllerSeguesPrepareCallback)(UIViewController* target); 12 | 13 | @interface UIViewController (Segues) 14 | 15 | - (void)performSegueWithIdentifier:(NSString *)identifier prepareCallback:(UIViewControllerSeguesPrepareCallback)callback; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Library/include/UIViewController+Visible.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Visible.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIViewController (Visible) 12 | 13 | - (BOOL)isVisible; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Library/include/UIWebView+MetaParser.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWebView+MetaParser.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIWebView (MetaParser) 12 | 13 | ///获取网页meta信息 14 | -(NSArray *)getMetaData; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Library/include/UIWebView+SwipeGesture.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWebView+SwipeGesture.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/28. 6 | // Copyright © 2017年 silence. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIWebView (SwipeGesture) 12 | 13 | - (void)useSwipeGesture ; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Library/include/UIWindow+Hierarchy.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWindow+Hierarchy.h 3 | // Category 4 | // 5 | // Created by Silence on 2017/3/18. 6 | // Copyright © 2017年 silence. 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 | -------------------------------------------------------------------------------- /Library/libSICategory.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silence0201/iOS-Category/b8f3c5408c4438aecd6a919d82c0a377144b62c8/Library/libSICategory.a --------------------------------------------------------------------------------