├── CRIconView.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcuserdata │ └── bear.xcuserdatad │ └── xcschemes │ ├── CRIconView.xcscheme │ └── xcschememanagement.plist ├── CRIconView.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── CRIconView.xcscmblueprint ├── CRIconView ├── AppDelegate.h ├── AppDelegate.m ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── CRIcon.imageset │ │ ├── Contents.json │ │ └── logonew透明底.png │ ├── Contents.json │ ├── homgBg.imageset │ │ ├── Contents.json │ │ └── f6f8fc3e198a21db591c54d18cb8a1402350c85b21588-ZUzi6B_fw658.jpeg │ └── hours.imageset │ │ ├── Contents.json │ │ └── hours@2x.png ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── CRMaskAnimationView.h ├── CRMaskAnimationView.m ├── CRMaskImageView.h ├── CRMaskImageView.m ├── CRShiningAnimationView.h ├── CRShiningAnimationView.m ├── ContourTestView.h ├── ContourTestView.m ├── Info.plist ├── PrefixHeader.pch ├── TestLayerView.h ├── TestLayerView.m ├── ViewController.h ├── ViewController.m └── main.m ├── Images ├── CRIcon.png ├── logonew.sketch ├── logonew渐变调整完成.sketch ├── logonew透明底.png └── logonew透明底.sketch ├── Podfile ├── Pods ├── BearSkill │ ├── LICENSE │ ├── Pod │ │ ├── AttributeString │ │ │ ├── NSMutableAttributedString+BearSet.h │ │ │ └── NSMutableAttributedString+BearSet.m │ │ ├── BearDefines │ │ │ └── BearDefines.h │ │ ├── Constants │ │ │ ├── ApplicationOpenURLManager.h │ │ │ ├── ApplicationOpenURLManager.m │ │ │ ├── BearConstants.h │ │ │ └── BearConstants.m │ │ ├── Layout │ │ │ ├── UITableView+BearStoreCellHeight.h │ │ │ ├── UITableView+BearStoreCellHeight.m │ │ │ ├── UIView+BearSet.h │ │ │ └── UIView+BearSet.m │ │ └── UIAndExtend │ │ │ ├── BearAlertView │ │ │ ├── BearAlertBtnsView.h │ │ │ ├── BearAlertBtnsView.m │ │ │ ├── BearAlertContentView.h │ │ │ ├── BearAlertContentView.m │ │ │ ├── BearAlertView.h │ │ │ └── BearAlertView.m │ │ │ ├── BearBezierPath.h │ │ │ ├── BearBezierPath.m │ │ │ ├── BearCutOutView.h │ │ │ ├── BearCutOutView.m │ │ │ ├── UILabel+BearSet.h │ │ │ ├── UILabel+BearSet.m │ │ │ ├── UITextField+BearLimitLength.h │ │ │ └── UITextField+BearLimitLength.m │ └── README.md ├── Headers │ ├── Private │ │ └── BearSkill │ │ │ ├── ApplicationOpenURLManager.h │ │ │ ├── BearAlertBtnsView.h │ │ │ ├── BearAlertContentView.h │ │ │ ├── BearAlertView.h │ │ │ ├── BearBezierPath.h │ │ │ ├── BearConstants.h │ │ │ ├── BearCutOutView.h │ │ │ ├── BearDefines.h │ │ │ ├── NSMutableAttributedString+BearSet.h │ │ │ ├── UILabel+BearSet.h │ │ │ ├── UITableView+BearStoreCellHeight.h │ │ │ ├── UITextField+BearLimitLength.h │ │ │ └── UIView+BearSet.h │ └── Public │ │ └── BearSkill │ │ ├── ApplicationOpenURLManager.h │ │ ├── BearAlertBtnsView.h │ │ ├── BearAlertContentView.h │ │ ├── BearAlertView.h │ │ ├── BearBezierPath.h │ │ ├── BearConstants.h │ │ ├── BearCutOutView.h │ │ ├── BearDefines.h │ │ ├── NSMutableAttributedString+BearSet.h │ │ ├── UILabel+BearSet.h │ │ ├── UITableView+BearStoreCellHeight.h │ │ ├── UITextField+BearLimitLength.h │ │ └── UIView+BearSet.h ├── Local Podspecs │ └── BearSkill.podspec.json ├── Manifest.lock ├── Pods.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ └── bear.xcuserdatad │ │ └── xcschemes │ │ ├── BearSkill.xcscheme │ │ ├── Pods-CRIconView.xcscheme │ │ └── xcschememanagement.plist └── Target Support Files │ ├── BearSkill │ ├── BearSkill-dummy.m │ ├── BearSkill-prefix.pch │ └── BearSkill.xcconfig │ └── Pods-CRIconView │ ├── Pods-CRIconView-acknowledgements.markdown │ ├── Pods-CRIconView-acknowledgements.plist │ ├── Pods-CRIconView-dummy.m │ ├── Pods-CRIconView-frameworks.sh │ ├── Pods-CRIconView-resources.sh │ ├── Pods-CRIconView.debug.xcconfig │ └── Pods-CRIconView.release.xcconfig └── libjpeg.a /CRIconView.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 0916CAAD1F6ECBBD00825CE6 /* ContourTestView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0916CAAC1F6ECBBD00825CE6 /* ContourTestView.m */; }; 11 | 0916CAB11F6ECC7600825CE6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0916CAB01F6ECC7600825CE6 /* UIKit.framework */; }; 12 | 0916CAB31F6ECC7D00825CE6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0916CAB21F6ECC7D00825CE6 /* Foundation.framework */; }; 13 | 0916CAB51F6ECC8800825CE6 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0916CAB41F6ECC8800825CE6 /* CoreGraphics.framework */; }; 14 | 0916CAC31F6F546100825CE6 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0916CAC21F6F546100825CE6 /* AssetsLibrary.framework */; }; 15 | 0916CAC81F6F54CC00825CE6 /* libstdc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0916CABC1F6F534300825CE6 /* libstdc++.tbd */; }; 16 | 0916CACD1F6F552400825CE6 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0916CAC01F6F543F00825CE6 /* AVFoundation.framework */; }; 17 | 0916CAD01F6F5D4F00825CE6 /* libstdc++.6.0.9.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0916CABE1F6F536400825CE6 /* libstdc++.6.0.9.tbd */; }; 18 | 0916CAD61F6F5E9F00825CE6 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0916CAC41F6F546D00825CE6 /* CoreMedia.framework */; }; 19 | 0919E8BC1F6F62B2006EEFF5 /* libjpeg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0919E8BB1F6F62B2006EEFF5 /* libjpeg.a */; settings = {ATTRIBUTES = (Weak, ); }; }; 20 | 0919E8BD1F6F64D1006EEFF5 /* opencv2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0919E8B71F6F6236006EEFF5 /* opencv2.framework */; }; 21 | 093996771F63C68B000566F5 /* TestLayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 093996761F63C68B000566F5 /* TestLayerView.m */; }; 22 | 095B19241F5F7BE900951060 /* CRMaskAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 095B19231F5F7BE900951060 /* CRMaskAnimationView.m */; }; 23 | 095B192A1F60D42100951060 /* CRShiningAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 095B19291F60D42100951060 /* CRShiningAnimationView.m */; }; 24 | 09BCCD061F5EEDB900A5E275 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 09BCCD051F5EEDB900A5E275 /* main.m */; }; 25 | 09BCCD091F5EEDB900A5E275 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 09BCCD081F5EEDB900A5E275 /* AppDelegate.m */; }; 26 | 09BCCD0C1F5EEDB900A5E275 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 09BCCD0B1F5EEDB900A5E275 /* ViewController.m */; }; 27 | 09BCCD0F1F5EEDB900A5E275 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 09BCCD0D1F5EEDB900A5E275 /* Main.storyboard */; }; 28 | 09BCCD111F5EEDB900A5E275 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 09BCCD101F5EEDB900A5E275 /* Assets.xcassets */; }; 29 | 09BCCD141F5EEDB900A5E275 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 09BCCD121F5EEDB900A5E275 /* LaunchScreen.storyboard */; }; 30 | 09BCCD201F5EF02300A5E275 /* CRMaskImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 09BCCD1F1F5EF02300A5E275 /* CRMaskImageView.m */; }; 31 | E0D18A6B4D4B73108C7084C3 /* libPods-CRIconView.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A3AFBCA57EA4E4A576568A54 /* libPods-CRIconView.a */; }; 32 | /* End PBXBuildFile section */ 33 | 34 | /* Begin PBXFileReference section */ 35 | 0916CAAB1F6ECBBD00825CE6 /* ContourTestView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContourTestView.h; sourceTree = ""; }; 36 | 0916CAAC1F6ECBBD00825CE6 /* ContourTestView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContourTestView.m; sourceTree = ""; }; 37 | 0916CAB01F6ECC7600825CE6 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 38 | 0916CAB21F6ECC7D00825CE6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 39 | 0916CAB41F6ECC8800825CE6 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 40 | 0916CAB61F6ECE1B00825CE6 /* PrefixHeader.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PrefixHeader.pch; sourceTree = ""; }; 41 | 0916CABA1F6F501800825CE6 /* opencv2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = opencv2.framework; path = ../opencv_for_ios_book_samples/opencv2.framework; sourceTree = ""; }; 42 | 0916CABC1F6F534300825CE6 /* libstdc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libstdc++.tbd"; path = "usr/lib/libstdc++.tbd"; sourceTree = SDKROOT; }; 43 | 0916CABE1F6F536400825CE6 /* libstdc++.6.0.9.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libstdc++.6.0.9.tbd"; path = "usr/lib/libstdc++.6.0.9.tbd"; sourceTree = SDKROOT; }; 44 | 0916CAC01F6F543F00825CE6 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 45 | 0916CAC21F6F546100825CE6 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; }; 46 | 0916CAC41F6F546D00825CE6 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; 47 | 0916CAC61F6F54B200825CE6 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; 48 | 0916CAC91F6F54F700825CE6 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; }; 49 | 0916CACB1F6F550800825CE6 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; }; 50 | 0916CACE1F6F5B2800825CE6 /* libjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjpeg.a; path = ../OpenCVFrameWork/libjpeg.a; sourceTree = ""; }; 51 | 0916CAD11F6F5DF000825CE6 /* libjpeg.62.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libjpeg.62.dylib; path = ../OpenCVFrameWork/libjpeg.62.dylib; sourceTree = ""; }; 52 | 0916CAD31F6F5E4800825CE6 /* libjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjpeg.a; path = "../../../../../opt/libjpeg-turbo/lib/libjpeg.a"; sourceTree = ""; }; 53 | 0919E8B71F6F6236006EEFF5 /* opencv2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = opencv2.framework; path = ../OpenCVFrameWork/2.4.13/opencv2.framework; sourceTree = ""; }; 54 | 0919E8B91F6F6287006EEFF5 /* opencv2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = opencv2.framework; sourceTree = ""; }; 55 | 0919E8BB1F6F62B2006EEFF5 /* libjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libjpeg.a; sourceTree = ""; }; 56 | 093996751F63C68B000566F5 /* TestLayerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestLayerView.h; sourceTree = ""; }; 57 | 093996761F63C68B000566F5 /* TestLayerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestLayerView.m; sourceTree = ""; }; 58 | 095B19221F5F7BE900951060 /* CRMaskAnimationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CRMaskAnimationView.h; sourceTree = ""; }; 59 | 095B19231F5F7BE900951060 /* CRMaskAnimationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CRMaskAnimationView.m; sourceTree = ""; }; 60 | 095B19281F60D42100951060 /* CRShiningAnimationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CRShiningAnimationView.h; sourceTree = ""; }; 61 | 095B19291F60D42100951060 /* CRShiningAnimationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CRShiningAnimationView.m; sourceTree = ""; }; 62 | 09BCCD011F5EEDB900A5E275 /* CRIconView.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CRIconView.app; sourceTree = BUILT_PRODUCTS_DIR; }; 63 | 09BCCD051F5EEDB900A5E275 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 64 | 09BCCD071F5EEDB900A5E275 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 65 | 09BCCD081F5EEDB900A5E275 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 66 | 09BCCD0A1F5EEDB900A5E275 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 67 | 09BCCD0B1F5EEDB900A5E275 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 68 | 09BCCD0E1F5EEDB900A5E275 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 69 | 09BCCD101F5EEDB900A5E275 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 70 | 09BCCD131F5EEDB900A5E275 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 71 | 09BCCD151F5EEDB900A5E275 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 72 | 09BCCD1E1F5EF02300A5E275 /* CRMaskImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CRMaskImageView.h; sourceTree = ""; }; 73 | 09BCCD1F1F5EF02300A5E275 /* CRMaskImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CRMaskImageView.m; sourceTree = ""; }; 74 | 41812DE40599631E1EEE7777 /* Pods-CRIconView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CRIconView.debug.xcconfig"; path = "Pods/Target Support Files/Pods-CRIconView/Pods-CRIconView.debug.xcconfig"; sourceTree = ""; }; 75 | A3AFBCA57EA4E4A576568A54 /* libPods-CRIconView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-CRIconView.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 76 | CC3D4A35B2A6A8C47AD7F715 /* Pods-CRIconView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CRIconView.release.xcconfig"; path = "Pods/Target Support Files/Pods-CRIconView/Pods-CRIconView.release.xcconfig"; sourceTree = ""; }; 77 | /* End PBXFileReference section */ 78 | 79 | /* Begin PBXFrameworksBuildPhase section */ 80 | 09BCCCFE1F5EEDB900A5E275 /* Frameworks */ = { 81 | isa = PBXFrameworksBuildPhase; 82 | buildActionMask = 2147483647; 83 | files = ( 84 | 0919E8BD1F6F64D1006EEFF5 /* opencv2.framework in Frameworks */, 85 | 0919E8BC1F6F62B2006EEFF5 /* libjpeg.a in Frameworks */, 86 | 0916CAD61F6F5E9F00825CE6 /* CoreMedia.framework in Frameworks */, 87 | 0916CAD01F6F5D4F00825CE6 /* libstdc++.6.0.9.tbd in Frameworks */, 88 | 0916CACD1F6F552400825CE6 /* AVFoundation.framework in Frameworks */, 89 | 0916CAC81F6F54CC00825CE6 /* libstdc++.tbd in Frameworks */, 90 | 0916CAC31F6F546100825CE6 /* AssetsLibrary.framework in Frameworks */, 91 | 0916CAB51F6ECC8800825CE6 /* CoreGraphics.framework in Frameworks */, 92 | 0916CAB31F6ECC7D00825CE6 /* Foundation.framework in Frameworks */, 93 | 0916CAB11F6ECC7600825CE6 /* UIKit.framework in Frameworks */, 94 | E0D18A6B4D4B73108C7084C3 /* libPods-CRIconView.a in Frameworks */, 95 | ); 96 | runOnlyForDeploymentPostprocessing = 0; 97 | }; 98 | /* End PBXFrameworksBuildPhase section */ 99 | 100 | /* Begin PBXGroup section */ 101 | 0954119F3DA147B1A930027A /* Pods */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | 41812DE40599631E1EEE7777 /* Pods-CRIconView.debug.xcconfig */, 105 | CC3D4A35B2A6A8C47AD7F715 /* Pods-CRIconView.release.xcconfig */, 106 | ); 107 | name = Pods; 108 | sourceTree = ""; 109 | }; 110 | 09BCCCF81F5EEDB800A5E275 = { 111 | isa = PBXGroup; 112 | children = ( 113 | 09BCCD031F5EEDB900A5E275 /* CRIconView */, 114 | 09BCCD021F5EEDB900A5E275 /* Products */, 115 | 0954119F3DA147B1A930027A /* Pods */, 116 | C1B76340C951CCC11569FD57 /* Frameworks */, 117 | ); 118 | sourceTree = ""; 119 | }; 120 | 09BCCD021F5EEDB900A5E275 /* Products */ = { 121 | isa = PBXGroup; 122 | children = ( 123 | 09BCCD011F5EEDB900A5E275 /* CRIconView.app */, 124 | ); 125 | name = Products; 126 | sourceTree = ""; 127 | }; 128 | 09BCCD031F5EEDB900A5E275 /* CRIconView */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | 09BCCD071F5EEDB900A5E275 /* AppDelegate.h */, 132 | 09BCCD081F5EEDB900A5E275 /* AppDelegate.m */, 133 | 09BCCD0A1F5EEDB900A5E275 /* ViewController.h */, 134 | 09BCCD0B1F5EEDB900A5E275 /* ViewController.m */, 135 | 09BCCD1E1F5EF02300A5E275 /* CRMaskImageView.h */, 136 | 09BCCD1F1F5EF02300A5E275 /* CRMaskImageView.m */, 137 | 095B19221F5F7BE900951060 /* CRMaskAnimationView.h */, 138 | 095B19231F5F7BE900951060 /* CRMaskAnimationView.m */, 139 | 095B19281F60D42100951060 /* CRShiningAnimationView.h */, 140 | 095B19291F60D42100951060 /* CRShiningAnimationView.m */, 141 | 093996751F63C68B000566F5 /* TestLayerView.h */, 142 | 093996761F63C68B000566F5 /* TestLayerView.m */, 143 | 0916CAAB1F6ECBBD00825CE6 /* ContourTestView.h */, 144 | 0916CAAC1F6ECBBD00825CE6 /* ContourTestView.m */, 145 | 0916CAB61F6ECE1B00825CE6 /* PrefixHeader.pch */, 146 | 09BCCD0D1F5EEDB900A5E275 /* Main.storyboard */, 147 | 09BCCD101F5EEDB900A5E275 /* Assets.xcassets */, 148 | 09BCCD121F5EEDB900A5E275 /* LaunchScreen.storyboard */, 149 | 09BCCD151F5EEDB900A5E275 /* Info.plist */, 150 | 09BCCD041F5EEDB900A5E275 /* Supporting Files */, 151 | ); 152 | path = CRIconView; 153 | sourceTree = ""; 154 | }; 155 | 09BCCD041F5EEDB900A5E275 /* Supporting Files */ = { 156 | isa = PBXGroup; 157 | children = ( 158 | 09BCCD051F5EEDB900A5E275 /* main.m */, 159 | ); 160 | name = "Supporting Files"; 161 | sourceTree = ""; 162 | }; 163 | C1B76340C951CCC11569FD57 /* Frameworks */ = { 164 | isa = PBXGroup; 165 | children = ( 166 | 0919E8BB1F6F62B2006EEFF5 /* libjpeg.a */, 167 | 0919E8B91F6F6287006EEFF5 /* opencv2.framework */, 168 | 0919E8B71F6F6236006EEFF5 /* opencv2.framework */, 169 | 0916CAD31F6F5E4800825CE6 /* libjpeg.a */, 170 | 0916CAD11F6F5DF000825CE6 /* libjpeg.62.dylib */, 171 | 0916CACE1F6F5B2800825CE6 /* libjpeg.a */, 172 | 0916CACB1F6F550800825CE6 /* CoreImage.framework */, 173 | 0916CAC91F6F54F700825CE6 /* ImageIO.framework */, 174 | 0916CAC61F6F54B200825CE6 /* CoreVideo.framework */, 175 | 0916CAC41F6F546D00825CE6 /* CoreMedia.framework */, 176 | 0916CAC21F6F546100825CE6 /* AssetsLibrary.framework */, 177 | 0916CAC01F6F543F00825CE6 /* AVFoundation.framework */, 178 | 0916CABE1F6F536400825CE6 /* libstdc++.6.0.9.tbd */, 179 | 0916CABC1F6F534300825CE6 /* libstdc++.tbd */, 180 | 0916CABA1F6F501800825CE6 /* opencv2.framework */, 181 | 0916CAB41F6ECC8800825CE6 /* CoreGraphics.framework */, 182 | 0916CAB21F6ECC7D00825CE6 /* Foundation.framework */, 183 | 0916CAB01F6ECC7600825CE6 /* UIKit.framework */, 184 | A3AFBCA57EA4E4A576568A54 /* libPods-CRIconView.a */, 185 | ); 186 | name = Frameworks; 187 | sourceTree = ""; 188 | }; 189 | /* End PBXGroup section */ 190 | 191 | /* Begin PBXNativeTarget section */ 192 | 09BCCD001F5EEDB900A5E275 /* CRIconView */ = { 193 | isa = PBXNativeTarget; 194 | buildConfigurationList = 09BCCD181F5EEDB900A5E275 /* Build configuration list for PBXNativeTarget "CRIconView" */; 195 | buildPhases = ( 196 | 5FA1E05C1D4AADA4D356831E /* [CP] Check Pods Manifest.lock */, 197 | 09BCCCFD1F5EEDB900A5E275 /* Sources */, 198 | 09BCCCFE1F5EEDB900A5E275 /* Frameworks */, 199 | 09BCCCFF1F5EEDB900A5E275 /* Resources */, 200 | 2F1D67C8B3E8AE491C42BA6D /* [CP] Embed Pods Frameworks */, 201 | 1EC8B1512F68112767202989 /* [CP] Copy Pods Resources */, 202 | ); 203 | buildRules = ( 204 | ); 205 | dependencies = ( 206 | ); 207 | name = CRIconView; 208 | productName = CRIconView; 209 | productReference = 09BCCD011F5EEDB900A5E275 /* CRIconView.app */; 210 | productType = "com.apple.product-type.application"; 211 | }; 212 | /* End PBXNativeTarget section */ 213 | 214 | /* Begin PBXProject section */ 215 | 09BCCCF91F5EEDB800A5E275 /* Project object */ = { 216 | isa = PBXProject; 217 | attributes = { 218 | LastUpgradeCheck = 0830; 219 | ORGANIZATIONNAME = Bear; 220 | TargetAttributes = { 221 | 09BCCD001F5EEDB900A5E275 = { 222 | CreatedOnToolsVersion = 8.3.2; 223 | DevelopmentTeam = VT6HKJNGDV; 224 | ProvisioningStyle = Automatic; 225 | }; 226 | }; 227 | }; 228 | buildConfigurationList = 09BCCCFC1F5EEDB800A5E275 /* Build configuration list for PBXProject "CRIconView" */; 229 | compatibilityVersion = "Xcode 3.2"; 230 | developmentRegion = English; 231 | hasScannedForEncodings = 0; 232 | knownRegions = ( 233 | en, 234 | Base, 235 | ); 236 | mainGroup = 09BCCCF81F5EEDB800A5E275; 237 | productRefGroup = 09BCCD021F5EEDB900A5E275 /* Products */; 238 | projectDirPath = ""; 239 | projectRoot = ""; 240 | targets = ( 241 | 09BCCD001F5EEDB900A5E275 /* CRIconView */, 242 | ); 243 | }; 244 | /* End PBXProject section */ 245 | 246 | /* Begin PBXResourcesBuildPhase section */ 247 | 09BCCCFF1F5EEDB900A5E275 /* Resources */ = { 248 | isa = PBXResourcesBuildPhase; 249 | buildActionMask = 2147483647; 250 | files = ( 251 | 09BCCD141F5EEDB900A5E275 /* LaunchScreen.storyboard in Resources */, 252 | 09BCCD111F5EEDB900A5E275 /* Assets.xcassets in Resources */, 253 | 09BCCD0F1F5EEDB900A5E275 /* Main.storyboard in Resources */, 254 | ); 255 | runOnlyForDeploymentPostprocessing = 0; 256 | }; 257 | /* End PBXResourcesBuildPhase section */ 258 | 259 | /* Begin PBXShellScriptBuildPhase section */ 260 | 1EC8B1512F68112767202989 /* [CP] Copy Pods Resources */ = { 261 | isa = PBXShellScriptBuildPhase; 262 | buildActionMask = 2147483647; 263 | files = ( 264 | ); 265 | inputPaths = ( 266 | ); 267 | name = "[CP] Copy Pods Resources"; 268 | outputPaths = ( 269 | ); 270 | runOnlyForDeploymentPostprocessing = 0; 271 | shellPath = /bin/sh; 272 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CRIconView/Pods-CRIconView-resources.sh\"\n"; 273 | showEnvVarsInLog = 0; 274 | }; 275 | 2F1D67C8B3E8AE491C42BA6D /* [CP] Embed Pods Frameworks */ = { 276 | isa = PBXShellScriptBuildPhase; 277 | buildActionMask = 2147483647; 278 | files = ( 279 | ); 280 | inputPaths = ( 281 | ); 282 | name = "[CP] Embed Pods Frameworks"; 283 | outputPaths = ( 284 | ); 285 | runOnlyForDeploymentPostprocessing = 0; 286 | shellPath = /bin/sh; 287 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CRIconView/Pods-CRIconView-frameworks.sh\"\n"; 288 | showEnvVarsInLog = 0; 289 | }; 290 | 5FA1E05C1D4AADA4D356831E /* [CP] Check Pods Manifest.lock */ = { 291 | isa = PBXShellScriptBuildPhase; 292 | buildActionMask = 2147483647; 293 | files = ( 294 | ); 295 | inputPaths = ( 296 | ); 297 | name = "[CP] Check Pods Manifest.lock"; 298 | outputPaths = ( 299 | ); 300 | runOnlyForDeploymentPostprocessing = 0; 301 | shellPath = /bin/sh; 302 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 303 | showEnvVarsInLog = 0; 304 | }; 305 | /* End PBXShellScriptBuildPhase section */ 306 | 307 | /* Begin PBXSourcesBuildPhase section */ 308 | 09BCCCFD1F5EEDB900A5E275 /* Sources */ = { 309 | isa = PBXSourcesBuildPhase; 310 | buildActionMask = 2147483647; 311 | files = ( 312 | 09BCCD201F5EF02300A5E275 /* CRMaskImageView.m in Sources */, 313 | 0916CAAD1F6ECBBD00825CE6 /* ContourTestView.m in Sources */, 314 | 095B192A1F60D42100951060 /* CRShiningAnimationView.m in Sources */, 315 | 09BCCD0C1F5EEDB900A5E275 /* ViewController.m in Sources */, 316 | 095B19241F5F7BE900951060 /* CRMaskAnimationView.m in Sources */, 317 | 093996771F63C68B000566F5 /* TestLayerView.m in Sources */, 318 | 09BCCD091F5EEDB900A5E275 /* AppDelegate.m in Sources */, 319 | 09BCCD061F5EEDB900A5E275 /* main.m in Sources */, 320 | ); 321 | runOnlyForDeploymentPostprocessing = 0; 322 | }; 323 | /* End PBXSourcesBuildPhase section */ 324 | 325 | /* Begin PBXVariantGroup section */ 326 | 09BCCD0D1F5EEDB900A5E275 /* Main.storyboard */ = { 327 | isa = PBXVariantGroup; 328 | children = ( 329 | 09BCCD0E1F5EEDB900A5E275 /* Base */, 330 | ); 331 | name = Main.storyboard; 332 | sourceTree = ""; 333 | }; 334 | 09BCCD121F5EEDB900A5E275 /* LaunchScreen.storyboard */ = { 335 | isa = PBXVariantGroup; 336 | children = ( 337 | 09BCCD131F5EEDB900A5E275 /* Base */, 338 | ); 339 | name = LaunchScreen.storyboard; 340 | sourceTree = ""; 341 | }; 342 | /* End PBXVariantGroup section */ 343 | 344 | /* Begin XCBuildConfiguration section */ 345 | 09BCCD161F5EEDB900A5E275 /* Debug */ = { 346 | isa = XCBuildConfiguration; 347 | buildSettings = { 348 | ALWAYS_SEARCH_USER_PATHS = NO; 349 | CLANG_ANALYZER_NONNULL = YES; 350 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 351 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 352 | CLANG_CXX_LIBRARY = "libc++"; 353 | CLANG_ENABLE_MODULES = YES; 354 | CLANG_ENABLE_OBJC_ARC = YES; 355 | CLANG_WARN_BOOL_CONVERSION = YES; 356 | CLANG_WARN_CONSTANT_CONVERSION = YES; 357 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 358 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 359 | CLANG_WARN_EMPTY_BODY = YES; 360 | CLANG_WARN_ENUM_CONVERSION = YES; 361 | CLANG_WARN_INFINITE_RECURSION = YES; 362 | CLANG_WARN_INT_CONVERSION = YES; 363 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 364 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 365 | CLANG_WARN_UNREACHABLE_CODE = YES; 366 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 367 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 368 | COPY_PHASE_STRIP = NO; 369 | DEBUG_INFORMATION_FORMAT = dwarf; 370 | ENABLE_STRICT_OBJC_MSGSEND = YES; 371 | ENABLE_TESTABILITY = YES; 372 | GCC_C_LANGUAGE_STANDARD = gnu99; 373 | GCC_DYNAMIC_NO_PIC = NO; 374 | GCC_NO_COMMON_BLOCKS = YES; 375 | GCC_OPTIMIZATION_LEVEL = 0; 376 | GCC_PREPROCESSOR_DEFINITIONS = ( 377 | "DEBUG=1", 378 | "$(inherited)", 379 | ); 380 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 381 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 382 | GCC_WARN_UNDECLARED_SELECTOR = YES; 383 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 384 | GCC_WARN_UNUSED_FUNCTION = YES; 385 | GCC_WARN_UNUSED_VARIABLE = YES; 386 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 387 | MTL_ENABLE_DEBUG_INFO = YES; 388 | ONLY_ACTIVE_ARCH = YES; 389 | SDKROOT = iphoneos; 390 | TARGETED_DEVICE_FAMILY = "1,2"; 391 | }; 392 | name = Debug; 393 | }; 394 | 09BCCD171F5EEDB900A5E275 /* Release */ = { 395 | isa = XCBuildConfiguration; 396 | buildSettings = { 397 | ALWAYS_SEARCH_USER_PATHS = NO; 398 | CLANG_ANALYZER_NONNULL = YES; 399 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 400 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 401 | CLANG_CXX_LIBRARY = "libc++"; 402 | CLANG_ENABLE_MODULES = YES; 403 | CLANG_ENABLE_OBJC_ARC = YES; 404 | CLANG_WARN_BOOL_CONVERSION = YES; 405 | CLANG_WARN_CONSTANT_CONVERSION = YES; 406 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 407 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 408 | CLANG_WARN_EMPTY_BODY = YES; 409 | CLANG_WARN_ENUM_CONVERSION = YES; 410 | CLANG_WARN_INFINITE_RECURSION = YES; 411 | CLANG_WARN_INT_CONVERSION = YES; 412 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 413 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 414 | CLANG_WARN_UNREACHABLE_CODE = YES; 415 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 416 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 417 | COPY_PHASE_STRIP = NO; 418 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 419 | ENABLE_NS_ASSERTIONS = NO; 420 | ENABLE_STRICT_OBJC_MSGSEND = YES; 421 | GCC_C_LANGUAGE_STANDARD = gnu99; 422 | GCC_NO_COMMON_BLOCKS = YES; 423 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 424 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 425 | GCC_WARN_UNDECLARED_SELECTOR = YES; 426 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 427 | GCC_WARN_UNUSED_FUNCTION = YES; 428 | GCC_WARN_UNUSED_VARIABLE = YES; 429 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 430 | MTL_ENABLE_DEBUG_INFO = NO; 431 | SDKROOT = iphoneos; 432 | TARGETED_DEVICE_FAMILY = "1,2"; 433 | VALIDATE_PRODUCT = YES; 434 | }; 435 | name = Release; 436 | }; 437 | 09BCCD191F5EEDB900A5E275 /* Debug */ = { 438 | isa = XCBuildConfiguration; 439 | baseConfigurationReference = 41812DE40599631E1EEE7777 /* Pods-CRIconView.debug.xcconfig */; 440 | buildSettings = { 441 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 442 | DEVELOPMENT_TEAM = VT6HKJNGDV; 443 | FRAMEWORK_SEARCH_PATHS = ( 444 | "$(inherited)", 445 | "$(PROJECT_DIR)", 446 | ); 447 | GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp; 448 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 449 | GCC_PREFIX_HEADER = "$(SRCROOT)/CRIconView/PrefixHeader.pch"; 450 | INFOPLIST_FILE = CRIconView/Info.plist; 451 | IPHONEOS_DEPLOYMENT_TARGET = 6.0; 452 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 453 | LIBRARY_SEARCH_PATHS = ( 454 | "$(inherited)", 455 | "/opt/libjpeg-turbo/lib", 456 | "$(PROJECT_DIR)", 457 | ); 458 | PRODUCT_BUNDLE_IDENTIFIER = Bear.CRIconView; 459 | PRODUCT_NAME = "$(TARGET_NAME)"; 460 | }; 461 | name = Debug; 462 | }; 463 | 09BCCD1A1F5EEDB900A5E275 /* Release */ = { 464 | isa = XCBuildConfiguration; 465 | baseConfigurationReference = CC3D4A35B2A6A8C47AD7F715 /* Pods-CRIconView.release.xcconfig */; 466 | buildSettings = { 467 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 468 | DEVELOPMENT_TEAM = VT6HKJNGDV; 469 | FRAMEWORK_SEARCH_PATHS = ( 470 | "$(inherited)", 471 | "$(PROJECT_DIR)", 472 | ); 473 | GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp; 474 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 475 | GCC_PREFIX_HEADER = "$(SRCROOT)/CRIconView/PrefixHeader.pch"; 476 | INFOPLIST_FILE = CRIconView/Info.plist; 477 | IPHONEOS_DEPLOYMENT_TARGET = 6.0; 478 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 479 | LIBRARY_SEARCH_PATHS = ( 480 | "$(inherited)", 481 | "/opt/libjpeg-turbo/lib", 482 | "$(PROJECT_DIR)", 483 | ); 484 | PRODUCT_BUNDLE_IDENTIFIER = Bear.CRIconView; 485 | PRODUCT_NAME = "$(TARGET_NAME)"; 486 | }; 487 | name = Release; 488 | }; 489 | /* End XCBuildConfiguration section */ 490 | 491 | /* Begin XCConfigurationList section */ 492 | 09BCCCFC1F5EEDB800A5E275 /* Build configuration list for PBXProject "CRIconView" */ = { 493 | isa = XCConfigurationList; 494 | buildConfigurations = ( 495 | 09BCCD161F5EEDB900A5E275 /* Debug */, 496 | 09BCCD171F5EEDB900A5E275 /* Release */, 497 | ); 498 | defaultConfigurationIsVisible = 0; 499 | defaultConfigurationName = Release; 500 | }; 501 | 09BCCD181F5EEDB900A5E275 /* Build configuration list for PBXNativeTarget "CRIconView" */ = { 502 | isa = XCConfigurationList; 503 | buildConfigurations = ( 504 | 09BCCD191F5EEDB900A5E275 /* Debug */, 505 | 09BCCD1A1F5EEDB900A5E275 /* Release */, 506 | ); 507 | defaultConfigurationIsVisible = 0; 508 | defaultConfigurationName = Release; 509 | }; 510 | /* End XCConfigurationList section */ 511 | }; 512 | rootObject = 09BCCCF91F5EEDB800A5E275 /* Project object */; 513 | } 514 | -------------------------------------------------------------------------------- /CRIconView.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CRIconView.xcodeproj/xcuserdata/bear.xcuserdatad/xcschemes/CRIconView.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /CRIconView.xcodeproj/xcuserdata/bear.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CRIconView.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 09BCCD001F5EEDB900A5E275 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /CRIconView.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /CRIconView.xcworkspace/xcshareddata/CRIconView.xcscmblueprint: -------------------------------------------------------------------------------- 1 | { 2 | "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "8B629F2BD0F62A5745A6FF9258260085602BEFF1", 3 | "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { 4 | 5 | }, 6 | "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { 7 | "8AD2F10625C593DFE6679C6066D0C18376F77DFC" : 9223372036854775807, 8 | "8B629F2BD0F62A5745A6FF9258260085602BEFF1" : 9223372036854775807 9 | }, 10 | "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "C80AD1BD-D96F-412F-A219-5B2A5ACA097C", 11 | "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { 12 | "8AD2F10625C593DFE6679C6066D0C18376F77DFC" : "opencv_for_ios_book_samples\/", 13 | "8B629F2BD0F62A5745A6FF9258260085602BEFF1" : "CRIconView\/" 14 | }, 15 | "DVTSourceControlWorkspaceBlueprintNameKey" : "CRIconView", 16 | "DVTSourceControlWorkspaceBlueprintVersion" : 204, 17 | "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "CRIconView.xcworkspace", 18 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ 19 | { 20 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/BearRan\/opencv_for_ios_book_samples.git", 21 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 22 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "8AD2F10625C593DFE6679C6066D0C18376F77DFC" 23 | }, 24 | { 25 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/CRAnimation\/CRMaskImageView.git", 26 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 27 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "8B629F2BD0F62A5745A6FF9258260085602BEFF1" 28 | } 29 | ] 30 | } -------------------------------------------------------------------------------- /CRIconView/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/5. 6 | // Copyright © 2017年 Bear. 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 | -------------------------------------------------------------------------------- /CRIconView/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/5. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate () 12 | 13 | @end 14 | 15 | @implementation AppDelegate 16 | 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 19 | // Override point for customization after application launch. 20 | return YES; 21 | } 22 | 23 | 24 | - (void)applicationWillResignActive:(UIApplication *)application { 25 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 27 | } 28 | 29 | 30 | - (void)applicationDidEnterBackground:(UIApplication *)application { 31 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 33 | } 34 | 35 | 36 | - (void)applicationWillEnterForeground:(UIApplication *)application { 37 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 38 | } 39 | 40 | 41 | - (void)applicationDidBecomeActive:(UIApplication *)application { 42 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 43 | } 44 | 45 | 46 | - (void)applicationWillTerminate:(UIApplication *)application { 47 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 48 | } 49 | 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /CRIconView/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | } 88 | ], 89 | "info" : { 90 | "version" : 1, 91 | "author" : "xcode" 92 | } 93 | } -------------------------------------------------------------------------------- /CRIconView/Assets.xcassets/CRIcon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "logonew透明底.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /CRIconView/Assets.xcassets/CRIcon.imageset/logonew透明底.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRAnimation/CRMaskImageView/0666f8abf3351805750a4cb664299dc87b0484b1/CRIconView/Assets.xcassets/CRIcon.imageset/logonew透明底.png -------------------------------------------------------------------------------- /CRIconView/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /CRIconView/Assets.xcassets/homgBg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "f6f8fc3e198a21db591c54d18cb8a1402350c85b21588-ZUzi6B_fw658.jpeg", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /CRIconView/Assets.xcassets/homgBg.imageset/f6f8fc3e198a21db591c54d18cb8a1402350c85b21588-ZUzi6B_fw658.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRAnimation/CRMaskImageView/0666f8abf3351805750a4cb664299dc87b0484b1/CRIconView/Assets.xcassets/homgBg.imageset/f6f8fc3e198a21db591c54d18cb8a1402350c85b21588-ZUzi6B_fw658.jpeg -------------------------------------------------------------------------------- /CRIconView/Assets.xcassets/hours.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "hours@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /CRIconView/Assets.xcassets/hours.imageset/hours@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRAnimation/CRMaskImageView/0666f8abf3351805750a4cb664299dc87b0484b1/CRIconView/Assets.xcassets/hours.imageset/hours@2x.png -------------------------------------------------------------------------------- /CRIconView/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /CRIconView/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /CRIconView/CRMaskAnimationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // CRMaskAnimationView.h 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/6. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CRMaskImageView.h" 11 | 12 | @interface CRMaskAnimationView : UIView 13 | 14 | @property (assign, nonatomic) NSInteger maxLoopCount; 15 | @property (assign, nonatomic) CGFloat fadeOutAnimationDuring; 16 | @property (assign, nonatomic) CGFloat loopScaleAnimationDuring; 17 | @property (strong, nonatomic, readonly) CRMaskImageView *maskImageView; 18 | 19 | - (void)startLoopScaleAnimation; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /CRIconView/CRMaskAnimationView.m: -------------------------------------------------------------------------------- 1 | // 2 | // CRMaskAnimationView.m 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/6. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import "CRMaskAnimationView.h" 10 | #import 11 | #import 12 | #import 13 | 14 | static NSString *kAnimationKey_FadeOutGroup = @"kAnimationKey_FadeOutGroup"; 15 | static NSString *kAnimationKey_LoopScale = @"kAnimationKey_LoopScale"; 16 | 17 | @interface CRMaskAnimationView () 18 | { 19 | int _loopCount; 20 | 21 | CABasicAnimation *_fadeOutScaleAnimation; 22 | CABasicAnimation *_fadeOutOpacityAnimation; 23 | CAAnimationGroup *_fadeOutAnimationGroup; 24 | 25 | CAKeyframeAnimation *_loopScaleAnimation; 26 | } 27 | 28 | @property (strong, nonatomic) CRMaskImageView *maskImageView; 29 | 30 | @end 31 | 32 | @implementation CRMaskAnimationView 33 | 34 | - (instancetype)initWithFrame:(CGRect)frame 35 | { 36 | self = [super initWithFrame:frame]; 37 | 38 | if (self) { 39 | [self initPara]; 40 | [self createUI]; 41 | } 42 | 43 | return self; 44 | } 45 | 46 | - (void)initPara 47 | { 48 | self.backgroundColor = UIColorFromHEX(0x313340); 49 | _maxLoopCount = 2; 50 | _loopCount = 0; 51 | 52 | _fadeOutAnimationDuring = 1.3; 53 | _fadeOutOpacityAnimation = [CABasicAnimation animation]; 54 | 55 | _loopScaleAnimationDuring = 3.0; 56 | _loopScaleAnimation = [CAKeyframeAnimation animation]; 57 | } 58 | 59 | - (void)createUI 60 | { 61 | _maskImageView = [[CRMaskImageView alloc] initWithFrame:CGRectMake(0, 0, 350, 350)]; 62 | [self addSubview:_maskImageView]; 63 | [_maskImageView BearSetCenterToParentViewWithAxis:kAXIS_X_Y]; 64 | 65 | [self generateShadow]; 66 | [self changeGradientLayerColorAnim:NO]; 67 | } 68 | 69 | - (void)generateShadow 70 | { 71 | _maskImageView.layer.shadowOpacity = 1; 72 | _maskImageView.layer.shadowColor = [UIColorFromHEX(0xe7f0fd) colorWithAlphaComponent:0.4].CGColor; 73 | _maskImageView.layer.shadowOffset = CGSizeMake(2, 2); 74 | _maskImageView.layer.shadowRadius = 3; 75 | } 76 | 77 | #pragma mark - Animation 78 | - (void)fadeOutAnimation 79 | { 80 | _fadeOutScaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 81 | _fadeOutScaleAnimation.fromValue = @1.0; 82 | _fadeOutScaleAnimation.toValue = @9.0; 83 | 84 | _fadeOutOpacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 85 | _fadeOutOpacityAnimation.fromValue = @1.0; 86 | _fadeOutOpacityAnimation.toValue = @0.0; 87 | 88 | _fadeOutAnimationGroup = [CAAnimationGroup animation]; 89 | _fadeOutAnimationGroup.animations = [NSArray arrayWithObjects:_fadeOutScaleAnimation, _fadeOutOpacityAnimation, nil]; 90 | _fadeOutAnimationGroup.duration = _fadeOutAnimationDuring; 91 | _fadeOutAnimationGroup.removedOnCompletion = NO; 92 | _fadeOutAnimationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 93 | _fadeOutAnimationGroup.fillMode = kCAFillModeForwards; 94 | [self.layer addAnimation:_fadeOutAnimationGroup forKey:kAnimationKey_FadeOutGroup]; 95 | } 96 | 97 | - (void)startLoopScaleAnimation 98 | { 99 | CGFloat deltaScale = 0.05; 100 | 101 | _loopScaleAnimation.keyPath = @"transform.scale"; 102 | _loopScaleAnimation.values = @[@1.0, @(1.0 - deltaScale), @(1.0 + deltaScale), @1.0]; 103 | _loopScaleAnimation.delegate = self; 104 | _loopScaleAnimation.removedOnCompletion = NO; 105 | _loopScaleAnimation.fillMode = kCAFillModeForwards; 106 | _loopScaleAnimation.duration = _loopScaleAnimationDuring; 107 | _loopScaleAnimation.beginTime = CACurrentMediaTime() + 0; 108 | _loopScaleAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 109 | [_maskImageView.layer addAnimation:_loopScaleAnimation forKey:kAnimationKey_LoopScale]; 110 | } 111 | 112 | - (void)changeGradientLayerColorAnim:(BOOL)animation 113 | { 114 | if (animation) { 115 | [CATransaction begin]; 116 | [CATransaction setAnimationDuration:_loopScaleAnimationDuring]; 117 | } 118 | [_maskImageView setGradientLayerFromColor:UIColorFromHEX(0xaccbee) 119 | ToColor:UIColorFromHEX(0xe7f0fd) 120 | axis:CRLAYOUT_AXIS_Vertical]; 121 | 122 | //[_maskImageView setGradientLayerFromColor:[BearConstants randomColor] 123 | // ToColor:[BearConstants randomColor] 124 | // axis:CRLAYOUT_AXIS_Vertical]; 125 | if (animation) { 126 | [CATransaction commit]; 127 | } 128 | } 129 | 130 | #pragma mark - CAAnimationDelegate 131 | - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag 132 | { 133 | 134 | if ([anim isEqual:[_maskImageView.layer animationForKey:kAnimationKey_FadeOutGroup]]) { 135 | [self removeFromSuperview]; 136 | } 137 | else if ([anim isEqual:[_maskImageView.layer animationForKey:kAnimationKey_LoopScale]]) { 138 | 139 | _loopCount++; 140 | 141 | if (_loopCount < _maxLoopCount) { 142 | [self startLoopScaleAnimation]; 143 | [self changeGradientLayerColorAnim:YES]; 144 | }else{ 145 | [_maskImageView.layer removeAnimationForKey:kAnimationKey_LoopScale]; 146 | [self fadeOutAnimation]; 147 | } 148 | 149 | } 150 | } 151 | 152 | @end 153 | -------------------------------------------------------------------------------- /CRIconView/CRMaskImageView.h: -------------------------------------------------------------------------------- 1 | // 2 | // CRMaskImageView.h 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/5. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSInteger, CRLAYOUT_AXIS) { 12 | CRLAYOUT_AXIS_Horizontal, 13 | CRLAYOUT_AXIS_Vertical, 14 | }; 15 | 16 | @interface CRMaskImageView : UIImageView 17 | 18 | // 是否依据透明程度裁剪layer 19 | @property (assign, nonatomic) BOOL needCutterMask; 20 | 21 | // 渐变扩展size 22 | @property (assign, nonatomic) CGSize gradientSpreadSize; 23 | 24 | // 依据透明程度裁剪的gradientLayer 25 | @property (strong, nonatomic, readonly) CAGradientLayer *maskGradientLayer; 26 | 27 | - (void)setGradientLayerFromColor:(UIColor *)fromColor 28 | ToColor:(UIColor *)toColor 29 | axis:(CRLAYOUT_AXIS)axis; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /CRIconView/CRMaskImageView.m: -------------------------------------------------------------------------------- 1 | // 2 | // CRMaskImageView.m 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/5. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import "CRMaskImageView.h" 10 | 11 | @interface CRMaskImageView () 12 | 13 | @property (strong, nonatomic) CALayer *maskLayer; 14 | @property (strong, nonatomic) CAGradientLayer *maskGradientLayer; 15 | 16 | @end 17 | 18 | @implementation CRMaskImageView 19 | 20 | - (instancetype)initWithFrame:(CGRect)frame 21 | { 22 | self = [super initWithFrame:frame]; 23 | 24 | if (self) { 25 | self.gradientSpreadSize = CGSizeZero; 26 | self.needCutterMask = NO; 27 | [self createUI]; 28 | } 29 | 30 | return self; 31 | } 32 | 33 | - (void)createUI 34 | { 35 | 36 | } 37 | 38 | #pragma mark - Rewrite 39 | - (void)setImage:(UIImage *)image 40 | { 41 | [super setImage:image]; 42 | 43 | if (self.image) { 44 | [self changeMaskImage:self.image]; 45 | } 46 | } 47 | 48 | - (void)setHighlightedImage:(UIImage *)highlightedImage 49 | { 50 | [super setHighlightedImage:highlightedImage]; 51 | 52 | if (self.highlightedImage) { 53 | [self changeMaskImage:self.highlightedImage]; 54 | } 55 | } 56 | 57 | - (void)setHighlighted:(BOOL)highlighted 58 | { 59 | [super setHighlighted:highlighted]; 60 | 61 | if (highlighted) { 62 | if (self.highlightedImage) { 63 | [self changeMaskImage:self.highlightedImage]; 64 | } 65 | }else{ 66 | if (self.image) { 67 | [self changeMaskImage:self.image]; 68 | } 69 | } 70 | } 71 | 72 | - (void)sizeToFit 73 | { 74 | [super sizeToFit]; 75 | 76 | self.maskLayer.frame = self.bounds; 77 | self.maskGradientLayer.frame = self.bounds; 78 | } 79 | 80 | #pragma mark - Method 81 | - (void)changeMaskImage:(UIImage *)image 82 | { 83 | self.maskLayer.contents = (__bridge id)image.CGImage; 84 | self.needCutterMask = self.needCutterMask; 85 | [self spreadMaskGradientLayerFrameWithSpreadSize:self.gradientSpreadSize]; 86 | } 87 | 88 | - (void)spreadMaskGradientLayerFrameWithSpreadSize:(CGSize)spreadSize 89 | { 90 | self.maskLayer.frame = CGRectMake(self.maskLayer.frame.origin.x + spreadSize.width, 91 | self.maskLayer.frame.origin.y + spreadSize.height, 92 | self.maskLayer.frame.size.width, 93 | self.maskLayer.frame.size.height); 94 | self.maskGradientLayer.mask = self.maskLayer; 95 | 96 | _maskGradientLayer.frame = CGRectMake(_maskGradientLayer.frame.origin.x - spreadSize.width, 97 | _maskGradientLayer.frame.origin.y - spreadSize.height, 98 | _maskGradientLayer.frame.size.width + 2 * spreadSize.width, 99 | _maskGradientLayer.frame.size.height + 2 * spreadSize.height); 100 | 101 | } 102 | 103 | #pragma mark - GradientLayer 104 | - (void)setGradientLayerFromColor:(UIColor *)fromColor 105 | ToColor:(UIColor *)toColor 106 | axis:(CRLAYOUT_AXIS)axis 107 | { 108 | if (!fromColor || !toColor) { 109 | return; 110 | } 111 | 112 | self.maskGradientLayer.colors = @[(__bridge id)fromColor.CGColor, 113 | (__bridge id)toColor.CGColor 114 | ]; 115 | //从上往下的渐变 116 | //(I.e. [0,0] is the bottom-left corner of the layer, [1,1] is the top-right corner.) 117 | switch (axis) { 118 | case CRLAYOUT_AXIS_Vertical: 119 | { 120 | self.maskGradientLayer.startPoint = CGPointMake(0, 0); 121 | self.maskGradientLayer.endPoint = CGPointMake(0, 1); 122 | } 123 | break; 124 | 125 | case CRLAYOUT_AXIS_Horizontal: 126 | { 127 | self.maskGradientLayer.startPoint = CGPointMake(0, 0); 128 | self.maskGradientLayer.endPoint = CGPointMake(1, 0); 129 | } 130 | break; 131 | 132 | default: 133 | break; 134 | } 135 | } 136 | 137 | #pragma mark - Setter & Getter 138 | - (CALayer *)maskLayer 139 | { 140 | if (!_maskLayer) { 141 | _maskLayer = [CALayer layer]; 142 | _maskLayer.frame = self.bounds; 143 | } 144 | 145 | return _maskLayer; 146 | } 147 | 148 | - (CAGradientLayer *)maskGradientLayer 149 | { 150 | if (!_maskGradientLayer) { 151 | _maskGradientLayer = [CAGradientLayer layer]; 152 | _maskGradientLayer.frame = self.bounds; 153 | [self.layer addSublayer:_maskGradientLayer]; 154 | } 155 | 156 | return _maskGradientLayer; 157 | } 158 | 159 | - (void)setNeedCutterMask:(BOOL)needCutterMask 160 | { 161 | _needCutterMask = needCutterMask; 162 | 163 | if (_needCutterMask) { 164 | self.layer.mask = self.maskLayer; 165 | }else{ 166 | self.layer.mask = nil; 167 | } 168 | } 169 | 170 | 171 | @end 172 | -------------------------------------------------------------------------------- /CRIconView/CRShiningAnimationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // CRShiningAnimationView.h 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/7. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CRMaskImageView.h" 11 | 12 | @interface CRShiningAnimationView : UIView 13 | 14 | @property (strong, nonatomic, readonly) CRMaskImageView *maskImageView; 15 | 16 | - (void)startShining; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /CRIconView/CRShiningAnimationView.m: -------------------------------------------------------------------------------- 1 | // 2 | // CRShiningAnimationView.m 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/7. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import "CRShiningAnimationView.h" 10 | #import 11 | #import 12 | #import 13 | 14 | @interface CRShiningAnimationView () 15 | 16 | @property (strong, nonatomic) CRMaskImageView *maskImageView; 17 | @property (strong, nonatomic) CAGradientLayer *maskGradientLayer; 18 | @property (strong, nonatomic) CABasicAnimation *shiningAnimation; 19 | 20 | @end 21 | 22 | @implementation CRShiningAnimationView 23 | 24 | - (instancetype)initWithFrame:(CGRect)frame 25 | { 26 | self = [super initWithFrame:frame]; 27 | 28 | if (self) { 29 | [self createUI]; 30 | } 31 | 32 | return self; 33 | } 34 | 35 | - (void)createUI 36 | { 37 | self.backgroundColor = UIColorFromHEX(0x313340); 38 | 39 | _maskImageView = [[CRMaskImageView alloc] initWithFrame:CGRectMake(0, 0, 350, 350)]; 40 | _maskImageView.gradientSpreadSize = CGSizeMake(70, 0); 41 | _maskGradientLayer = _maskImageView.maskGradientLayer; 42 | [self addSubview:_maskImageView]; 43 | [_maskImageView BearSetCenterToParentViewWithAxis:kAXIS_X_Y]; 44 | 45 | [self generateGradientLayer]; 46 | } 47 | 48 | - (void)generateGradientLayer 49 | { 50 | _maskGradientLayer.colors = @[(__bridge id)[UIColor blackColor].CGColor, 51 | (__bridge id)[UIColor whiteColor].CGColor, 52 | (__bridge id)[UIColor blackColor].CGColor]; 53 | _maskGradientLayer.locations = @[@0.0, @0.0, @0.25]; 54 | _maskGradientLayer.startPoint = CGPointMake(0, 0.5); 55 | _maskGradientLayer.endPoint = CGPointMake(1, 0.5); 56 | } 57 | 58 | - (void)startShining 59 | { 60 | [_maskGradientLayer addAnimation:self.shiningAnimation forKey:nil]; 61 | } 62 | 63 | #pragma mark - Setter & Getter 64 | - (CABasicAnimation *)shiningAnimation 65 | { 66 | if (!_shiningAnimation) { 67 | _shiningAnimation = [CABasicAnimation animationWithKeyPath:@"locations"]; 68 | _shiningAnimation.fromValue = @[@0.0, @0.0, @0.25]; 69 | _shiningAnimation.toValue = @[@0.75, @1.0, @1.0]; 70 | _shiningAnimation.removedOnCompletion = NO; 71 | _shiningAnimation.fillMode = kCAFillModeForwards; 72 | _shiningAnimation.duration = 2.5; 73 | _shiningAnimation.repeatCount = MAXFLOAT; 74 | } 75 | 76 | return _shiningAnimation; 77 | } 78 | 79 | @end 80 | -------------------------------------------------------------------------------- /CRIconView/ContourTestView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ContourTestView.h 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/17. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ContourTestView : UIView 12 | { 13 | // cv::Mat cvImage; 14 | // cv::vector> contours; 15 | // cv::vector hierarchy; 16 | } 17 | @end 18 | -------------------------------------------------------------------------------- /CRIconView/ContourTestView.m: -------------------------------------------------------------------------------- 1 | // 2 | // ContourTestView.m 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/17. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import "ContourTestView.h" 10 | #import "opencv2/highgui/ios.h" 11 | 12 | @interface ContourTestView () 13 | { 14 | UIImageView *imageView; 15 | } 16 | 17 | @end 18 | 19 | @implementation ContourTestView 20 | 21 | - (instancetype)initWithFrame:(CGRect)frame 22 | { 23 | self = [super initWithFrame:frame]; 24 | 25 | if (self) { 26 | [self createUI]; 27 | // [self test]; 28 | } 29 | 30 | return self; 31 | } 32 | 33 | - (void)createUI 34 | { 35 | imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)]; 36 | [self addSubview:imageView]; 37 | } 38 | 39 | //- (void)test 40 | //{ 41 | // UIImage* image = [UIImage imageNamed:@"CRIcon"]; 42 | // UIImageToMat(image, cvImage); 43 | // 44 | // if (!cvImage.empty()) { 45 | // cv::Mat gray; 46 | // cv::cvtColor(cvImage, gray, CV_RGBA2GRAY); 47 | // cv::GaussianBlur(gray, gray, 48 | // cv::Size(5, 5), 1.2, 1.2); 49 | // cv::Mat edges; 50 | // cv::Canny(gray, edges, 0, 100); 51 | // // Fill image with white color 52 | // cvImage.setTo(cv::Scalar::all(255)); 53 | // // Change color on edges 54 | // cvImage.setTo(cv::Scalar(0, 128, 255, 255), edges); 55 | // // Convert cv::Mat to UIImage* and show the resulting image 56 | // imageView.image = MatToUIImage(cvImage); 57 | // 58 | // cv::findContours(cvImage, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(0,0)); 59 | // 60 | // 61 | // 62 | // //[self drawPathArray:pathArray]; 63 | // } 64 | //} 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /CRIconView/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /CRIconView/PrefixHeader.pch: -------------------------------------------------------------------------------- 1 | // 2 | // PrefixHeader.pch 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/17. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #ifdef __cplusplus 10 | #import 11 | #endif 12 | 13 | #import 14 | 15 | #ifndef __IPHONE_5_0 16 | #warning "This project uses features only available in iOS SDK 5.0 and later." 17 | #endif 18 | 19 | #ifdef __OBJC__ 20 | #import 21 | #import 22 | #endif 23 | 24 | #import 25 | #import 26 | -------------------------------------------------------------------------------- /CRIconView/TestLayerView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TestLayerView.h 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/9. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TestLayerView : UIView 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /CRIconView/TestLayerView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TestLayerView.m 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/9. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import "TestLayerView.h" 10 | 11 | @interface TestLayerView () 12 | { 13 | CAShapeLayer *_layer; 14 | } 15 | 16 | @end 17 | 18 | @implementation TestLayerView 19 | 20 | - (instancetype)initWithFrame:(CGRect)frame 21 | { 22 | self = [super initWithFrame:frame]; 23 | 24 | if (self) { 25 | self.backgroundColor = [UIColor whiteColor]; 26 | [self createLayer]; 27 | } 28 | 29 | return self; 30 | } 31 | 32 | - (void)createLayer 33 | { 34 | UIBezierPath *bezierPath1; 35 | UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 300, 300)]; 36 | [bezierPath removeAllPoints]; 37 | [bezierPath moveToPoint:CGPointMake(0, 0)]; 38 | [bezierPath addLineToPoint:CGPointMake(300, 0)]; 39 | [bezierPath addLineToPoint:CGPointMake(300, 100)]; 40 | [bezierPath addLineToPoint:CGPointMake(200, 400)]; 41 | // [bezierPath addLineToPoint:CGPointMake(0, 0)]; 42 | // [bezierPath closePath]; 43 | 44 | _layer = [CAShapeLayer layer]; 45 | _layer.masksToBounds = YES; 46 | _layer.path = bezierPath.CGPath; 47 | _layer.fillColor = [[UIColor clearColor] colorWithAlphaComponent:0.0].CGColor; 48 | _layer.lineWidth = 0.5; 49 | _layer.strokeColor = [UIColor blackColor].CGColor; 50 | 51 | _layer.shadowPath = bezierPath.CGPath; 52 | _layer.shadowColor = [UIColor brownColor].CGColor; 53 | _layer.shadowOpacity = 1; 54 | _layer.shadowRadius = 5; 55 | _layer.shadowOffset = CGSizeMake(0, 0); 56 | 57 | _layer.frame = CGRectMake(50, 100, 300, 400); 58 | // _layer.backgroundColor = [UIColor orangeColor].CGColor; 59 | [self.layer addSublayer:_layer]; 60 | 61 | CAShapeLayer *maskLayer = [CAShapeLayer layer]; 62 | maskLayer.path = bezierPath.CGPath; 63 | // maskLayer. 64 | _layer.mask = maskLayer; 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /CRIconView/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/5. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /CRIconView/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/5. 6 | // Copyright © 2017年 Bear. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | #import "CRMaskAnimationView.h" 11 | #import "CRShiningAnimationView.h" 12 | #import "TestLayerView.h" 13 | #import 14 | #import 15 | 16 | @interface ViewController () 17 | { 18 | CRMaskAnimationView *_maskAnimationView; 19 | CRShiningAnimationView *_shiningAnimationView; 20 | } 21 | 22 | @end 23 | 24 | @implementation ViewController 25 | 26 | - (void)viewDidLoad { 27 | [super viewDidLoad]; 28 | 29 | self.view.backgroundColor = [UIColor whiteColor]; 30 | 31 | UIImageView *bgImageView = [[UIImageView alloc] initWithFrame:self.view.bounds]; 32 | bgImageView.image = [UIImage imageNamed:@"homgBg"]; 33 | [self.view addSubview:bgImageView]; 34 | 35 | //[self createMaskAnimationView]; 36 | [self createShiningAnimationView]; 37 | 38 | // [self createTestLayerView]; 39 | } 40 | 41 | - (void)createMaskAnimationView 42 | { 43 | _maskAnimationView = [[CRMaskAnimationView alloc] initWithFrame:self.view.bounds]; 44 | _maskAnimationView.maskImageView.image = [UIImage imageNamed:@"CRIcon"]; 45 | [self.view addSubview:_maskAnimationView]; 46 | [_maskAnimationView startLoopScaleAnimation]; 47 | } 48 | 49 | - (void)createShiningAnimationView 50 | { 51 | _shiningAnimationView = [[CRShiningAnimationView alloc] initWithFrame:self.view.bounds]; 52 | _shiningAnimationView.maskImageView.image = [[UIImage imageNamed:@"CRIcon"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 53 | _shiningAnimationView.maskImageView.tintColor = [UIColor brownColor]; 54 | [self.view addSubview:_shiningAnimationView]; 55 | 56 | [_shiningAnimationView startShining]; 57 | } 58 | 59 | - (void)createTestLayerView 60 | { 61 | TestLayerView *testLayerView = [[TestLayerView alloc] initWithFrame:self.view.bounds]; 62 | [self.view addSubview:testLayerView]; 63 | } 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /CRIconView/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CRIconView 4 | // 5 | // Created by Bear on 2017/9/5. 6 | // Copyright © 2017年 Bear. 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 | -------------------------------------------------------------------------------- /Images/CRIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRAnimation/CRMaskImageView/0666f8abf3351805750a4cb664299dc87b0484b1/Images/CRIcon.png -------------------------------------------------------------------------------- /Images/logonew.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRAnimation/CRMaskImageView/0666f8abf3351805750a4cb664299dc87b0484b1/Images/logonew.sketch -------------------------------------------------------------------------------- /Images/logonew渐变调整完成.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRAnimation/CRMaskImageView/0666f8abf3351805750a4cb664299dc87b0484b1/Images/logonew渐变调整完成.sketch -------------------------------------------------------------------------------- /Images/logonew透明底.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRAnimation/CRMaskImageView/0666f8abf3351805750a4cb664299dc87b0484b1/Images/logonew透明底.png -------------------------------------------------------------------------------- /Images/logonew透明底.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRAnimation/CRMaskImageView/0666f8abf3351805750a4cb664299dc87b0484b1/Images/logonew透明底.sketch -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'CRIconView' do 5 | 6 | pod 'BearSkill', :git => 'https://github.com/BearRan/BearSkill.git', :commit => 'c05378a' 7 | # pod 'SVGKit', :git => 'https://github.com/SVGKit/SVGKit.git', :branch => '2.x' 8 | end 9 | -------------------------------------------------------------------------------- /Pods/BearSkill/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016 Bear <648070256@qq.com> 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/AttributeString/NSMutableAttributedString+BearSet.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableAttributedString+BearSet.h 3 | // Pods 4 | // 5 | // Created by apple on 16/5/16. 6 | // 7 | // 8 | 9 | 10 | // 11 | // 富文本设置 12 | // 适用于 UILabel, UITextField, UITextView 13 | // 适用于所有的AttributeString 14 | // 15 | 16 | #import 17 | 18 | @interface NSMutableAttributedString (BearSet) 19 | 20 | // 判断单个字符是否符合某一种正则 21 | - (BOOL)judgeCharacter_regex:(NSString *)regex withStr:(NSString *)str; 22 | 23 | // 对符合正则的字符串中的某些字符进行富文本设置 24 | - (void)setAttributeCharacter_regex:(NSString *)regex font:(UIFont *)font color:(UIColor *)color; 25 | 26 | // 对指定的字符串进行富文本设置 27 | - (void)setAttributeString_specifyStr:(NSString *)specifyStr font:(UIFont *)font color:(UIColor *)color; 28 | 29 | // 设置行间距 30 | - (void)setLineSpacing:(CGFloat)spacing; 31 | 32 | // 设置删除线 33 | - (void)setDeleteLine; 34 | - (void)setDeleteLineWithLineColor:(UIColor *)lineColor; 35 | - (void)setDeleteLineWithRange:(NSRange)range lineColor:(UIColor *)lineColor; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/AttributeString/NSMutableAttributedString+BearSet.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableAttributedString+BearSet.m 3 | // Pods 4 | // 5 | // Created by apple on 16/5/16. 6 | // 7 | // 8 | 9 | #import "NSMutableAttributedString+BearSet.h" 10 | 11 | @implementation NSMutableAttributedString (BearSet) 12 | 13 | // 判断单个字符是否符合某一种正则 14 | // 演示数据:regex = @"[0-9]|[.]|[+]|[-]"; 15 | - (BOOL)judgeCharacter_regex:(NSString *)regex withStr:(NSString *)str 16 | { 17 | NSPredicate *strPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 18 | if ([strPredicate evaluateWithObject:str]) { 19 | return YES; 20 | } 21 | 22 | return NO; 23 | } 24 | 25 | // 对符合正则的字符串中的某些字符进行富文本设置 26 | - (void)setAttributeCharacter_regex:(NSString *)regex font:(UIFont *)font color:(UIColor *)color 27 | { 28 | NSString *string = self.string; 29 | 30 | for (int i = 0; i < [string length]; i++) { 31 | NSRange tempRange = NSMakeRange(i, 1); 32 | NSString *tempStr = [string substringWithRange:tempRange]; 33 | if ([self judgeCharacter_regex:regex withStr:tempStr]) { 34 | 35 | if (font) { 36 | [self addAttribute:NSFontAttributeName value:font range:tempRange]; 37 | } 38 | 39 | if (color) { 40 | [self addAttribute:NSForegroundColorAttributeName value:color range:tempRange]; 41 | } 42 | 43 | } 44 | } 45 | } 46 | 47 | // 对指定的字符串进行富文本设置 48 | - (void)setAttributeString_specifyStr:(NSString *)specifyStr font:(UIFont *)font color:(UIColor *)color 49 | { 50 | NSString *string = self.string; 51 | 52 | if ([string rangeOfString:specifyStr].location != NSNotFound) { 53 | 54 | NSRange tempRange = [string rangeOfString:specifyStr]; 55 | 56 | if (font) { 57 | [self addAttribute:NSFontAttributeName value:font range:tempRange]; 58 | } 59 | 60 | if (color) { 61 | [self addAttribute:NSForegroundColorAttributeName value:color range:tempRange]; 62 | } 63 | 64 | } 65 | } 66 | 67 | // 设置行间距 68 | - (void)setLineSpacing:(CGFloat)spacing 69 | { 70 | NSString *labelText = self.string; 71 | 72 | NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 73 | [paragraphStyle setLineSpacing:spacing];//调整行间距 74 | 75 | [self addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])]; 76 | } 77 | 78 | // 设置删除线 79 | - (void)setDeleteLine 80 | { 81 | NSString *string = self.string; 82 | 83 | [self setDeleteLineWithRange:NSMakeRange(0, [string length]) lineColor:[UIColor grayColor]]; 84 | } 85 | 86 | - (void)setDeleteLineWithLineColor:(UIColor *)lineColor 87 | { 88 | NSString *string = self.string; 89 | 90 | [self setDeleteLineWithRange:NSMakeRange(0, [string length]) lineColor:lineColor]; 91 | } 92 | 93 | - (void)setDeleteLineWithRange:(NSRange)range lineColor:(UIColor *)lineColor 94 | { 95 | [self addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlinePatternSolid | NSUnderlineStyleSingle) range:range]; 96 | [self addAttribute:NSStrikethroughColorAttributeName value:lineColor range:range]; 97 | } 98 | 99 | @end 100 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/BearDefines/BearDefines.h: -------------------------------------------------------------------------------- 1 | // 2 | // BearDefines.h 3 | // Pods 4 | // 5 | // Created by apple on 2017/3/15. 6 | // 7 | // 8 | 9 | #ifndef BearDefines_h 10 | #define BearDefines_h 11 | 12 | /** 13 | * 判断系统版本 14 | * 15 | * 16 | */ 17 | #define SystemVersion [[[UIDevice currentDevice] systemVersion] floatValue] 18 | 19 | #define iOSVersion [[[UIDevice currentDevice] systemVersion] floatValue] 20 | #define over_iOS6 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0) 21 | #define over_iOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) 22 | #define over_iOS8 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) 23 | #define over_iOS9 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) 24 | #define over_iOS10 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) 25 | 26 | 27 | #define KeyWindow [[UIApplication sharedApplication] keyWindow] 28 | 29 | /** 30 | * RGB 31 | */ 32 | 33 | #define RGB(r, g, b) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:1.0f] 34 | #define RGBAlpha(r, g, b, alpha) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:alpha] 35 | #define UIColorFromHEX(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] 36 | 37 | /** 38 | * UserDefaults 39 | * 40 | * UDGET 获取UserDefaults数据 41 | * UDGET_HARD 获取UserDefaults原始数据 42 | * USSET 设置UserDefaults数据 43 | * UDDELETE 删除UserDefaults数据 44 | */ 45 | #define UDGET(key) [[NSUserDefaults standardUserDefaults] objectForKey:key]? [[NSUserDefaults standardUserDefaults] objectForKey:key] : @"" 46 | #define UDGET_HARD(key) [[NSUserDefaults standardUserDefaults] objectForKey:key] 47 | #define UDSET(value, key) [[NSUserDefaults standardUserDefaults] setObject:value forKey:key] 48 | #define UDDELETE(key) [[NSUserDefaults standardUserDefaults] removeObjectForKey:key]; 49 | #define UDSYNCHRONIZE [[NSUserDefaults standardUserDefaults] synchronize] 50 | 51 | // AppDelegate 52 | #define MY_APP_Delegate (AppDelegate *)[[UIApplication sharedApplication] delegate] 53 | 54 | // 屏幕宽高 55 | #define WIDTH ([UIScreen mainScreen].bounds.size.width) 56 | #define HEIGHT ([UIScreen mainScreen].bounds.size.height) 57 | #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width) 58 | #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height) 59 | 60 | /** 61 | * 屏幕尺寸 62 | */ 63 | 64 | // 6p (物理点) 65 | #define WIDTH6P 414.0 66 | #define HEIGHT6P 736.0 67 | 68 | // 6p_N (像素点) 69 | #define NWIDTH6P 1242.0 70 | #define NHEIGHT6P 2208.0 71 | 72 | 73 | // 6 74 | #define WIDTH6 375.0 75 | #define HEIGHT6 667.0 76 | 77 | // 6_N 78 | #define NWIDTH6 750.0 79 | #define NHEIGHT6 1334.0 80 | 81 | 82 | // 5 | 5c | 5s 83 | #define WIDTH5 320.0 84 | #define HEIGHT5 568.0 85 | 86 | // 5 | 5c | 5s _N 87 | #define NWIDTH5 640.0 88 | #define NHEIGHT5 1136.0 89 | 90 | 91 | // 4|4s 92 | #define WIDTH4 320.0 93 | #define HEIGHT4 480.0 94 | 95 | // 4|4s _N 96 | #define NWIDTH4 640.0 97 | #define NHEIGHT4 960.0 98 | 99 | 100 | // 适配对应 高度 < 5高度时,高度 = 5高度 101 | #define LayOutHeight ((HEIGHT < HEIGHT5) ? HEIGHT5 : HEIGHT) 102 | 103 | // 物理点 为单位 104 | #define XX_4(value) (1.0 * (value) * WIDTH / WIDTH4) 105 | #define XX_5(value) (1.0 * (value) * WIDTH / WIDTH5) 106 | #define XX_6(value) (1.0 * (value) * WIDTH / WIDTH6) 107 | #define XX_6P(value) (1.0 * (value) * WIDTH / WIDTH6P) 108 | 109 | #define YY_4(value) (1.0 * (value) * LayOutHeight / HEIGHT4) 110 | #define YY_5(value) (1.0 * (value) * LayOutHeight / HEIGHT5) 111 | #define YY_6(value) (1.0 * (value) * LayOutHeight / HEIGHT6) 112 | #define YY_6P(value) (1.0 * (value) * LayOutHeight / HEIGHT6P) 113 | 114 | 115 | // ceil天花板 物理点 为单位 116 | #define XXC_4(value) ceil(XX_4(value)) 117 | #define XXC_5(value) ceil(XX_5(value)) 118 | #define XXC_6(value) ceil(XX_6(value)) 119 | #define XXC_6P(value) ceil(XX_6P(value)) 120 | 121 | #define YYC_4(value) ceil(YY_4(value)) 122 | #define YYC_5(value) ceil(YY_5(value)) 123 | #define YYC_6(value) ceil(YY_6(value)) 124 | #define YYC_6P(value) ceil(YY_6P(value)) 125 | 126 | 127 | // 像素点 为单位 128 | #define XX_4N(value) (1.0 * (value) * WIDTH / NWIDTH4) 129 | #define XX_5N(value) (1.0 * (value) * WIDTH / NWIDTH5) 130 | #define XX_6N(value) (1.0 * (value) * WIDTH / NWIDTH6) 131 | #define XX_6PN(value) (1.0 * (value) * WIDTH / NWIDTH6P) 132 | 133 | #define YY_4N(value) (1.0 * (value) * LayOutHeight / NHEIGHT4) 134 | #define YY_5N(value) (1.0 * (value) * LayOutHeight / NHEIGHT5) 135 | #define YY_6N(value) (1.0 * (value) * LayOutHeight / NHEIGHT6) 136 | #define YY_6PN(value) (1.0 * (value) * LayOutHeight / NHEIGHT6P) 137 | 138 | 139 | // ceil天花板 像素点 为单位 140 | #define XXC_4N(value) ceil(XX_4N(value)) 141 | #define XXC_5N(value) ceil(XX_5N(value)) 142 | #define XXC_6N(value) ceil(XX_6N(value)) 143 | #define XXC_6PN(value) ceil(XX_6PN(value)) 144 | 145 | #define YYC_4N(value) ceil(YY_4N(value)) 146 | #define YYC_5N(value) ceil(YY_5N(value)) 147 | #define YYC_6N(value) ceil(YY_6N(value)) 148 | #define YYC_6PN(value) ceil(YY_6PN(value)) 149 | 150 | 151 | // Scale Based on Width 152 | #define WidthBasedScale(value) floor(XX_6(value)) 153 | 154 | // tabbar高度 155 | #define TABBAR_HEIGHT self.tabBarController.tabBar.frame.size.height 156 | 157 | // 状态栏高度 158 | #define STATUS_HEIGHT [[UIApplication sharedApplication] statusBarFrame].size.height 159 | 160 | // Navigationbar高度 161 | #define NAVIGATIONBAR_HEIGHT self.navigationController.navigationBar.frame.size.height 162 | 163 | // Navigationbar高度 164 | #define NAV_44 44 165 | 166 | // Nav+Status 167 | #define NAV_STA (NAVIGATIONBAR_HEIGHT + STATUS_HEIGHT) 168 | 169 | // Nav+Status 170 | #define NAV44_STA (NAV_44 + STATUS_HEIGHT) 171 | 172 | // int 转换 NSNumber 173 | #define IntToNumber(int) [NSNumber numberWithInt:int] 174 | 175 | // Font 176 | #define SystemFont(value) [UIFont systemFontOfSize:value] 177 | #define FontSize(value) [UIFont systemFontOfSize:(CGFloat)floor(value)] 178 | #define FontSize_4(value) FontSize(XX_4(value)) 179 | #define FontSize_5(value) FontSize(XX_5(value)) 180 | #define FontSize_6(value) FontSize(XX_6(value)) 181 | #define FontSize_6P(value) FontSize(XX_6P(value)) 182 | 183 | #define FontSize_4N(value) FontSize(XX_4(value / 3.0)) 184 | #define FontSize_5N(value) FontSize(XX_5(value / 3.0)) 185 | #define FontSize_6N(value) FontSize(XX_6(value / 3.0)) 186 | #define FontSize_6PN(value) FontSize(XX_6P(value / 3.0)) 187 | 188 | #define FontSize_4N_2(value) FontSize(XX_4(value / 2.0)) 189 | #define FontSize_5N_2(value) FontSize(XX_5(value / 2.0)) 190 | #define FontSize_6N_2(value) FontSize(XX_6(value / 2.0)) 191 | #define FontSize_6PN_2(value) FontSize(XX_6P(value / 2.0)) 192 | 193 | #define BoldSysFont(value) [UIFont boldSystemFontOfSize:value] 194 | #define WidthBasedScaleSysFont(value) SystemFont(WidthBasedScale(value)) 195 | #define WidthBasedScaleBoldFont(value) BoldSysFont(WidthBasedScale(value)) 196 | 197 | /** 198 | * Bear自定义log 199 | */ 200 | #define ShowBearLog 1 201 | #if ShowBearLog 202 | //#define BearLog(FORMAT, ...) fprintf(stderr,"===== Bear Log =====\t\t%s:%d\n%s\n\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]) 203 | #define BearLog(FORMAT, ...) fprintf(stderr,"== Bear ==\t%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]) 204 | #else 205 | #define BearLog(FORMAT, ...) 206 | #endif 207 | 208 | #endif /* BearDefines_h */ 209 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/Constants/ApplicationOpenURLManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // ApplicationOpenURLManager.h 3 | // Pods 4 | // 5 | // Created by apple on 16/9/18. 6 | // 7 | // 8 | 9 | #import 10 | 11 | static NSString *kPrefs_Privacy = @"prefs:root=Privacy"; 12 | static NSString *kPrefs_Contacts = @"prefs:root=Privacy&path=CONTACTS"; 13 | static NSString *kPrefs_Location = @"prefs:root=LOCATION_SERVICES"; 14 | static NSString *kPrefs_ = @""; 15 | 16 | @interface ApplicationOpenURLManager : NSObject 17 | 18 | // 打开系统设置 19 | + (void)openPrefsURL:(NSString *)openURL; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/Constants/ApplicationOpenURLManager.m: -------------------------------------------------------------------------------- 1 | // 2 | // ApplicationOpenURLManager.m 3 | // Pods 4 | // 5 | // Created by apple on 16/9/18. 6 | // 7 | // 8 | 9 | #import "ApplicationOpenURLManager.h" 10 | #import "BearDefines.h" 11 | 12 | @implementation ApplicationOpenURLManager 13 | 14 | // 打开系统设置 15 | + (void)openPrefsURL:(NSString *)openURL 16 | { 17 | NSURL *url; 18 | 19 | if (over_iOS10) { 20 | url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 21 | } 22 | else{ 23 | url = [NSURL URLWithString:openURL]; 24 | } 25 | 26 | if ([[UIApplication sharedApplication] canOpenURL:url]) { 27 | [[UIApplication sharedApplication] openURL:url]; 28 | } 29 | else{ 30 | UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:@"无法进行跳转,请手动前往设置" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil]; 31 | } 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/Constants/BearConstants.h: -------------------------------------------------------------------------------- 1 | // 2 | // BearConstants.h 3 | // Bear 4 | // 5 | // Created by Bear on 30/12/24. 6 | // Copyright © 2015年 Bear. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | // NotificationCenter字段 13 | static NSString *NotificationTest = @"NotificationTest"; 14 | 15 | // UserDefaults字段 16 | static NSString *usTest = @"usTest"; 17 | 18 | @interface BearConstants : NSObject 19 | 20 | // 获取当前时间,日期 21 | + (NSString *)getCurrentTimeStr; 22 | 23 | // dict取值并判断是否为空 24 | + (id)setDataWithDict:(NSDictionary *)dict keyStr:(NSString *)keyStr; 25 | 26 | // dict取值并判断是否为空,string类型专用 27 | + (NSString *)setStringWithDict:(NSDictionary *)dict keyStr:(NSString *)keyStr; 28 | 29 | // 防止字符串为 30 | + (NSString *)avoidStringCrash:(id)string; 31 | 32 | // 判断字符串是否为空 33 | + (BOOL)judgeStringExist:(id)string; 34 | 35 | // 判断数组里的字符串是否都存在 36 | + (BOOL)judgeStringExistFromArray:(NSArray *)array; 37 | 38 | // 判断dict中是否包含某字段 39 | + (BOOL)judgeDictHaveStr:(NSString *)keyStr dict:(NSDictionary *)dict; 40 | 41 | // 从URL获取图片 42 | + (UIImage *)getImageFromURL:(NSString *)imageURL; 43 | 44 | // 修改iamge尺寸 45 | + (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)newsize; 46 | 47 | // 验证姓名 48 | + (BOOL)validateNameString:(NSString *)nameStr; 49 | 50 | // 验证手机号码 51 | + (BOOL)validatePhoneString:(NSString *)phoneStr; 52 | 53 | /** 54 | * Block Demo 55 | */ 56 | + (void)requestClearMessage:(NSNumber *)notificationId success:(void (^) ())success failure:(void (^) ())failure; 57 | 58 | // 延时block 59 | + (void)delayAfter:(CGFloat)delayTime dealBlock:(void (^)())dealBlock; 60 | 61 | // 获取随机颜色 62 | + (UIColor *)randomColor; 63 | + (UIColor *)randomColorWithAlpha:(CGFloat)alpha; 64 | 65 | @end 66 | 67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/Constants/BearConstants.m: -------------------------------------------------------------------------------- 1 | // 2 | // BearConstants.m 3 | // Bear 4 | // 5 | // Created by Bear on 30/12/24. 6 | // Copyright © 2015年 Bear. All rights reserved. 7 | // 8 | 9 | #import "BearConstants.h" 10 | 11 | @implementation BearConstants 12 | 13 | // 获取当前时间,日期 14 | + (NSString *)getCurrentTimeStr 15 | { 16 | NSDate *currentDate = [NSDate date]; 17 | NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 18 | [dateFormatter setDateFormat:@"YYYY/MM/dd hh:mm:ss"]; 19 | NSString *dateString = [dateFormatter stringFromDate:currentDate]; 20 | NSLog(@"dateString:%@",dateString); 21 | 22 | return dateString; 23 | } 24 | 25 | // dict取值并判断是否为空 26 | + (id)setDataWithDict:(NSDictionary *)dict keyStr:(NSString *)keyStr 27 | { 28 | if (nil != [dict objectForKey:keyStr] && ![[dict objectForKey:keyStr] isEqual:[NSNull null]]) { 29 | return [dict objectForKey:keyStr]; 30 | } 31 | 32 | return nil; 33 | } 34 | 35 | // dict取值并判断是否为空,string类型专用 36 | + (NSString *)setStringWithDict:(NSDictionary *)dict keyStr:(NSString *)keyStr 37 | { 38 | if (nil != [dict objectForKey:keyStr] && ![[dict objectForKey:keyStr] isEqual:[NSNull null]]) { 39 | return [NSString stringWithFormat:@"%@", [dict objectForKey:keyStr]]; 40 | } 41 | 42 | return nil; 43 | } 44 | 45 | // 防止字符串为 46 | + (NSString *)avoidStringCrash:(id)string 47 | { 48 | if (string && string != nil) { 49 | NSString *tempStr = [NSString stringWithFormat:@"%@", string]; 50 | if ([tempStr isEqualToString:@""]) { 51 | return @""; 52 | } 53 | return tempStr; 54 | } 55 | 56 | return @""; 57 | } 58 | 59 | // 判断字符串是否为空 60 | + (BOOL)judgeStringExist:(id)string 61 | { 62 | if (string && string != nil) { 63 | if ([string isKindOfClass:[NSString class]]) { 64 | if ([string isEqualToString:@""]) { 65 | return NO; 66 | } 67 | } 68 | 69 | NSString *tempStr = [NSString stringWithFormat:@"%@", string]; 70 | if ([tempStr length] > 0) { 71 | return YES; 72 | } 73 | } 74 | 75 | return NO; 76 | } 77 | 78 | // 判断数组里的字符串是否都存在 79 | + (BOOL)judgeStringExistFromArray:(NSArray *)array 80 | { 81 | if (!array || [array count] == 0) { 82 | return NO; 83 | } 84 | 85 | for (id str in array) { 86 | if (![self judgeStringExist:str]) { 87 | return NO; 88 | } 89 | } 90 | 91 | return YES; 92 | } 93 | 94 | // 判断dict中是否包含某字段 95 | + (BOOL)judgeDictHaveStr:(NSString *)keyStr dict:(NSDictionary *)dict 96 | { 97 | if ([[dict allKeys]containsObject:keyStr]&&![[dict objectForKey:keyStr] isEqual:[NSNull null]]&&[dict objectForKey:keyStr]) 98 | { 99 | return YES; 100 | } 101 | 102 | return NO; 103 | } 104 | 105 | // 从URL获取图片 106 | + (UIImage *)getImageFromURL:(NSString *)imageURL 107 | { 108 | if ([imageURL rangeOfString:@"http://"].location != NSNotFound || [imageURL rangeOfString:@"https://"].location != NSNotFound) { 109 | __block UIImage *image = [[UIImage alloc] init]; 110 | dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 111 | image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL]]]; 112 | }); 113 | return image; 114 | } 115 | 116 | return nil; 117 | } 118 | 119 | // 修改iamge尺寸 120 | + (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)newsize 121 | { 122 | // 创建一个bitmap的context 123 | // 并把它设置成为当前正在使用的context 124 | UIGraphicsBeginImageContext(newsize); 125 | // 绘制改变大小的图片 126 | [img drawInRect:CGRectMake(0, 0, newsize.width, newsize.height)]; 127 | // 从当前context中创建一个改变大小后的图片 128 | UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 129 | // 使当前的context出堆栈 130 | UIGraphicsEndImageContext(); 131 | // 返回新的改变大小后的图片 132 | return scaledImage; 133 | } 134 | 135 | // 验证姓名 136 | + (BOOL)validateNameString:(NSString *)nameStr 137 | { 138 | if ([nameStr length] > 0 && [nameStr length] < 10) { 139 | //數字條件 140 | NSRegularExpression *tNumRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[0-9]" options:NSRegularExpressionCaseInsensitive error:nil]; 141 | 142 | //符合數字條件的有幾個字元 143 | NSUInteger tNumMatchCount = [tNumRegularExpression numberOfMatchesInString:nameStr 144 | options:NSMatchingReportProgress 145 | range:NSMakeRange(0, nameStr.length)]; 146 | 147 | if (tNumMatchCount == 0) { 148 | return YES; 149 | } 150 | } 151 | 152 | return NO; 153 | } 154 | 155 | // 验证手机号码 156 | + (BOOL)validatePhoneString:(NSString *)phoneStr 157 | { 158 | if ([phoneStr length] == 11) { 159 | //數字條件 160 | NSRegularExpression *tNumRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[0-9]" options:NSRegularExpressionCaseInsensitive error:nil]; 161 | //符合數字條件的有幾個字元 162 | NSUInteger tNumMatchCount = [tNumRegularExpression numberOfMatchesInString:phoneStr 163 | options:NSMatchingReportProgress 164 | range:NSMakeRange(0, phoneStr.length)]; 165 | 166 | if (tNumMatchCount == 11) { 167 | return YES; 168 | } 169 | } 170 | 171 | return NO; 172 | } 173 | 174 | /** 175 | * Block Demo 176 | */ 177 | + (void)requestClearMessage:(NSNumber *)notificationId success:(void (^) ())success failure:(void (^) ())failure 178 | { 179 | 180 | if (success) { 181 | success(); 182 | } 183 | 184 | if (failure) { 185 | failure(); 186 | } 187 | } 188 | 189 | // 延时block 190 | + (void)delayAfter:(CGFloat)delayTime dealBlock:(void (^)())dealBlock 191 | { 192 | dispatch_time_t timer = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayTime *NSEC_PER_SEC)); 193 | dispatch_after(timer, dispatch_get_main_queue(), ^{ 194 | 195 | if (dealBlock) { 196 | dealBlock(); 197 | } 198 | }); 199 | } 200 | 201 | // 获取随机颜色 202 | + (UIColor *)randomColor 203 | { 204 | UIColor *randomColor = [self randomColorWithAlpha:1]; 205 | return randomColor; 206 | } 207 | 208 | // 获取随机颜色 209 | + (UIColor *)randomColorWithAlpha:(CGFloat)alpha 210 | { 211 | CGFloat r = arc4random() % 255 / 255.0; 212 | CGFloat g = arc4random() % 255 / 255.0; 213 | CGFloat b = arc4random() % 255 / 255.0; 214 | UIColor *randomColor = [UIColor colorWithRed:r green:g blue:b alpha:alpha]; 215 | return randomColor; 216 | } 217 | 218 | @end 219 | 220 | 221 | 222 | 223 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/Layout/UITableView+BearStoreCellHeight.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+BearStoreCellHeight.h 3 | // Pods 4 | // 5 | // Created by apple on 16/5/16. 6 | // 7 | // 8 | 9 | 10 | // 11 | // 本方法可以方便记录,获取UITableViewCell的高度,尺寸 12 | // 13 | 14 | #import 15 | 16 | @interface UITableView (BearStoreCellHeight) 17 | 18 | @property (copy, nonatomic) NSMutableDictionary *cellFrameDict; 19 | 20 | // 根据indexPath获取对应的高度 21 | // 如果之前没有记录,默认返回10 22 | - (CGFloat)getHeightForRowAtIndexPath:(NSIndexPath *)indexPath; 23 | 24 | // 根据indexPath获取对应的frame 25 | // 如果之前没有记录,默认返回(0, 0, 10, 10) 26 | - (CGRect)getFrameForRowAtIndexPath:(NSIndexPath *)indexPath; 27 | 28 | // 将cell的frame存储到对应的indexPath 29 | - (void)recordingFrame:(CGRect)frame forRowAtIndexPath:(NSIndexPath *)indexPath; 30 | 31 | // 将cell的Height存储到对应的indexPath 32 | - (void)recordingHeight:(CGFloat)height forRowAtIndexPath:(NSIndexPath *)indexPath; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/Layout/UITableView+BearStoreCellHeight.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+BearStoreCellHeight.m 3 | // Pods 4 | // 5 | // Created by apple on 16/5/16. 6 | // 7 | // 8 | 9 | #import "UITableView+BearStoreCellHeight.h" 10 | #import "objc/runtime.h" 11 | #import "BearDefines.h" 12 | 13 | static const void *cellFrameDictKey = &cellFrameDictKey; 14 | 15 | @implementation UITableView (BearStoreCellHeight) 16 | 17 | - (NSDictionary *)cellFrameDict 18 | { 19 | return objc_getAssociatedObject(self, cellFrameDictKey); 20 | } 21 | 22 | - (void)setCellFrameDict:(NSDictionary *)cellFrameDict 23 | { 24 | objc_setAssociatedObject(self, cellFrameDictKey, cellFrameDict, OBJC_ASSOCIATION_COPY_NONATOMIC); 25 | } 26 | 27 | // 根据indexPath获取对应的高度 28 | // 如果之前没有记录,默认返回10 29 | - (CGFloat)getHeightForRowAtIndexPath:(NSIndexPath *)indexPath 30 | { 31 | if (!self.cellFrameDict) { 32 | self.cellFrameDict = [[NSMutableDictionary alloc] init]; 33 | } 34 | 35 | NSString *indexPathStr = [self indexPathToStr:indexPath]; 36 | if ([self.cellFrameDict objectForKey:indexPathStr]) { 37 | CGRect tempRect = [[self.cellFrameDict objectForKey:indexPathStr] CGRectValue]; 38 | return tempRect.size.height; 39 | } 40 | 41 | return 10; 42 | } 43 | 44 | // 根据indexPath获取对应的frame 45 | // 如果之前没有记录,默认返回(0, 0, 10, 10) 46 | - (CGRect)getFrameForRowAtIndexPath:(NSIndexPath *)indexPath 47 | { 48 | if (!self.cellFrameDict) { 49 | self.cellFrameDict = [[NSMutableDictionary alloc] init]; 50 | } 51 | 52 | NSString *indexPathStr = [self indexPathToStr:indexPath]; 53 | if ([self.cellFrameDict objectForKey:indexPathStr]) { 54 | CGRect tempRect = [[self.cellFrameDict objectForKey:indexPathStr] CGRectValue]; 55 | return tempRect; 56 | } 57 | 58 | return CGRectMake(0, 0, 10, 10); 59 | } 60 | 61 | // 将cell的frame存储到对应的indexPath 62 | - (void)recordingFrame:(CGRect)frame forRowAtIndexPath:(NSIndexPath *)indexPath 63 | { 64 | if (!self.cellFrameDict) { 65 | self.cellFrameDict = [[NSMutableDictionary alloc] init]; 66 | } 67 | 68 | NSString *indexPath_Key = [self indexPathToStr:indexPath]; 69 | NSValue *tempRect_Value = [NSValue valueWithCGRect:frame]; 70 | 71 | NSMutableDictionary *tempDict = [self.cellFrameDict mutableCopy]; 72 | [tempDict setObject:tempRect_Value forKey:indexPath_Key]; 73 | self.cellFrameDict = tempDict; 74 | } 75 | 76 | // 将cell的Height存储到对应的indexPath 77 | - (void)recordingHeight:(CGFloat)height forRowAtIndexPath:(NSIndexPath *)indexPath 78 | { 79 | CGRect frame = CGRectMake(0, 0, WIDTH, height); 80 | [self recordingFrame:frame forRowAtIndexPath:indexPath]; 81 | } 82 | 83 | 84 | 85 | 86 | // 索引转字符串 87 | - (NSString *)indexPathToStr:(NSIndexPath *)indexPath 88 | { 89 | NSString *resultStr = [NSString stringWithFormat:@"%ld-%ld", (long)indexPath.section, (long)indexPath.row]; 90 | return resultStr; 91 | } 92 | 93 | // 字符串转索引 94 | - (NSIndexPath *)strToIndexPath:(NSString *)str 95 | { 96 | NSArray *strArray = [str componentsSeparatedByString:@"-"]; 97 | NSInteger section = [strArray[0] integerValue]; 98 | NSInteger row = [strArray[1] integerValue]; 99 | NSIndexPath *resultIndexPath = [NSIndexPath indexPathForRow:row inSection:section]; 100 | 101 | return resultIndexPath; 102 | } 103 | 104 | @end 105 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/Layout/UIView+BearSet.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+BearSet.h 3 | // 4 | // Created by bear on 15/11/25. 5 | // Copyright (c) 2015年 Bear. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | typedef NS_ENUM(NSUInteger, kAXIS) { 11 | kAXIS_Y, 12 | kAXIS_X, 13 | kAXIS_X_Y, 14 | }; 15 | 16 | typedef NS_ENUM(NSUInteger, kLAYOUT_AXIS) { 17 | kLAYOUT_AXIS_Y, 18 | kLAYOUT_AXIS_X, 19 | }; 20 | 21 | typedef NS_ENUM(NSUInteger, kDIRECTION) { 22 | kDIR_LEFT, 23 | kDIR_RIGHT, 24 | kDIR_UP, 25 | kDIR_DOWN, 26 | }; 27 | 28 | typedef NS_ENUM(NSUInteger, SetNeedWHSort) { 29 | kSetNeed_Width, 30 | kSetNeed_Height, 31 | }; 32 | 33 | // 设置对齐类型 34 | typedef NS_ENUM(NSUInteger, SetAlignmentType) { 35 | kSetAlignmentType_Idle, // 不处理对齐方式 36 | kSetAlignmentType_Center, // 剧中对齐 37 | kSetAlignmentType_Start, // 上/左对齐 38 | kSetAlignmentType_End, // 下/右对齐 39 | kSetAlignmentType_CustomCenter, // 自定义剧中的位置 40 | }; 41 | 42 | // offParameter结构体 43 | struct OffPara 44 | { 45 | CGFloat offStart; 46 | CGFloat offEnd; 47 | BOOL autoCalu; 48 | }; 49 | typedef struct OffPara OffPara; 50 | 51 | // offParameter内联 52 | CG_INLINE OffPara 53 | OffParaMake(CGFloat offStart, CGFloat offEnd, BOOL autoCalu) 54 | { 55 | OffPara offPara; 56 | offPara.offStart = offStart; 57 | offPara.offEnd = offEnd; 58 | offPara.autoCalu = autoCalu; 59 | return offPara; 60 | } 61 | 62 | 63 | // gapParameter结构体 64 | struct GapPara 65 | { 66 | CGFloat gapDistance; 67 | BOOL autoCalu; 68 | }; 69 | typedef struct GapPara GapPara; 70 | 71 | // gapParameter内联 72 | CG_INLINE GapPara 73 | GapParaMake(CGFloat gapDistance, BOOL autoCalu) 74 | { 75 | GapPara gapPara; 76 | gapPara.gapDistance = gapDistance; 77 | gapPara.autoCalu = autoCalu; 78 | return gapPara; 79 | } 80 | 81 | 82 | @interface UIView (BearSet) 83 | 84 | /** 85 | * 普通的方法 86 | */ 87 | 88 | - (void)removeAllSubViews; 89 | 90 | // 描边 91 | - (void)setLine:(UIColor *)color cornerRadius:(NSUInteger)cornerRadius borderWidth:(CGFloat)borderWidth; 92 | 93 | // 毛玻璃效果处理 94 | - (void)blurEffectWithStyle:(UIBlurEffectStyle)style Alpha:(CGFloat)alpha; 95 | 96 | // 设置边框 97 | - (void)setMyBorder:(UIColor *)borderColor borderWidth:(CGFloat)borderWidth; 98 | 99 | // 自定义分割线View OffY 100 | - (void)setMySeparatorLineOffY:(int)offStart offEnd:(int)offEnd lineWidth:(CGFloat)lineWidth lineColor:(UIColor *)lineColor offY:(CGFloat)offY; 101 | 102 | // 自定义底部分割线View 103 | - (void)setMySeparatorLine:(CGFloat)offStart offEnd:(CGFloat)offEnd lineWidth:(CGFloat)lineWidth lineColor:(UIColor *)lineColor; 104 | 105 | /** 106 | * 画线--View 107 | * 通过view,画横向/纵向的线 108 | * 109 | * @param startPoint 起点 110 | * @param endPoint 终点 111 | * @param lineWidth 线宽 112 | * @param lineColor 线颜色 113 | * 114 | * @return view上绘制的线view 115 | */ 116 | - (UIView *)drawLine:(CGPoint)startPoint 117 | endPoint:(CGPoint)endPoint 118 | lineWidth:(CGFloat)lineWidth 119 | lineColor:(UIColor *)lineColor; 120 | 121 | // 通过layer,画任意方向的线 122 | - (void)drawLineWithLayer:(CGPoint)startPoint endPoint:(CGPoint)endPoint lineWidth:(CGFloat)lineWidth lineColor:(UIColor *)lineColor; 123 | 124 | /** 125 | * 在View中绘制虚线 126 | * 127 | * @param axis 横向/纵向绘制虚线 128 | * @param dashColor 虚线颜色 129 | * @param dashPattern 虚线间距数组,默认@[@3, @3] 130 | */ 131 | - (void)drawDashLineWithAxis:(kLAYOUT_AXIS)axis 132 | dashColor:(UIColor *)dashColor 133 | dashPattern:(NSArray *)dashPattern; 134 | 135 | /** 136 | * 虚线Layer 137 | * 138 | * @param axis 横向/纵向绘制虚线 139 | * @param dashColor 虚线颜色 140 | * @param dashPattern 虚线间距数组,默认@[@3, @3] 141 | */ 142 | + (CAShapeLayer *)dashLayerWithAxis:(kLAYOUT_AXIS)axis 143 | dashColor:(UIColor *)dashColor 144 | dashPattern:(NSArray *)dashPattern 145 | frame:(CGRect)frame; 146 | 147 | /** 148 | 在layer上添加分离图片 149 | 150 | @param image 图片 151 | @param rect 图片裁剪比例 CGRectMake(0, 0, 0.5, 0.5) 152 | @param contentsGravity 图片填充模式 153 | */ 154 | - (void)addSpriteImage:(UIImage *)image withContentRect:(CGRect)rect contentsGravity:(NSString *)contentsGravity; 155 | 156 | 157 | 158 | /** 159 | * 布局扩展方法 160 | */ 161 | 162 | 163 | // Getter 164 | 165 | - (CGFloat)x; 166 | - (CGFloat)y; 167 | - (CGFloat)maxX; 168 | - (CGFloat)maxY; 169 | - (CGFloat)width; 170 | - (CGFloat)height; 171 | - (CGPoint)origin; 172 | - (CGSize)size; 173 | 174 | - (CGFloat)centerX; 175 | - (CGFloat)centerY; 176 | 177 | 178 | //Setter 179 | 180 | - (void)setX:(CGFloat)x; 181 | - (void)setMaxX:(CGFloat)maxX; 182 | - (void)setMaxX_DontMoveMinX:(CGFloat)maxX; 183 | 184 | - (void)setY:(CGFloat)y; 185 | - (void)setMaxY:(CGFloat)maxY; 186 | - (void)setMaxY_DontMoveMinY:(CGFloat)maxY; 187 | 188 | - (void)setWidth:(CGFloat)width; 189 | - (void)setHeight:(CGFloat)height; 190 | - (void)setOrigin:(CGPoint)point; 191 | - (void)setOrigin:(CGPoint)point sizeToFit:(BOOL)sizeToFit; 192 | - (void)setSize:(CGSize)size; 193 | 194 | - (void)setCenterX:(CGFloat)x; 195 | - (void)setCenterY:(CGFloat)y; 196 | 197 | - (void)setWidth_DonotMoveCenter:(CGFloat)width; 198 | - (void)setHeight_DonotMoveCenter:(CGFloat)height; 199 | - (void)setSize_DonotMoveCenter:(CGSize)size; 200 | - (void)sizeToFit_DonotMoveCenter; 201 | - (void)sizeToFit_DonotMoveSide:(kDIRECTION)dir centerRemain:(BOOL)centerRemain; 202 | 203 | 204 | /** 205 | * 保持宽高比,自动设置Size 206 | * 207 | * @param referWidth 参考宽度 208 | * @param referHeight 参考高度 209 | * @param setWidth 实际宽度,自动计算高度 210 | */ 211 | - (void)BearSetSizeRemainWHRatio_referWidth:(NSNumber *)referWidth referHeight:(NSNumber *)referHeight setSort:(SetNeedWHSort)setSort setValue:(NSNumber *)setValue; 212 | 213 | /** 214 | * 保持宽高比,自动设置Size 215 | * 216 | * @param referWidth 参考宽度 217 | * @param referHeight 参考高度 218 | * @param setWidth 实际宽度,自动计算高度 219 | * 220 | * @return 221 | * setSort == kSetNeed_Width时,返回高度 222 | * setSort == kSetNeed_Height时,返回宽度 223 | */ 224 | + (CGSize)caculateSizeRemainWHRatio_referWidth:(NSNumber *)referWidth referHeight:(NSNumber *)referHeight setSort:(SetNeedWHSort)setSort setValue:(NSNumber *)setValue; 225 | 226 | /** 227 | * 保持宽高比,自动设置Bounds 228 | * 229 | * @param referWidth 参考宽度 230 | * @param referHeight 参考高度 231 | * @param setWidth 实际宽度,自动计算高度 232 | * 233 | * @return 234 | * setSort == kSetNeed_Width时,返回高度 235 | * setSort == kSetNeed_Height时,返回宽度 236 | */ 237 | + (CGRect)caculateBoundsRemainWHRatio_referWidth:(NSNumber *)referWidth referHeight:(NSNumber *)referHeight setSort:(SetNeedWHSort)setSort setValue:(NSNumber *)setValue; 238 | 239 | /** 240 | * 和父类view剧中 241 | * 242 | * 当前view和父类view的 X轴/Y轴/中心点 对其 243 | */ 244 | - (void)BearSetCenterToParentViewWithAxis:(kAXIS)axis; 245 | 246 | 247 | /** 248 | * 和指定的view剧中 249 | * 250 | * 当前view和指定view的 X轴/Y轴/中心点 对其 251 | */ 252 | - (void)BearSetCenterToView:(UIView *)destinationView withAxis:(kAXIS)axis; 253 | 254 | 255 | /** 256 | * view与view的相对位置 257 | */ 258 | - (void)BearSetRelativeLayoutWithDirection:(kDIRECTION)direction destinationView:(UIView *)destinationView parentRelation:(BOOL)parentRelation distance:(CGFloat)distance center:(BOOL)center; 259 | 260 | 261 | /** 262 | * view的相对布局,带sizeToFit 263 | */ 264 | - (void)BearSetRelativeLayoutWithDirection:(kDIRECTION)direction destinationView:(UIView *)destinationView parentRelation:(BOOL)parentRelation distance:(CGFloat)distance center:(BOOL)center sizeToFit:(BOOL)sizeToFit; 265 | 266 | 267 | #pragma mark - AutoLay V1 268 | 269 | /** 270 | * 根据子view自动布局 -- 自动计算:起始点,结束点,间距(三值相等) 271 | * 说明: 在父类view尺寸不等于需求尺寸时,会显示日志并且取消布局 272 | */ 273 | + (void)BearAutoLayViewArray:(NSMutableArray *)viewArray layoutAxis:(kLAYOUT_AXIS)layoutAxis center:(BOOL)center; 274 | 275 | 276 | /** 277 | * 根据子view自动布局 -- 需要设置:起始点,结束点; -- 自动计算:间距 278 | * 说明: 在父类view尺寸不等于需求尺寸时,会显示日志并且取消布局 279 | */ 280 | + (void)BearAutoLayViewArray:(NSMutableArray *)viewArray layoutAxis:(kLAYOUT_AXIS)layoutAxis center:(BOOL)center offStart:(CGFloat)offStart offEnd:(CGFloat)offEnd; 281 | 282 | 283 | /** 284 | * 根据子view自动布局 -- 需要设置:间距; -- 自动计算:起始点,结束点 285 | * 说明: 在父类view尺寸不等于需求尺寸时,会显示日志并且取消布局 286 | */ 287 | + (void)BearAutoLayViewArray:(NSMutableArray *)viewArray layoutAxis:(kLAYOUT_AXIS)layoutAxis center:(BOOL)center gapDistance:(CGFloat)gapDistance; 288 | 289 | 290 | /** 291 | * 根据子view自动布局 -- 需要设置:起始点,结束点,间距 292 | * 说明: 在父类view尺寸不等于需求尺寸时,会自动变化 293 | */ 294 | + (void)BearAutoLayViewArray:(NSMutableArray *)viewArray layoutAxis:(kLAYOUT_AXIS)layoutAxis center:(BOOL)center offStart:(CGFloat)offStart offEnd:(CGFloat)offEnd gapDistance:(CGFloat)gapDistance; 295 | 296 | 297 | /** 298 | * 根据子view自动布局 -- 需要设置:gapArray间距比例数组,间距总和 299 | * 说明: 在父类view尺寸不等于需求尺寸时,会自动变化 300 | */ 301 | + (void)BearAutoLayViewArray:(NSMutableArray *)viewArray layoutAxis:(kLAYOUT_AXIS)layoutAxis center:(BOOL)center gapAray:(NSArray *)gapArray gapDisAll:(CGFloat)gapDisAll; 302 | 303 | /** 304 | * 根据子view自动布局 -- 需要设置:gapArray间距比例数组; -- 自动计算:间距总和 305 | * 说明: 在父类view尺寸不等于需求尺寸时,无法自动布局 306 | */ 307 | + (void)BearAutoLayViewArray:(NSMutableArray *)viewArray layoutAxis:(kLAYOUT_AXIS)layoutAxis center:(BOOL)center gapAray:(NSArray *)gapArray; 308 | 309 | 310 | 311 | #pragma mark - AutoLay V2 312 | 313 | /** 314 | * 根据子view自动布局 -- 自动计算:起始点,结束点,间距(三值相等) 315 | * 说明: 在父类view尺寸不等于需求尺寸时,会显示日志并且取消布局 316 | */ 317 | + (void)BearV2AutoLayViewArray:(NSMutableArray *)viewArray 318 | layoutAxis:(kLAYOUT_AXIS)layoutAxis 319 | alignmentType:(SetAlignmentType)alignmentType 320 | alignmentOffDis:(CGFloat)alignmentOffDis; 321 | 322 | 323 | /** 324 | * 根据子view自动布局 -- 需要设置:起始点,结束点; -- 自动计算:间距 325 | * 说明: 在父类view尺寸不等于需求尺寸时,会显示日志并且取消布局 326 | */ 327 | + (void)BearV2AutoLayViewArray:(NSMutableArray *)viewArray 328 | layoutAxis:(kLAYOUT_AXIS)layoutAxis 329 | alignmentType:(SetAlignmentType)alignmentType 330 | alignmentOffDis:(CGFloat)alignmentOffDis 331 | offStart:(CGFloat)offStart 332 | offEnd:(CGFloat)offEnd; 333 | 334 | 335 | /** 336 | * 根据子view自动布局 -- 需要设置:间距; -- 自动计算:起始点,结束点 337 | * 说明: 在父类view尺寸不等于需求尺寸时,会显示日志并且取消布局 338 | */ 339 | + (void)BearV2AutoLayViewArray:(NSMutableArray *)viewArray 340 | layoutAxis:(kLAYOUT_AXIS)layoutAxis 341 | alignmentType:(SetAlignmentType)alignmentType 342 | alignmentOffDis:(CGFloat)alignmentOffDis 343 | gapDistance:(CGFloat)gapDistance; 344 | 345 | 346 | /** 347 | * 根据子view自动布局 -- 需要设置:起始点,结束点,间距 348 | * 说明: 在父类view尺寸不等于需求尺寸时,会自动变化 349 | */ 350 | + (void)BearV2AutoLayViewArray:(NSMutableArray *)viewArray 351 | layoutAxis:(kLAYOUT_AXIS)layoutAxis 352 | alignmentType:(SetAlignmentType)alignmentType 353 | alignmentOffDis:(CGFloat)alignmentOffDis 354 | offStart:(CGFloat)offStart 355 | offEnd:(CGFloat)offEnd 356 | gapDistance:(CGFloat)gapDistance; 357 | 358 | 359 | /** 360 | * 根据子view自动布局 -- 需要设置:gapArray间距比例数组,间距总和 361 | * 说明: 在父类view尺寸不等于需求尺寸时,会自动变化 362 | */ 363 | + (void)BearV2AutoLayViewArray:(NSMutableArray *)viewArray 364 | layoutAxis:(kLAYOUT_AXIS)layoutAxis 365 | alignmentType:(SetAlignmentType)alignmentType 366 | alignmentOffDis:(CGFloat)alignmentOffDis 367 | gapAray:(NSArray *)gapArray 368 | gapDisAll:(CGFloat)gapDisAll; 369 | 370 | 371 | /** 372 | * 根据子view自动布局 -- 需要设置:gapArray间距比例数组; -- 自动计算:间距总和 373 | * 说明: 在父类view尺寸不等于需求尺寸时,无法自动布局 374 | */ 375 | + (void)BearV2AutoLayViewArray:(NSMutableArray *)viewArray 376 | layoutAxis:(kLAYOUT_AXIS)layoutAxis 377 | alignmentType:(SetAlignmentType)alignmentType 378 | alignmentOffDis:(CGFloat)alignmentOffDis 379 | gapAray:(NSArray *)gapArray; 380 | 381 | 382 | @end 383 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertBtnsView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BearAlertBtnsView.h 3 | // GOSHOPPING 4 | // 5 | // Created by Bear on 16/6/26. 6 | // Copyright © 2016年 cjl. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BearAlertBtnsView : UIView 12 | 13 | @property (strong, nonatomic) UIView *btns_horizontalSepLineV; 14 | @property (strong, nonatomic) UIView *btns_verticalSepLineV; 15 | @property (strong, nonatomic) UIButton *cancelBtn; 16 | @property (strong, nonatomic) UIButton *confirmBtn; 17 | 18 | - (void)setNormal_CancelBtnTitle:(NSString *)cancelBtnTitle ConfirmBtnTitle:(NSString *)confirmBtnTitle; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertBtnsView.m: -------------------------------------------------------------------------------- 1 | // 2 | // BearAlertBtnsView.m 3 | // GOSHOPPING 4 | // 5 | // Created by Bear on 16/6/26. 6 | // Copyright © 2016年 cjl. All rights reserved. 7 | // 8 | 9 | #import "BearAlertBtnsView.h" 10 | #import "UIView+BearSet.h" 11 | 12 | @interface BearAlertBtnsView () 13 | { 14 | NSString *_confirmBtnTitle; 15 | NSString *_cancelBtnTitle; 16 | } 17 | 18 | @end 19 | 20 | @implementation BearAlertBtnsView 21 | 22 | - (instancetype)init 23 | { 24 | self = [super init]; 25 | 26 | if (self) { 27 | 28 | // 取消按钮 29 | _cancelBtn = [[UIButton alloc] init]; 30 | [_cancelBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 31 | [self addSubview:_cancelBtn]; 32 | 33 | // 确定按钮 34 | _confirmBtn = [[UIButton alloc] init]; 35 | [_confirmBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 36 | [self addSubview:_confirmBtn]; 37 | 38 | // 分割线 39 | _btns_horizontalSepLineV = [[UIView alloc] init]; 40 | _btns_horizontalSepLineV.backgroundColor = [UIColor blackColor]; 41 | [self addSubview:_btns_horizontalSepLineV]; 42 | 43 | _btns_verticalSepLineV = [[UIView alloc] init]; 44 | _btns_verticalSepLineV.backgroundColor = [UIColor blackColor]; 45 | [self addSubview:_btns_verticalSepLineV]; 46 | } 47 | 48 | return self; 49 | } 50 | 51 | - (void)setNormal_CancelBtnTitle:(NSString *)cancelBtnTitle ConfirmBtnTitle:(NSString *)confirmBtnTitle 52 | { 53 | _cancelBtnTitle = cancelBtnTitle; 54 | _confirmBtnTitle = confirmBtnTitle; 55 | } 56 | 57 | - (void)layoutSubviews 58 | { 59 | [super layoutSubviews]; 60 | 61 | BOOL res_haveConfirmBtn = [_confirmBtnTitle length] > 0; 62 | BOOL res_haveCancelBtn = [_cancelBtnTitle length] > 0; 63 | 64 | CGFloat btn_width = self.width; 65 | CGFloat btn_height = self.height; 66 | 67 | if (res_haveCancelBtn && res_haveConfirmBtn) { 68 | 69 | btn_width = self.width / 2.0; 70 | 71 | _cancelBtn.frame = CGRectMake(0, 0, btn_width, btn_height); 72 | [_cancelBtn setTitle:_cancelBtnTitle forState:UIControlStateNormal]; 73 | 74 | _confirmBtn.frame = CGRectMake(btn_width, 0, btn_width, btn_height); 75 | [_confirmBtn setTitle:_confirmBtnTitle forState:UIControlStateNormal]; 76 | 77 | _btns_verticalSepLineV.frame = CGRectMake(0, 0, 0.5, self.height); 78 | [_btns_verticalSepLineV BearSetCenterToParentViewWithAxis:kAXIS_X_Y]; 79 | } 80 | else if (res_haveConfirmBtn || res_haveCancelBtn){ 81 | 82 | btn_width = self.width; 83 | 84 | if (res_haveConfirmBtn) { 85 | 86 | _confirmBtn.frame = CGRectMake(0, 0, btn_width, btn_height); 87 | [_confirmBtn setTitle:_confirmBtnTitle forState:UIControlStateNormal]; 88 | }else if (res_haveCancelBtn){ 89 | 90 | _cancelBtn.frame = CGRectMake(0, 0, btn_width, btn_height); 91 | [_cancelBtn setTitle:_cancelBtnTitle forState:UIControlStateNormal]; 92 | } 93 | } 94 | 95 | _btns_horizontalSepLineV.frame = CGRectMake(0, 0, self.width, 0.5); 96 | 97 | } 98 | 99 | 100 | /* 101 | // Only override drawRect: if you perform custom drawing. 102 | // An empty implementation adversely affects performance during animation. 103 | - (void)drawRect:(CGRect)rect { 104 | // Drawing code 105 | } 106 | */ 107 | 108 | @end 109 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertContentView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BearAlertContentView.h 3 | // GOSHOPPING 4 | // 5 | // Created by Bear on 16/6/27. 6 | // Copyright © 2016年 cjl. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BearAlertContentView : UIView 12 | 13 | @property (strong, nonatomic) UILabel *titleLabel; 14 | @property (strong, nonatomic) UILabel *contentLabel; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertContentView.m: -------------------------------------------------------------------------------- 1 | // 2 | // BearAlertContentView.m 3 | // GOSHOPPING 4 | // 5 | // Created by Bear on 16/6/27. 6 | // Copyright © 2016年 cjl. All rights reserved. 7 | // 8 | 9 | #import "BearAlertContentView.h" 10 | #import "BearDefines.h" 11 | #import "UIView+BearSet.h" 12 | 13 | @implementation BearAlertContentView 14 | 15 | - (instancetype)initWithFrame:(CGRect)frame 16 | { 17 | self = [super initWithFrame:frame]; 18 | 19 | if (self) { 20 | 21 | _titleLabel = [UILabel new]; 22 | _titleLabel.font = [UIFont systemFontOfSize:16]; 23 | [self addSubview:_titleLabel]; 24 | 25 | _contentLabel = [UILabel new]; 26 | _contentLabel.numberOfLines = 0; 27 | _contentLabel.font =[UIFont systemFontOfSize:14]; 28 | [self addSubview:_contentLabel]; 29 | } 30 | 31 | return self; 32 | } 33 | 34 | - (void)layoutSubviews 35 | { 36 | [super layoutSubviews]; 37 | 38 | CGFloat max_width = WIDTH - 2 * 30; 39 | 40 | [_titleLabel sizeToFit]; 41 | [_contentLabel sizeToFit]; 42 | 43 | if (_titleLabel.width > max_width) { 44 | [_titleLabel setWidth:max_width]; 45 | [_titleLabel sizeToFit]; 46 | } 47 | 48 | if (_contentLabel.width > max_width) { 49 | [_contentLabel setWidth:max_width]; 50 | [_contentLabel sizeToFit]; 51 | } 52 | 53 | [self setWidth:_titleLabel.width > _contentLabel.width ? _titleLabel.width + 30 : _contentLabel.width + 30]; 54 | if (self.width < WIDTH / 2) { 55 | [self setWidth:WIDTH / 2]; 56 | } 57 | 58 | [_titleLabel BearSetRelativeLayoutWithDirection:kDIR_UP destinationView:nil parentRelation:YES distance:15 center:YES]; 59 | [_contentLabel BearSetRelativeLayoutWithDirection:kDIR_DOWN destinationView:_titleLabel parentRelation:NO distance:20 center:YES]; 60 | [self setHeight:_contentLabel.maxY + 20]; 61 | } 62 | 63 | 64 | /* 65 | // Only override drawRect: if you perform custom drawing. 66 | // An empty implementation adversely affects performance during animation. 67 | - (void)drawRect:(CGRect)rect { 68 | // Drawing code 69 | } 70 | */ 71 | 72 | @end 73 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BearAlertView.h 3 | // GOSHOPPING 4 | // 5 | // Created by Bear on 16/6/26. 6 | // Copyright © 2016年 cjl. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "BearAlertBtnsView.h" 11 | #import "BearAlertContentView.h" 12 | 13 | // 动效方式 14 | typedef NS_ENUM(NSUInteger, AlertViewAnimation) { 15 | kAlertViewAnimation_VerticalSpring, //直线弹簧动效 16 | kAlertViewAnimation_CenterScale, //中心缩放动效 17 | }; 18 | 19 | // 动画执行状态 20 | typedef NS_ENUM(NSUInteger, AlertViewAnimationState) { 21 | kAlertViewAnimationState_Null, //无状态, 22 | kAlertViewAnimationState_Process, //动画进行中 23 | }; 24 | 25 | // AlertView自定义样式 26 | typedef NS_ENUM(NSUInteger, AlertViewCustomType) { 27 | kAlertViewCustomType_ContentAndBtns, //BearAlertContentView+BearAlertBtnsView自定义 28 | kAlertViewCustomType_AllDiy, //全部自定义 29 | }; 30 | 31 | 32 | typedef void (^kAlertViewBlock)(); 33 | typedef void (^AnimationFinishBlock)(); 34 | typedef void (^AnimationClose_FinishBlock)(); 35 | 36 | 37 | @interface BearAlertView : UIView 38 | 39 | @property (assign, nonatomic) BOOL clickBtnCancel; //点击按钮,消失Alert 40 | @property (assign, nonatomic) BOOL tapBgCancel; //触摸背景,消失Alert 41 | @property (strong, nonatomic) UITapGestureRecognizer *tapGesture; 42 | @property (copy, nonatomic) AnimationClose_FinishBlock animationClose_FinishBlock; //消退动画完成block 43 | @property (strong, nonatomic) BearAlertContentView *normalAlertContentView; 44 | @property (strong, nonatomic) BearAlertBtnsView *normalAlertBtnsView; 45 | @property (assign, nonatomic) AlertViewCustomType alertViewCustomType; 46 | 47 | @property (strong, nonatomic) UIView *bgView; 48 | 49 | - (instancetype)initWithAlertCustomType:(AlertViewCustomType)alertCustomType; 50 | 51 | // 自定义模式下专用 kAlertViewCustomType_AllDiy 52 | - (void)setAllDiyTypeContentView:(UIView *)contentView; 53 | 54 | /** 55 | * 设置contentView 56 | */ 57 | - (void)setContentView:(UIView *)contentView; 58 | 59 | /** 60 | * 设置btnsView 61 | */ 62 | - (void)setBtnsView:(UIView *)btnsView; 63 | 64 | /** 65 | * 点击按钮block 66 | * 67 | * @param confirmBlock 确认按钮block 68 | * @param cancelBlock 取消按钮block 69 | * @notice 只有BearAlertBtnsView类型的btnsView才可使用该方法 70 | */ 71 | - (void)alertView_ConfirmClickBlock:(kAlertViewBlock)confirmBlock CancelClickBlock:(kAlertViewBlock)cancelBlock; 72 | 73 | /** 74 | * 点击按钮block 75 | * 76 | * @param selectBtn 点击的按钮 77 | * @param block 按钮block 78 | * @notice 自定义,非BearAlertBtnsView类型需要单独给按钮调用该方法 79 | */ 80 | - (void)alertView_SelectBtn:(UIButton *)selectBtn block:(kAlertViewBlock)block; 81 | 82 | /** 83 | * 添加按钮点击事件 84 | * @notice 自定义,非BearAlertBtnsView类型需要单独给按钮调用该方法 85 | */ 86 | - (void)btnEvent:(UIButton *)sender; 87 | 88 | /** 89 | * Alertview显现动画 90 | */ 91 | - (void)animationShow_udAlertView; 92 | 93 | /** 94 | * AlertView消退动画 95 | */ 96 | - (void)animationClose_udAlertView; 97 | 98 | @end 99 | 100 | 101 | /** 102 | * How to use? 103 | * 104 | * brief Demo/简单demo 105 | * 106 | 107 | - (void)testNormal 108 | { 109 | __block BearAlertView *bearAlert = [[BearAlertView alloc] init]; 110 | 111 | bearAlert.normalAlertContentView.titleLabel.text = @"温馨提示"; 112 | bearAlert.normalAlertContentView.contentLabel.text = @"My name is Bear. Github ID is BearRan. \nThank you!"; 113 | 114 | [bearAlert alertView_ConfirmClickBlock:^{ 115 | NSLog(@"--confirm"); 116 | } CancelClickBlock:^{ 117 | NSLog(@"--cancel"); 118 | }]; 119 | bearAlert.animationClose_FinishBlock = ^(){ 120 | NSLog(@"--closeAniamtion finish"); 121 | bearAlert = nil; 122 | }; 123 | 124 | AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate]; 125 | [myDelegate.window addSubview:bearAlert]; 126 | } 127 | 128 | */ 129 | 130 | 131 | 132 | /** 133 | * How to use? 134 | * 135 | * UserDefine Demo/自定义demo 136 | * 137 | 138 | - (void)testUserDefine 139 | { 140 | 141 | __block BearAlertView *bearAlert = [[BearAlertView alloc] init]; 142 | 143 | // 自定义ContentView 144 | UIView *tempContentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, WIDTH - 50, 200)]; 145 | tempContentView.backgroundColor = [UIColor orangeColor]; 146 | [bearAlert setContentView:tempContentView]; 147 | 148 | // 自定义BtnsView 149 | UIView *tempBtnsView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tempContentView.width, 40)]; 150 | CGFloat btn_width = floor(tempBtnsView.width / 3.0); 151 | CGFloat btn_height = tempBtnsView.height; 152 | for (int i = 0; i < 3; i++) { 153 | UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, btn_width, btn_height)]; 154 | btn.backgroundColor = [UIColor blueColor]; 155 | [btn setTitle:[NSString stringWithFormat:@"%d", i] forState:UIControlStateNormal]; 156 | [tempBtnsView addSubview:btn]; 157 | [btn addTarget:bearAlert action:@selector(btnEvent:) forControlEvents:UIControlEventTouchUpInside]; 158 | 159 | // 按钮点击回调 160 | [bearAlert alertView_SelectBtn:btn block:^{ 161 | NSLog(@"--clickBtn:%d", i); 162 | }]; 163 | } 164 | [UIView BearAutoLayViewArray:(NSMutableArray *)tempBtnsView.subviews layoutAxis:kLAYOUT_AXIS_X center:YES]; 165 | [bearAlert setBtnsView:tempBtnsView]; 166 | 167 | bearAlert.animationClose_FinishBlock = ^(){ 168 | NSLog(@"--closeAniamtion finish"); 169 | bearAlert = nil; 170 | }; 171 | 172 | AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate]; 173 | [myDelegate.window addSubview:bearAlert]; 174 | } 175 | 176 | **/ 177 | 178 | 179 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertView.m: -------------------------------------------------------------------------------- 1 | // 2 | // BearAlertView.m 3 | // GOSHOPPING 4 | // 5 | // Created by Bear on 16/6/26. 6 | // Copyright © 2016年 cjl. All rights reserved. 7 | // 8 | 9 | #import "BearAlertView.h" 10 | #import 11 | #import "BearDefines.h" 12 | #import "UIView+BearSet.h" 13 | 14 | static const char *const kAlertViewBlockKey = "UDAlertViewBlockKey"; 15 | 16 | static NSString *kAnimationKey_ShowUDAlertView = @"AnimationKey_ShowUDAlertView"; 17 | static NSString *kAnimationKey_CloseUDAlertView = @"AnimationKey_CloseUDAlertView"; 18 | static NSString *kAnimationKey_HideBgView = @"AnimationKey_HideBgView"; 19 | static NSString *kAnimationKey_ShowBgView = @"AnimationKey_ShowBgView"; 20 | static NSString *kAnimationKey_ShowUDAlertViewScale = @"AnimationKey_ShowUDAlertViewScale"; 21 | 22 | 23 | @interface BearAlertView () 24 | 25 | @property (strong, nonatomic) UIView *alertView; 26 | @property (strong, nonatomic) UIView *alertContentView; 27 | @property (strong, nonatomic) UIView *alertBtnsView; 28 | 29 | @property (assign, nonatomic) AlertViewAnimation alertViewAnimation; 30 | @property (copy, nonatomic) AnimationFinishBlock animationFinishBlock; 31 | @property (assign, nonatomic) AlertViewAnimationState alertViewAnimationState; 32 | 33 | @end 34 | 35 | @implementation BearAlertView 36 | 37 | - (instancetype)init 38 | { 39 | return [self initWithAlertCustomType:kAlertViewCustomType_ContentAndBtns]; 40 | } 41 | 42 | - (instancetype)initWithAlertCustomType:(AlertViewCustomType)alertCustomType 43 | { 44 | self = [super init]; 45 | 46 | if (self) { 47 | 48 | _alertViewAnimation = kAlertViewAnimation_VerticalSpring; 49 | _tapBgCancel = YES; 50 | _clickBtnCancel = YES; 51 | _alertViewCustomType = alertCustomType; 52 | 53 | [self createUI]; 54 | } 55 | 56 | return self; 57 | } 58 | 59 | - (void)createUI 60 | { 61 | self.frame = CGRectMake(0, 0, WIDTH, HEIGHT); 62 | 63 | // 背景蒙板View 64 | _bgView = [[UIView alloc] initWithFrame:self.bounds]; 65 | _bgView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.7]; 66 | [self addSubview:_bgView]; 67 | 68 | self.tapBgCancel = NO; 69 | 70 | // AlertView 71 | _alertView = [[UIView alloc] init]; 72 | _alertView.userInteractionEnabled = YES; 73 | _alertView.backgroundColor = [UIColor whiteColor]; 74 | _alertView.layer.cornerRadius = 9.0f; 75 | _alertView.layer.masksToBounds = YES; 76 | [_bgView addSubview:_alertView]; 77 | 78 | switch (_alertViewCustomType) { 79 | case kAlertViewCustomType_ContentAndBtns: 80 | { 81 | // _contentView 82 | _normalAlertContentView = [[BearAlertContentView alloc] init]; 83 | _normalAlertContentView.titleLabel.text = @"请输入一个标题"; 84 | _normalAlertContentView.contentLabel.text = @"请输入正文内容!!!请输入正文内容!!!请输入正文内容!!!请输入正文内容!!!请输入正文内容!!!请输入正文内容!!!请输入正文内容!!!请输入正文内容!!!"; 85 | 86 | // _alertBtnsView 87 | _normalAlertBtnsView = [[BearAlertBtnsView alloc] init]; 88 | [_normalAlertBtnsView setHeight:35]; 89 | _normalAlertBtnsView.userInteractionEnabled = YES; 90 | [_normalAlertBtnsView setNormal_CancelBtnTitle:@"取消" ConfirmBtnTitle:@"确认" ]; 91 | 92 | // 设置AlertView组件 93 | [self setContentView:_normalAlertContentView]; 94 | [self setBtnsView:_normalAlertBtnsView]; 95 | } 96 | break; 97 | 98 | case kAlertViewCustomType_AllDiy: 99 | { 100 | nil; 101 | } 102 | break; 103 | 104 | default: 105 | break; 106 | } 107 | 108 | } 109 | 110 | - (void)layoutSubviews 111 | { 112 | [super layoutSubviews]; 113 | 114 | switch (_alertViewCustomType) { 115 | case kAlertViewCustomType_ContentAndBtns: 116 | { 117 | CGFloat tempY = 0; 118 | CGFloat temp_width = 0; 119 | 120 | // 布局_alertContentView 121 | if (_alertContentView) { 122 | [_alertContentView layoutSubviews]; 123 | tempY = _alertContentView.maxY; 124 | temp_width = _alertContentView.width; 125 | } 126 | 127 | // 布局_alertBtnsView 128 | if (_alertBtnsView) { 129 | [_alertBtnsView setY:tempY]; 130 | [_alertBtnsView setWidth:_alertContentView.width]; 131 | [_alertBtnsView layoutSubviews]; 132 | tempY = _alertBtnsView.maxY; 133 | if (temp_width == 0) { 134 | temp_width = _alertBtnsView.width; 135 | } 136 | } 137 | 138 | // 布局_alertView 139 | _alertView.size = CGSizeMake(temp_width, tempY); 140 | } 141 | break; 142 | 143 | case kAlertViewCustomType_AllDiy: 144 | { 145 | nil; 146 | } 147 | break; 148 | 149 | default: 150 | break; 151 | } 152 | 153 | [_alertView BearSetCenterToParentViewWithAxis:kAXIS_X_Y]; 154 | 155 | // 显示动画 156 | [self animationShow_udAlertView]; 157 | } 158 | 159 | 160 | #pragma mark - 设置AlertView组件 161 | 162 | /** 163 | * 设置contentView 164 | */ 165 | - (void)setContentView:(UIView *)contentView 166 | { 167 | if (_alertContentView) { 168 | [_alertContentView removeFromSuperview]; 169 | _alertContentView = nil; 170 | } 171 | 172 | if (contentView) { 173 | _alertContentView = contentView; 174 | [_alertView addSubview:_alertContentView]; 175 | } 176 | } 177 | 178 | /** 179 | * 设置btnsView 180 | */ 181 | - (void)setBtnsView:(UIView *)btnsView 182 | { 183 | if (_alertBtnsView) { 184 | [_alertBtnsView removeFromSuperview]; 185 | _alertBtnsView = nil; 186 | } 187 | 188 | if (btnsView) { 189 | _alertBtnsView = btnsView; 190 | [_alertView addSubview:_alertBtnsView]; 191 | 192 | if ([_alertBtnsView isKindOfClass:[BearAlertBtnsView class]]) { 193 | BearAlertBtnsView *tempBtnsView = (BearAlertBtnsView *)_alertBtnsView; 194 | // 设置按钮事件 195 | 196 | [_alertView addSubview:tempBtnsView]; 197 | 198 | [tempBtnsView.cancelBtn removeTarget:nil action:nil forControlEvents:UIControlEventAllEvents]; 199 | [tempBtnsView.cancelBtn addTarget:self action:@selector(btnEvent:) forControlEvents:UIControlEventTouchUpInside]; 200 | [tempBtnsView.confirmBtn removeTarget:nil action:nil forControlEvents:UIControlEventAllEvents]; 201 | [tempBtnsView.confirmBtn addTarget:self action:@selector(btnEvent:) forControlEvents:UIControlEventTouchUpInside]; 202 | } 203 | } 204 | } 205 | 206 | // 自定义模式下专用 kAlertViewCustomType_AllDiy 207 | - (void)setAllDiyTypeContentView:(UIView *)contentView 208 | { 209 | if (_alertViewCustomType != kAlertViewCustomType_AllDiy) { 210 | return; 211 | } 212 | 213 | if (contentView) { 214 | 215 | // clean old view 216 | for (UIView *subView in _alertView.subviews) { 217 | [subView removeFromSuperview]; 218 | } 219 | 220 | [_alertView addSubview:contentView]; 221 | _alertView.frame = contentView.bounds; 222 | } 223 | } 224 | 225 | 226 | 227 | #pragma mark - 按钮处理事件 228 | 229 | /** 230 | * 点击按钮block 231 | * 232 | * @param confirmBlock 确认按钮block 233 | * @param cancelBlock 取消按钮block 234 | * @notice 只有BearAlertBtnsView类型的btnsView才可使用该方法 235 | */ 236 | - (void)alertView_ConfirmClickBlock:(kAlertViewBlock)confirmBlock CancelClickBlock:(kAlertViewBlock)cancelBlock 237 | { 238 | if ([_alertBtnsView isKindOfClass:[BearAlertBtnsView class]]) { 239 | BearAlertBtnsView *tempBtnsView = (BearAlertBtnsView *)_alertBtnsView; 240 | 241 | objc_setAssociatedObject(tempBtnsView.confirmBtn, kAlertViewBlockKey, confirmBlock, OBJC_ASSOCIATION_RETAIN); 242 | objc_setAssociatedObject(tempBtnsView.cancelBtn, kAlertViewBlockKey, cancelBlock, OBJC_ASSOCIATION_RETAIN); 243 | } 244 | } 245 | 246 | /** 247 | * 点击按钮block 248 | * 249 | * @param selectBtn 点击的按钮 250 | * @param block 按钮block 251 | * @notice 自定义,非BearAlertBtnsView类型需要单独给按钮调用该方法 252 | */ 253 | - (void)alertView_SelectBtn:(UIButton *)selectBtn block:(kAlertViewBlock)block 254 | { 255 | objc_setAssociatedObject(selectBtn, kAlertViewBlockKey, block, OBJC_ASSOCIATION_RETAIN); 256 | } 257 | 258 | /** 259 | * 添加按钮点击事件 260 | * @notice 自定义,非BearAlertBtnsView类型需要单独给按钮调用该方法 261 | */ 262 | - (void)btnEvent:(UIButton *)sender 263 | { 264 | if (_clickBtnCancel) { 265 | [self animationClose_udAlertView]; 266 | } 267 | 268 | kAlertViewBlock block = objc_getAssociatedObject(sender, kAlertViewBlockKey); 269 | 270 | self.animationFinishBlock = ^{ 271 | if (block) { 272 | block(); 273 | } 274 | }; 275 | } 276 | 277 | /** 278 | * 触摸消失 279 | */ 280 | - (void)bgTappedDismiss 281 | { 282 | [self animationClose_udAlertView]; 283 | } 284 | 285 | - (void)setTapBgCancel:(BOOL)tapBgCancel 286 | { 287 | _tapBgCancel = tapBgCancel; 288 | 289 | if (_tapGesture) { 290 | [_bgView removeGestureRecognizer:_tapGesture]; 291 | } 292 | 293 | if (!tapBgCancel) { 294 | // 触摸手势 295 | _tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(bgTappedDismiss)]; 296 | _tapGesture.numberOfTapsRequired = 1; 297 | [_bgView addGestureRecognizer:_tapGesture]; 298 | } 299 | } 300 | 301 | 302 | 303 | #pragma mark - 动画处理 304 | 305 | /** 306 | * Alertview显现动画 307 | */ 308 | - (void)animationShow_udAlertView 309 | { 310 | 311 | if (_alertViewAnimationState == kAlertViewAnimationState_Process) { 312 | return; 313 | } 314 | 315 | _alertViewAnimationState = kAlertViewAnimationState_Process; 316 | 317 | CGFloat animationTime_bgAlpha = 0.3; 318 | CGFloat animationTime_keyShow = 0.5; 319 | 320 | 321 | // 背景透明度 322 | CABasicAnimation *basicAnimation_bgAlpha = [CABasicAnimation animation]; 323 | basicAnimation_bgAlpha.delegate = self; 324 | basicAnimation_bgAlpha.keyPath = @"opacity"; 325 | basicAnimation_bgAlpha.duration = animationTime_bgAlpha; 326 | basicAnimation_bgAlpha.fromValue = [NSNumber numberWithFloat:0.0f]; 327 | basicAnimation_bgAlpha.toValue = [NSNumber numberWithFloat:1.0f]; 328 | basicAnimation_bgAlpha.removedOnCompletion = NO; 329 | [_bgView.layer addAnimation:basicAnimation_bgAlpha forKey:kAnimationKey_ShowBgView]; 330 | 331 | 332 | switch (_alertViewAnimation) { 333 | 334 | case kAlertViewAnimation_VerticalSpring: 335 | { 336 | // 出现路径 337 | [_alertView setCenter:CGPointMake(_bgView.width/2.0, -_alertView.height/2.0)]; 338 | [UIView animateWithDuration:animationTime_keyShow 339 | delay:animationTime_bgAlpha 340 | usingSpringWithDamping:0.5 341 | initialSpringVelocity:0.7 342 | options:UIViewAnimationOptionCurveEaseInOut 343 | animations:^{ 344 | [_alertView BearSetCenterToParentViewWithAxis:kAXIS_X_Y]; 345 | } 346 | completion:^(BOOL finished) { 347 | _alertViewAnimationState = kAlertViewAnimationState_Null; 348 | }]; 349 | } 350 | break; 351 | 352 | case kAlertViewAnimation_CenterScale: 353 | { 354 | // 出现路径 355 | _alertView.hidden = YES; 356 | [_alertView BearSetCenterToParentViewWithAxis:kAXIS_X_Y]; 357 | 358 | CAKeyframeAnimation *keyFrameAnimation = [CAKeyframeAnimation animation]; 359 | keyFrameAnimation.delegate = self; 360 | keyFrameAnimation.keyPath = @"transform.scale"; 361 | NSArray *array_my = @[@0.2, @1.1, @0.9, @1.0]; 362 | keyFrameAnimation.values = array_my; 363 | keyFrameAnimation.duration = animationTime_keyShow; 364 | keyFrameAnimation.beginTime = CACurrentMediaTime() + animationTime_bgAlpha; 365 | keyFrameAnimation.removedOnCompletion = NO; 366 | keyFrameAnimation.fillMode = kCAFillModeForwards; 367 | [_alertView.layer addAnimation:keyFrameAnimation forKey:kAnimationKey_ShowUDAlertViewScale]; 368 | } 369 | 370 | default: 371 | break; 372 | } 373 | 374 | } 375 | 376 | /** 377 | * AlertView消退动画 378 | */ 379 | - (void)animationClose_udAlertView 380 | { 381 | if (_alertViewAnimationState == kAlertViewAnimationState_Process) { 382 | return; 383 | } 384 | 385 | _alertViewAnimationState = kAlertViewAnimationState_Process; 386 | 387 | CGFloat animationTime_keyClose = 0.3; 388 | CGFloat animationTime_bgAlpha = 0.3; 389 | 390 | switch (_alertViewAnimation) { 391 | 392 | case kAlertViewAnimation_VerticalSpring: 393 | { 394 | 395 | } 396 | break; 397 | 398 | case kAlertViewAnimation_CenterScale: 399 | { 400 | 401 | } 402 | 403 | default: 404 | break; 405 | } 406 | 407 | // 消失路径 408 | UIBezierPath *bezierPath = [UIBezierPath bezierPath]; 409 | [bezierPath moveToPoint:CGPointMake(_bgView.width/2.0, _bgView.height/2.0)]; 410 | [bezierPath addLineToPoint:CGPointMake(_bgView.width/2.0, _bgView.height + _alertView.height)]; 411 | 412 | CAKeyframeAnimation *keyFrameAnimation = [CAKeyframeAnimation animation]; 413 | keyFrameAnimation.delegate = self; 414 | keyFrameAnimation.keyPath = @"position"; 415 | keyFrameAnimation.duration = animationTime_keyClose; 416 | keyFrameAnimation.path = bezierPath.CGPath; 417 | keyFrameAnimation.removedOnCompletion = NO; 418 | keyFrameAnimation.fillMode = kCAFillModeForwards; 419 | [_alertView.layer addAnimation:keyFrameAnimation forKey:kAnimationKey_CloseUDAlertView]; 420 | 421 | 422 | // 背景透明度 423 | CABasicAnimation *basicAnimation_bgAlpha = [CABasicAnimation animation]; 424 | basicAnimation_bgAlpha.delegate = self; 425 | basicAnimation_bgAlpha.keyPath = @"opacity"; 426 | basicAnimation_bgAlpha.duration = animationTime_bgAlpha; 427 | basicAnimation_bgAlpha.fromValue = [NSNumber numberWithFloat:1.0]; 428 | basicAnimation_bgAlpha.toValue = [NSNumber numberWithFloat:0.0]; 429 | basicAnimation_bgAlpha.beginTime = CACurrentMediaTime() + animationTime_keyClose; 430 | basicAnimation_bgAlpha.removedOnCompletion = NO; 431 | basicAnimation_bgAlpha.fillMode = kCAFillModeForwards; 432 | [_bgView.layer addAnimation:basicAnimation_bgAlpha forKey:kAnimationKey_HideBgView]; 433 | } 434 | 435 | 436 | // Animation Delegate 437 | - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag 438 | { 439 | if ([anim isEqual:[_alertView.layer animationForKey:kAnimationKey_ShowUDAlertView]]) { 440 | 441 | _alertViewAnimationState = kAlertViewAnimationState_Null; 442 | 443 | [_alertView BearSetCenterToParentViewWithAxis:kAXIS_X_Y]; 444 | [_alertView.layer removeAnimationForKey:kAnimationKey_ShowUDAlertView]; 445 | } 446 | 447 | 448 | else if ([anim isEqual:[_alertView.layer animationForKey:kAnimationKey_CloseUDAlertView]]){ 449 | 450 | [_alertView.layer removeAnimationForKey:kAnimationKey_CloseUDAlertView]; 451 | [_alertView removeFromSuperview]; 452 | } 453 | 454 | 455 | else if ([anim isEqual:[_bgView.layer animationForKey:kAnimationKey_ShowBgView]]){ 456 | 457 | [_bgView.layer removeAnimationForKey:kAnimationKey_ShowBgView]; 458 | 459 | if (_alertViewAnimation == kAlertViewAnimation_CenterScale) { 460 | _alertView.hidden = NO; 461 | } 462 | 463 | } 464 | 465 | 466 | else if ([anim isEqual:[_bgView.layer animationForKey:kAnimationKey_HideBgView]]){ 467 | 468 | _alertViewAnimationState = kAlertViewAnimationState_Null; 469 | 470 | [_bgView.layer removeAnimationForKey:kAnimationKey_HideBgView]; 471 | [_bgView removeFromSuperview]; 472 | [self removeFromSuperview]; 473 | 474 | if (self.animationFinishBlock) { 475 | self.animationFinishBlock(); 476 | } 477 | 478 | if (self.animationClose_FinishBlock) { 479 | self.animationClose_FinishBlock(); 480 | } 481 | } 482 | 483 | 484 | else if ([anim isEqual:[_alertView.layer animationForKey:kAnimationKey_ShowUDAlertViewScale]]){ 485 | 486 | _alertViewAnimationState = kAlertViewAnimationState_Null; 487 | 488 | [_alertView.layer removeAnimationForKey:kAnimationKey_ShowUDAlertViewScale]; 489 | } 490 | 491 | } 492 | 493 | 494 | 495 | @end 496 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/BearBezierPath.h: -------------------------------------------------------------------------------- 1 | // 2 | // BearBezierPath.h 3 | // AirPlaneAnimation 4 | // 5 | // Created by apple on 16/10/30. 6 | // Copyright © 2016年 Bear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BearBezierPath : UIBezierPath 12 | 13 | @property (assign, nonatomic) CGFloat scaleRatio; // 所有点坐标的缩放比例 14 | @property (assign, nonatomic) CGPoint offSetPoint; // 所有点坐标的偏移 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/BearBezierPath.m: -------------------------------------------------------------------------------- 1 | // 2 | // BearBezierPath.m 3 | // AirPlaneAnimation 4 | // 5 | // Created by apple on 16/10/30. 6 | // Copyright © 2016年 Bear. All rights reserved. 7 | // 8 | 9 | #import "BearBezierPath.h" 10 | 11 | @implementation BearBezierPath 12 | 13 | - (instancetype)init 14 | { 15 | self = [super init]; 16 | 17 | if (self) { 18 | _scaleRatio = 1.0; 19 | _offSetPoint = CGPointMake(0, 0); 20 | } 21 | 22 | return self; 23 | } 24 | 25 | - (void)moveToPoint:(CGPoint)point 26 | { 27 | [super moveToPoint:[self bearConvertPoint:point]]; 28 | } 29 | 30 | - (void)addLineToPoint:(CGPoint)point 31 | { 32 | [super addLineToPoint:[self bearConvertPoint:point]]; 33 | } 34 | 35 | - (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2 36 | { 37 | [super addCurveToPoint:[self bearConvertPoint:endPoint] 38 | controlPoint1:[self bearConvertPoint:controlPoint1] 39 | controlPoint2:[self bearConvertPoint:controlPoint2]]; 40 | } 41 | 42 | - (CGPoint)bearConvertPoint:(CGPoint)point 43 | { 44 | CGPoint convertPoint = CGPointMake(point.x * _scaleRatio + _offSetPoint.x, 45 | point.y * _scaleRatio + _offSetPoint.y); 46 | 47 | return convertPoint; 48 | } 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/BearCutOutView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BearCutOutView.h 3 | // TestCutOut 4 | // 5 | // Created by apple on 16/6/7. 6 | // Copyright © 2016年 qiantu. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BearCutOutView : UIView 12 | 13 | - (void)setUnCutColor:(UIColor *)unCutColor cutOutFrame:(CGRect)cutOutFrame; 14 | - (void)setUnCutColor:(UIColor *)unCutColor cutOutPath:(UIBezierPath *)cutOutPath; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/BearCutOutView.m: -------------------------------------------------------------------------------- 1 | // 2 | // BearCutOutView.m 3 | // TestCutOut 4 | // 5 | // Created by apple on 16/6/7. 6 | // Copyright © 2016年 qiantu. All rights reserved. 7 | // 8 | 9 | #import "BearCutOutView.h" 10 | 11 | @interface BearCutOutView () 12 | 13 | @property (nonatomic, retain) UIColor *unCutColor; 14 | @property (nonatomic, retain) NSValue *cutOutFrame; 15 | @property (nonatomic, retain) UIBezierPath *cutOutBezierPath; 16 | 17 | @end 18 | 19 | @implementation BearCutOutView 20 | 21 | - (instancetype)initWithFrame:(CGRect)frame 22 | { 23 | self = [super initWithFrame:frame]; 24 | 25 | if (self) { 26 | self.backgroundColor = [UIColor clearColor]; 27 | } 28 | 29 | return self; 30 | } 31 | 32 | - (instancetype)init 33 | { 34 | self = [super init]; 35 | 36 | if (self) { 37 | self.backgroundColor = [UIColor clearColor]; 38 | } 39 | 40 | return self; 41 | } 42 | 43 | - (void)drawRect:(CGRect)rect 44 | { 45 | [super drawRect:rect]; 46 | 47 | if (self.unCutColor) { 48 | 49 | [self.unCutColor setFill]; 50 | UIRectFill(rect); 51 | 52 | CGContextRef context = UIGraphicsGetCurrentContext(); 53 | CGContextSetBlendMode(context, kCGBlendModeDestinationOut); 54 | 55 | UIBezierPath *path; 56 | 57 | if (self.cutOutFrame) { 58 | path = [UIBezierPath bezierPathWithRect:[self.cutOutFrame CGRectValue]]; 59 | } 60 | else if (self.cutOutBezierPath){ 61 | path = self.cutOutBezierPath; 62 | } 63 | 64 | [path fill]; 65 | 66 | CGContextSetBlendMode(context, kCGBlendModeNormal); 67 | } 68 | } 69 | 70 | - (void)setUnCutColor:(UIColor *)unCutColor cutOutFrame:(CGRect)cutOutFrame 71 | { 72 | self.unCutColor = unCutColor; 73 | self.cutOutFrame = [NSValue valueWithCGRect:cutOutFrame]; 74 | 75 | [self setNeedsDisplay]; 76 | } 77 | 78 | - (void)setUnCutColor:(UIColor *)unCutColor cutOutPath:(UIBezierPath *)cutOutPath 79 | { 80 | self.unCutColor = unCutColor; 81 | self.cutOutBezierPath = cutOutPath; 82 | 83 | [self setNeedsDisplay]; 84 | } 85 | 86 | @end 87 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/UILabel+BearSet.h: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+BearSet.h 3 | // Bear 4 | // 5 | // Created by Bear on 30/12/24. 6 | // Copyright © 2015年 Bear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UILabel (BearSet) 12 | 13 | // 获取label的宽度 14 | + (CGFloat )getTitleTextWidth:(NSString *)title font:(UIFont *)font; 15 | 16 | // 根据宽度自适应 17 | - (void)setLabelSizeToFitWidth:(int)width; 18 | 19 | // 中心不变,自适应 20 | - (void)sizeToFit_DonotMoveCenter; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/UILabel+BearSet.m: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+BearSet.m 3 | // Bear 4 | // 5 | // Created by Bear on 30/12/24. 6 | // Copyright © 2015年 Bear. All rights reserved. 7 | // 8 | 9 | #import "UILabel+BearSet.h" 10 | #import "UIView+BearSet.h" 11 | 12 | @implementation UILabel (BearSet) 13 | 14 | // 获取label文字的宽度 15 | + (CGFloat )getTitleTextWidth:(NSString *)title font:(UIFont *)font 16 | { 17 | CGFloat titleWidth; 18 | 19 | UILabel *tempLabel = [[UILabel alloc] init]; 20 | tempLabel.text = title; 21 | tempLabel.font = font; 22 | [tempLabel sizeToFit]; 23 | titleWidth = CGRectGetWidth(tempLabel.frame); 24 | 25 | return titleWidth; 26 | } 27 | 28 | // 根据宽度自适应 29 | - (void)setLabelSizeToFitWidth:(int)width 30 | { 31 | [self setWidth:0]; 32 | [self setHeight:0]; 33 | self.numberOfLines = 0; 34 | [self sizeToFit]; 35 | CGFloat textHeight = CGRectGetHeight(self.frame); 36 | int label_Width = [UILabel getTitleTextWidth:self.text font:self.font]; 37 | int rows = ((label_Width % width) == 0 ? label_Width/width: label_Width/width+1); 38 | [self setWidth:width]; 39 | [self setHeight:rows * textHeight]; 40 | } 41 | 42 | // 中心不变,自适应 43 | - (void)sizeToFit_DonotMoveCenter 44 | { 45 | CGPoint tempCenter = self.center; 46 | [self sizeToFit]; 47 | self.center = tempCenter; 48 | } 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/UITextField+BearLimitLength.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+BearLimitLength.h 3 | // Pods 4 | // 5 | // Created by apple on 16/6/8. 6 | // 7 | // 8 | 9 | #import 10 | 11 | typedef void (^LimitDone_Block)(); 12 | 13 | @interface UITextField (BearLimitLength) 14 | 15 | @property (copy, nonatomic) NSNumber *limitLength; 16 | @property (copy, nonatomic) LimitDone_Block limitDone_block; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/BearSkill/Pod/UIAndExtend/UITextField+BearLimitLength.m: -------------------------------------------------------------------------------- 1 | 2 | // 3 | // UITextField+BearLimitLength.m 4 | // Pods 5 | // 6 | // Created by apple on 16/6/8. 7 | // 8 | // 9 | 10 | #import "UITextField+BearLimitLength.h" 11 | #import 12 | #import 13 | 14 | static const void *limitLengthKey = &limitLengthKey; 15 | static const void *limitBlockKey = &limitBlockKey; 16 | 17 | @implementation UITextField (BearLimitLength) 18 | 19 | 20 | // limitLength set&get 21 | - (NSNumber *)limitLength 22 | { 23 | return objc_getAssociatedObject(self, limitLengthKey); 24 | } 25 | 26 | - (void)setLimitLength:(NSNumber *)limitLength 27 | { 28 | objc_setAssociatedObject(self, limitLengthKey, limitLength, OBJC_ASSOCIATION_COPY_NONATOMIC); 29 | 30 | [self addLimitLengthObserver:[limitLength intValue]]; 31 | } 32 | 33 | 34 | // limitBlock set&get 35 | - (LimitDone_Block)limitDone_block 36 | { 37 | return objc_getAssociatedObject(self, limitBlockKey); 38 | } 39 | 40 | - (void)setLimitDone_block:(LimitDone_Block)limitDone_block 41 | { 42 | objc_setAssociatedObject(self, limitBlockKey, limitDone_block, OBJC_ASSOCIATION_COPY_NONATOMIC); 43 | } 44 | 45 | 46 | // 增加限制位数的通知 47 | - (void)addLimitLengthObserver:(int)length 48 | { 49 | [self addTarget:self action:@selector(limitLengthEvent) forControlEvents:UIControlEventEditingChanged]; 50 | } 51 | 52 | // 限制输入的位数 53 | - (void)limitLengthEvent 54 | { 55 | if ([self.text length] >= [self.limitLength intValue]) { 56 | self.text = [self.text substringToIndex:[self.limitLength intValue]]; 57 | 58 | if (self.limitDone_block) { 59 | self.limitDone_block(); 60 | } 61 | } 62 | } 63 | 64 | 65 | // dealloc替换 66 | // 参考:https://github.com/zhigang1992/ZGParallelView/issues/8 67 | + (void)load 68 | { 69 | Method origMethod = class_getInstanceMethod([self class], NSSelectorFromString(@"dealloc")); 70 | Method newMethod = class_getInstanceMethod([self class], @selector(my_dealloc)); 71 | method_exchangeImplementations(origMethod, newMethod); 72 | } 73 | 74 | - (void)my_dealloc 75 | { 76 | // do your logic here 77 | [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:self]; 78 | 79 | //this calls original dealloc method 80 | [self my_dealloc]; 81 | } 82 | 83 | @end 84 | -------------------------------------------------------------------------------- /Pods/BearSkill/README.md: -------------------------------------------------------------------------------- 1 | # BearSkill Origin 2 | 3 | # README 4 | 5 | # BearSkill 6 | 7 | [![CI Status](http://img.shields.io/travis/Bear/BearSkill.svg?style=flat)](https://travis-ci.org/Bear/BearSkill) 8 | [![Version](https://img.shields.io/cocoapods/v/BearSkill.svg?style=flat)](http://cocoapods.org/pods/BearSkill) 9 | [![License](https://img.shields.io/cocoapods/l/BearSkill.svg?style=flat)](http://cocoapods.org/pods/BearSkill) 10 | [![Platform](https://img.shields.io/cocoapods/p/BearSkill.svg?style=flat)](http://cocoapods.org/pods/BearSkill) 11 | 12 | ## Installation 13 | 14 | BearSkill is available through [CocoaPods](http://cocoapods.org). To install 15 | it, simply add the following line to your Podfile: 16 | 17 | ```ruby 18 | pod "BearSkill" 19 | ``` 20 | 21 | ## Author 22 | 23 | Bear, 648070256@qq.com 24 | 25 | ## License 26 | 27 | BearSkill is available under the MIT license. See the LICENSE file for more info. 28 | 29 | Introduction 30 | ------------ 31 | 32 | ### 简介: 33 | 平时的工作总结,从UIView到布局,从富文本处理到图形切割,各种都有。 34 | 争取分好类。每个部分都有一个简短的介绍,有意见,建议欢迎沟通QQ:648070256。 35 | 36 | ## Constants / 常用常量和方法 37 | * BearConstants 38 | * iOS开发中常用的各种方法,常量。屏幕宽高,UserDefault宏等 39 | 40 | 41 | ## Layout / 非约束性布局 42 | * UIView+BearSet 43 | * 非约束性布局和一些常用的布局思路 44 | * 详情见链接:http://blog.csdn.net/xiongbaoxr/article/details/50668260 45 | 46 | * UITableView+BearStoreCellHeight 47 | * UITableView自动记录Cell高度,获取cell高度,告别手动管理 48 | 49 | 50 | 51 | ## UI&Extend / UI和扩展 52 | * BearAlertView 53 | * 自定义弹框,支持自定义contentView,自定义BtnsView,支持简单的动画样式 54 | 55 | * BearCutOutView 56 | * 对UIView挖空特定的形状 57 | 58 | * UITextField+BearLimitLength 59 | * 限制UITextField输入字符数量 60 | * 详情见链接:http://blog.csdn.net/xiongbaoxr/article/details/51525061 61 | 62 | 63 | 64 | ## AttributeString / 富文本处理 65 | * NSMutableAttributedString+BearSet 66 | * 便携式富文本处理,支持正则表达式。也可直接设置行间距。 67 | 68 | 69 | 70 | --- 71 | # 历史版本: 72 | * 0.1.0 73 | 1. 新增BearCutOutView挖空UIView的方法 74 | 2. 将原先UITextField+BearSet方法整理更名为UITextField+BearLimitLength,并保留原来名称兼容此前版本 75 | 3. 整理项目结构并进行分类 76 | * 0.1.1 77 | 1. 增加BearAlertView自定义弹框方法 -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/ApplicationOpenURLManager.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/Constants/ApplicationOpenURLManager.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/BearAlertBtnsView.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertBtnsView.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/BearAlertContentView.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertContentView.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/BearAlertView.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertView.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/BearBezierPath.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/BearBezierPath.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/BearConstants.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/Constants/BearConstants.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/BearCutOutView.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/BearCutOutView.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/BearDefines.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/BearDefines/BearDefines.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/NSMutableAttributedString+BearSet.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/AttributeString/NSMutableAttributedString+BearSet.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/UILabel+BearSet.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/UILabel+BearSet.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/UITableView+BearStoreCellHeight.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/Layout/UITableView+BearStoreCellHeight.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/UITextField+BearLimitLength.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/UITextField+BearLimitLength.h -------------------------------------------------------------------------------- /Pods/Headers/Private/BearSkill/UIView+BearSet.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/Layout/UIView+BearSet.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/ApplicationOpenURLManager.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/Constants/ApplicationOpenURLManager.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/BearAlertBtnsView.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertBtnsView.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/BearAlertContentView.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertContentView.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/BearAlertView.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/BearAlertView/BearAlertView.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/BearBezierPath.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/BearBezierPath.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/BearConstants.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/Constants/BearConstants.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/BearCutOutView.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/BearCutOutView.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/BearDefines.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/BearDefines/BearDefines.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/NSMutableAttributedString+BearSet.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/AttributeString/NSMutableAttributedString+BearSet.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/UILabel+BearSet.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/UILabel+BearSet.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/UITableView+BearStoreCellHeight.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/Layout/UITableView+BearStoreCellHeight.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/UITextField+BearLimitLength.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/UIAndExtend/UITextField+BearLimitLength.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BearSkill/UIView+BearSet.h: -------------------------------------------------------------------------------- 1 | ../../../BearSkill/Pod/Layout/UIView+BearSet.h -------------------------------------------------------------------------------- /Pods/Local Podspecs/BearSkill.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BearSkill", 3 | "version": "0.2.0", 4 | "summary": "BearSkill contain some methods used frequently in project.", 5 | "description": "BearSkill contain some methods used frequently in project. And many other methods about layout.", 6 | "homepage": "https://github.com/BearRan/BearSkill", 7 | "license": "MIT", 8 | "authors": { 9 | "Bear": "648070256@qq.com" 10 | }, 11 | "source": { 12 | "git": "https://github.com/BearRan/BearSkill.git", 13 | "tag": "0.2.0" 14 | }, 15 | "platforms": { 16 | "ios": "7.0" 17 | }, 18 | "requires_arc": true, 19 | "subspecs": [ 20 | { 21 | "name": "UIAndExtend", 22 | "source_files": "Pod/UIAndExtend/**/*" 23 | }, 24 | { 25 | "name": "Layout", 26 | "source_files": "Pod/Layout/*" 27 | }, 28 | { 29 | "name": "Constants", 30 | "source_files": "Pod/Constants/*" 31 | }, 32 | { 33 | "name": "AttributeString", 34 | "source_files": "Pod/AttributeString/*" 35 | }, 36 | { 37 | "name": "BearDefines", 38 | "source_files": "Pod/BearDefines/*" 39 | } 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - BearSkill (0.2.0): 3 | - BearSkill/AttributeString (= 0.2.0) 4 | - BearSkill/BearDefines (= 0.2.0) 5 | - BearSkill/Constants (= 0.2.0) 6 | - BearSkill/Layout (= 0.2.0) 7 | - BearSkill/UIAndExtend (= 0.2.0) 8 | - BearSkill/AttributeString (0.2.0) 9 | - BearSkill/BearDefines (0.2.0) 10 | - BearSkill/Constants (0.2.0) 11 | - BearSkill/Layout (0.2.0) 12 | - BearSkill/UIAndExtend (0.2.0) 13 | 14 | DEPENDENCIES: 15 | - BearSkill (from `https://github.com/BearRan/BearSkill.git`, commit `c05378a`) 16 | 17 | EXTERNAL SOURCES: 18 | BearSkill: 19 | :commit: c05378a 20 | :git: https://github.com/BearRan/BearSkill.git 21 | 22 | CHECKOUT OPTIONS: 23 | BearSkill: 24 | :commit: c05378a 25 | :git: https://github.com/BearRan/BearSkill.git 26 | 27 | SPEC CHECKSUMS: 28 | BearSkill: 4ff376466be491e7e1f91ad38f5d871e3b7feaf5 29 | 30 | PODFILE CHECKSUM: 92c9703a3a14fc864809673f11cddbc391614ed9 31 | 32 | COCOAPODS: 1.2.1 33 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 017C00A71D65582967425BF04D8CD12F /* UILabel+BearSet.m in Sources */ = {isa = PBXBuildFile; fileRef = B07FEA110BE70B31373129A3C1CDB11B /* UILabel+BearSet.m */; }; 11 | 104158E89769DCB9188B527C13901D28 /* BearAlertContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 472C4818F0FD10803AF90BAA75A81F62 /* BearAlertContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 12 | 11B5B0CB423B4E34E2D4F46B22F929A7 /* ApplicationOpenURLManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B3EB2DB316C2185F37AEBF8863A38DBC /* ApplicationOpenURLManager.m */; }; 13 | 134BB05E3640CB9080E445412DC245C1 /* UIView+BearSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFFFEF462A0DF14BB16EA0CB36565D7 /* UIView+BearSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | 1CB82BC4E95337BB5A87F42D5ECFF809 /* BearAlertContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1752997E6B6C5F611F24FBC9213C086C /* BearAlertContentView.m */; }; 15 | 2263F0110B58F36F06323CDEE5E613B3 /* UITextField+BearLimitLength.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F72FB394658EDA3555DF0327B8F0745 /* UITextField+BearLimitLength.m */; }; 16 | 2A16A49CB9960B06002184A517D92144 /* UILabel+BearSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 99029E5D8F02FD9527F26F897F90EC14 /* UILabel+BearSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; 17 | 3C23DBF6BC97167CE0B5304DCBD19D3C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; }; 18 | 453417035B3AB5AEF34901F544213834 /* UITableView+BearStoreCellHeight.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E98C6CB4EF98973935EF0D314488E04 /* UITableView+BearStoreCellHeight.m */; }; 19 | 5219DE4ACD3E56A6C15148FC43001AE9 /* Pods-CRIconView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F9A5D36410C2E2AEDC839E7D632C64A /* Pods-CRIconView-dummy.m */; }; 20 | 563792FB3DD8231031E4BE531F90D4F5 /* BearConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 7240F7E5F274CA2023377128CD4AC62D /* BearConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; 21 | 57D676441A04E1623805649027DB8400 /* UITableView+BearStoreCellHeight.h in Headers */ = {isa = PBXBuildFile; fileRef = DFE6A48EE574182E82C2E563E6D41838 /* UITableView+BearStoreCellHeight.h */; settings = {ATTRIBUTES = (Public, ); }; }; 22 | 5C10719DAF382D38423178F44E0EF48C /* NSMutableAttributedString+BearSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 63973857CEFABAD31168A7FEC1985C94 /* NSMutableAttributedString+BearSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; 23 | 68A26BC1B48271BBCE19E81CE3766343 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; }; 24 | 72EEAB76711C50948C2FAF6BAEFC1829 /* UIView+BearSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 94B548F4D199B2A7A5C99596A012BAFC /* UIView+BearSet.m */; }; 25 | 78A34DEAFCE4C5B40185543B3D97EE89 /* BearAlertView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C51BC11C24646F58EEF513A8EDB006F /* BearAlertView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 26 | 7E3AECFBF64F432244CB805777C84D4A /* BearCutOutView.m in Sources */ = {isa = PBXBuildFile; fileRef = 299F318DBCC950191A79A10934AF1138 /* BearCutOutView.m */; }; 27 | 90190F67A5C8C65B2D1C0222CB4CCCC3 /* BearBezierPath.m in Sources */ = {isa = PBXBuildFile; fileRef = FC10E4F26F4B205F2C1A1981D2F5B96A /* BearBezierPath.m */; }; 28 | A29499AE22C0A3975FCA535821238BB9 /* BearDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 984EF18EBC9FE1AFC03F62601201148F /* BearDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; 29 | A6B15AA23C22261EB0057562D379E845 /* ApplicationOpenURLManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C4D759C340A454B80FA438D9C69F4B65 /* ApplicationOpenURLManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; 30 | B915DE695A3F0CCAD26544438DE382B3 /* BearAlertBtnsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 176A75C73898B8BB7EBC9E7E218D0BAF /* BearAlertBtnsView.m */; }; 31 | B9E1B844C299497713DEF3FE9D980892 /* BearConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D4E1E4093D73BB7E6F5DB1D3968526C /* BearConstants.m */; }; 32 | BC18FBCC4E2E0017CB97ECB26CA77236 /* BearBezierPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B5605E8D8D1E0B164F885D1CA94ACD5 /* BearBezierPath.h */; settings = {ATTRIBUTES = (Public, ); }; }; 33 | BD25E63CB152781018550A0284B43678 /* BearSkill-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A1EC4E88491D090CB7D87B93DF9028D /* BearSkill-dummy.m */; }; 34 | BFAC5A77D386DC467FDE716269E6F735 /* BearCutOutView.h in Headers */ = {isa = PBXBuildFile; fileRef = EC34E69E269614951FFFD6AC37577162 /* BearCutOutView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 35 | CA19AFD5360AD487FFF89A57F3ADE353 /* BearAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 70A7A556953468F168543B81E0F997FB /* BearAlertView.m */; }; 36 | DFEA8695C636F2360D13209A3E391E33 /* UITextField+BearLimitLength.h in Headers */ = {isa = PBXBuildFile; fileRef = 784B724A716F30861691C2E171D7E3D7 /* UITextField+BearLimitLength.h */; settings = {ATTRIBUTES = (Public, ); }; }; 37 | EE58DB23DC3ABC2957B99AEA74C6ED9A /* BearAlertBtnsView.h in Headers */ = {isa = PBXBuildFile; fileRef = C85E8EB4CBE17FBC5F036F10CC735F16 /* BearAlertBtnsView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38 | F03DB0FEA5D8AFEB561F683F6317BB35 /* NSMutableAttributedString+BearSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BDB9E826DF32F4EA29610489742AC90 /* NSMutableAttributedString+BearSet.m */; }; 39 | /* End PBXBuildFile section */ 40 | 41 | /* Begin PBXContainerItemProxy section */ 42 | 2E205469B0567777F1243907430F7BD7 /* PBXContainerItemProxy */ = { 43 | isa = PBXContainerItemProxy; 44 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 45 | proxyType = 1; 46 | remoteGlobalIDString = 20E2DE86A4B3D5EFA27C2634656D2D34; 47 | remoteInfo = BearSkill; 48 | }; 49 | /* End PBXContainerItemProxy section */ 50 | 51 | /* Begin PBXFileReference section */ 52 | 07D9A4176EF7D71A187CD13A6C208C0E /* libBearSkill.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libBearSkill.a; path = libBearSkill.a; sourceTree = BUILT_PRODUCTS_DIR; }; 53 | 1752997E6B6C5F611F24FBC9213C086C /* BearAlertContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BearAlertContentView.m; path = Pod/UIAndExtend/BearAlertView/BearAlertContentView.m; sourceTree = ""; }; 54 | 176A75C73898B8BB7EBC9E7E218D0BAF /* BearAlertBtnsView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BearAlertBtnsView.m; path = Pod/UIAndExtend/BearAlertView/BearAlertBtnsView.m; sourceTree = ""; }; 55 | 299F318DBCC950191A79A10934AF1138 /* BearCutOutView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BearCutOutView.m; path = Pod/UIAndExtend/BearCutOutView.m; sourceTree = ""; }; 56 | 3EB8A2532D462B18FB12ADF5A88B916C /* libPods-CRIconView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-CRIconView.a"; path = "libPods-CRIconView.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 57 | 3F9A5D36410C2E2AEDC839E7D632C64A /* Pods-CRIconView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CRIconView-dummy.m"; sourceTree = ""; }; 58 | 472C4818F0FD10803AF90BAA75A81F62 /* BearAlertContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BearAlertContentView.h; path = Pod/UIAndExtend/BearAlertView/BearAlertContentView.h; sourceTree = ""; }; 59 | 482683E7F6F8E50CAD36D0302BAEA386 /* Pods-CRIconView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CRIconView.debug.xcconfig"; sourceTree = ""; }; 60 | 4D4E1E4093D73BB7E6F5DB1D3968526C /* BearConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BearConstants.m; path = Pod/Constants/BearConstants.m; sourceTree = ""; }; 61 | 51F656072FBEBD630DBD4FBB5A19664C /* Pods-CRIconView-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CRIconView-frameworks.sh"; sourceTree = ""; }; 62 | 5B5605E8D8D1E0B164F885D1CA94ACD5 /* BearBezierPath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BearBezierPath.h; path = Pod/UIAndExtend/BearBezierPath.h; sourceTree = ""; }; 63 | 5BDB9E826DF32F4EA29610489742AC90 /* NSMutableAttributedString+BearSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableAttributedString+BearSet.m"; path = "Pod/AttributeString/NSMutableAttributedString+BearSet.m"; sourceTree = ""; }; 64 | 5E98C6CB4EF98973935EF0D314488E04 /* UITableView+BearStoreCellHeight.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+BearStoreCellHeight.m"; path = "Pod/Layout/UITableView+BearStoreCellHeight.m"; sourceTree = ""; }; 65 | 5EB09FD3EB8D655718889CDB3FE2B1FA /* BearSkill.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BearSkill.xcconfig; sourceTree = ""; }; 66 | 5F72FB394658EDA3555DF0327B8F0745 /* UITextField+BearLimitLength.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+BearLimitLength.m"; path = "Pod/UIAndExtend/UITextField+BearLimitLength.m"; sourceTree = ""; }; 67 | 63973857CEFABAD31168A7FEC1985C94 /* NSMutableAttributedString+BearSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableAttributedString+BearSet.h"; path = "Pod/AttributeString/NSMutableAttributedString+BearSet.h"; sourceTree = ""; }; 68 | 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 69 | 7045DA3409CCD381539EB3230A34AB7B /* Pods-CRIconView-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-CRIconView-resources.sh"; sourceTree = ""; }; 70 | 70A7A556953468F168543B81E0F997FB /* BearAlertView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BearAlertView.m; path = Pod/UIAndExtend/BearAlertView/BearAlertView.m; sourceTree = ""; }; 71 | 7240F7E5F274CA2023377128CD4AC62D /* BearConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BearConstants.h; path = Pod/Constants/BearConstants.h; sourceTree = ""; }; 72 | 784B724A716F30861691C2E171D7E3D7 /* UITextField+BearLimitLength.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+BearLimitLength.h"; path = "Pod/UIAndExtend/UITextField+BearLimitLength.h"; sourceTree = ""; }; 73 | 7A1EC4E88491D090CB7D87B93DF9028D /* BearSkill-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BearSkill-dummy.m"; sourceTree = ""; }; 74 | 7AFFFEF462A0DF14BB16EA0CB36565D7 /* UIView+BearSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+BearSet.h"; path = "Pod/Layout/UIView+BearSet.h"; sourceTree = ""; }; 75 | 8C51BC11C24646F58EEF513A8EDB006F /* BearAlertView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BearAlertView.h; path = Pod/UIAndExtend/BearAlertView/BearAlertView.h; sourceTree = ""; }; 76 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 77 | 94B548F4D199B2A7A5C99596A012BAFC /* UIView+BearSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+BearSet.m"; path = "Pod/Layout/UIView+BearSet.m"; sourceTree = ""; }; 78 | 984EF18EBC9FE1AFC03F62601201148F /* BearDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BearDefines.h; path = Pod/BearDefines/BearDefines.h; sourceTree = ""; }; 79 | 99029E5D8F02FD9527F26F897F90EC14 /* UILabel+BearSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+BearSet.h"; path = "Pod/UIAndExtend/UILabel+BearSet.h"; sourceTree = ""; }; 80 | 9BDA5655DC151730F6F789D5ADC1FC4E /* Pods-CRIconView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CRIconView.release.xcconfig"; sourceTree = ""; }; 81 | A7F3579B82E3FEDA53392A841028F247 /* Pods-CRIconView-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CRIconView-acknowledgements.markdown"; sourceTree = ""; }; 82 | B07FEA110BE70B31373129A3C1CDB11B /* UILabel+BearSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+BearSet.m"; path = "Pod/UIAndExtend/UILabel+BearSet.m"; sourceTree = ""; }; 83 | B3EB2DB316C2185F37AEBF8863A38DBC /* ApplicationOpenURLManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ApplicationOpenURLManager.m; path = Pod/Constants/ApplicationOpenURLManager.m; sourceTree = ""; }; 84 | B3F49ABF5D097C7FD1118FA3B90C8948 /* BearSkill-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BearSkill-prefix.pch"; sourceTree = ""; }; 85 | C4D759C340A454B80FA438D9C69F4B65 /* ApplicationOpenURLManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ApplicationOpenURLManager.h; path = Pod/Constants/ApplicationOpenURLManager.h; sourceTree = ""; }; 86 | C85E8EB4CBE17FBC5F036F10CC735F16 /* BearAlertBtnsView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BearAlertBtnsView.h; path = Pod/UIAndExtend/BearAlertView/BearAlertBtnsView.h; sourceTree = ""; }; 87 | D8866ADEF0F1777CFEF8495709B035B3 /* Pods-CRIconView-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CRIconView-acknowledgements.plist"; sourceTree = ""; }; 88 | DFE6A48EE574182E82C2E563E6D41838 /* UITableView+BearStoreCellHeight.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+BearStoreCellHeight.h"; path = "Pod/Layout/UITableView+BearStoreCellHeight.h"; sourceTree = ""; }; 89 | EC34E69E269614951FFFD6AC37577162 /* BearCutOutView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BearCutOutView.h; path = Pod/UIAndExtend/BearCutOutView.h; sourceTree = ""; }; 90 | FC10E4F26F4B205F2C1A1981D2F5B96A /* BearBezierPath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BearBezierPath.m; path = Pod/UIAndExtend/BearBezierPath.m; sourceTree = ""; }; 91 | /* End PBXFileReference section */ 92 | 93 | /* Begin PBXFrameworksBuildPhase section */ 94 | 347F111F5ABE8DFE8912830344BE35DA /* Frameworks */ = { 95 | isa = PBXFrameworksBuildPhase; 96 | buildActionMask = 2147483647; 97 | files = ( 98 | 3C23DBF6BC97167CE0B5304DCBD19D3C /* Foundation.framework in Frameworks */, 99 | ); 100 | runOnlyForDeploymentPostprocessing = 0; 101 | }; 102 | B37CC273BDF5540C89A6B4E1FECF55BB /* Frameworks */ = { 103 | isa = PBXFrameworksBuildPhase; 104 | buildActionMask = 2147483647; 105 | files = ( 106 | 68A26BC1B48271BBCE19E81CE3766343 /* Foundation.framework in Frameworks */, 107 | ); 108 | runOnlyForDeploymentPostprocessing = 0; 109 | }; 110 | /* End PBXFrameworksBuildPhase section */ 111 | 112 | /* Begin PBXGroup section */ 113 | 14C8A59020C37399E7EB1E0BD945C873 /* Products */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | 07D9A4176EF7D71A187CD13A6C208C0E /* libBearSkill.a */, 117 | 3EB8A2532D462B18FB12ADF5A88B916C /* libPods-CRIconView.a */, 118 | ); 119 | name = Products; 120 | sourceTree = ""; 121 | }; 122 | 182909BF937C355ADF879D78F8BE1C3A /* Pods */ = { 123 | isa = PBXGroup; 124 | children = ( 125 | 559D0540C168DA2BEA6E880E0DC0FE50 /* BearSkill */, 126 | ); 127 | name = Pods; 128 | sourceTree = ""; 129 | }; 130 | 559D0540C168DA2BEA6E880E0DC0FE50 /* BearSkill */ = { 131 | isa = PBXGroup; 132 | children = ( 133 | 615842978BB17C511E0F43D58C82B906 /* AttributeString */, 134 | 7BE1E6F453CBC16716F35A9B470B2AC4 /* BearDefines */, 135 | B0DF5C0D3917FC280774AC1D7BE6AB4C /* Constants */, 136 | 965F048F676BE4A786E936CD5C84E1F6 /* Layout */, 137 | D637EF82F2237E6227A85D08CF1F7C34 /* Support Files */, 138 | B7104180EBB7566BA16CD3FC2B93D861 /* UIAndExtend */, 139 | ); 140 | name = BearSkill; 141 | path = BearSkill; 142 | sourceTree = ""; 143 | }; 144 | 615842978BB17C511E0F43D58C82B906 /* AttributeString */ = { 145 | isa = PBXGroup; 146 | children = ( 147 | 63973857CEFABAD31168A7FEC1985C94 /* NSMutableAttributedString+BearSet.h */, 148 | 5BDB9E826DF32F4EA29610489742AC90 /* NSMutableAttributedString+BearSet.m */, 149 | ); 150 | name = AttributeString; 151 | sourceTree = ""; 152 | }; 153 | 7BE1E6F453CBC16716F35A9B470B2AC4 /* BearDefines */ = { 154 | isa = PBXGroup; 155 | children = ( 156 | 984EF18EBC9FE1AFC03F62601201148F /* BearDefines.h */, 157 | ); 158 | name = BearDefines; 159 | sourceTree = ""; 160 | }; 161 | 7DB346D0F39D3F0E887471402A8071AB = { 162 | isa = PBXGroup; 163 | children = ( 164 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 165 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, 166 | 182909BF937C355ADF879D78F8BE1C3A /* Pods */, 167 | 14C8A59020C37399E7EB1E0BD945C873 /* Products */, 168 | D85AF2E5018B4E615023B334EBE51059 /* Targets Support Files */, 169 | ); 170 | sourceTree = ""; 171 | }; 172 | 965F048F676BE4A786E936CD5C84E1F6 /* Layout */ = { 173 | isa = PBXGroup; 174 | children = ( 175 | DFE6A48EE574182E82C2E563E6D41838 /* UITableView+BearStoreCellHeight.h */, 176 | 5E98C6CB4EF98973935EF0D314488E04 /* UITableView+BearStoreCellHeight.m */, 177 | 7AFFFEF462A0DF14BB16EA0CB36565D7 /* UIView+BearSet.h */, 178 | 94B548F4D199B2A7A5C99596A012BAFC /* UIView+BearSet.m */, 179 | ); 180 | name = Layout; 181 | sourceTree = ""; 182 | }; 183 | 9BF68DB89F4EE442B261A59343CB8F24 /* Pods-CRIconView */ = { 184 | isa = PBXGroup; 185 | children = ( 186 | A7F3579B82E3FEDA53392A841028F247 /* Pods-CRIconView-acknowledgements.markdown */, 187 | D8866ADEF0F1777CFEF8495709B035B3 /* Pods-CRIconView-acknowledgements.plist */, 188 | 3F9A5D36410C2E2AEDC839E7D632C64A /* Pods-CRIconView-dummy.m */, 189 | 51F656072FBEBD630DBD4FBB5A19664C /* Pods-CRIconView-frameworks.sh */, 190 | 7045DA3409CCD381539EB3230A34AB7B /* Pods-CRIconView-resources.sh */, 191 | 482683E7F6F8E50CAD36D0302BAEA386 /* Pods-CRIconView.debug.xcconfig */, 192 | 9BDA5655DC151730F6F789D5ADC1FC4E /* Pods-CRIconView.release.xcconfig */, 193 | ); 194 | name = "Pods-CRIconView"; 195 | path = "Target Support Files/Pods-CRIconView"; 196 | sourceTree = ""; 197 | }; 198 | B0DF5C0D3917FC280774AC1D7BE6AB4C /* Constants */ = { 199 | isa = PBXGroup; 200 | children = ( 201 | C4D759C340A454B80FA438D9C69F4B65 /* ApplicationOpenURLManager.h */, 202 | B3EB2DB316C2185F37AEBF8863A38DBC /* ApplicationOpenURLManager.m */, 203 | 7240F7E5F274CA2023377128CD4AC62D /* BearConstants.h */, 204 | 4D4E1E4093D73BB7E6F5DB1D3968526C /* BearConstants.m */, 205 | ); 206 | name = Constants; 207 | sourceTree = ""; 208 | }; 209 | B7104180EBB7566BA16CD3FC2B93D861 /* UIAndExtend */ = { 210 | isa = PBXGroup; 211 | children = ( 212 | C85E8EB4CBE17FBC5F036F10CC735F16 /* BearAlertBtnsView.h */, 213 | 176A75C73898B8BB7EBC9E7E218D0BAF /* BearAlertBtnsView.m */, 214 | 472C4818F0FD10803AF90BAA75A81F62 /* BearAlertContentView.h */, 215 | 1752997E6B6C5F611F24FBC9213C086C /* BearAlertContentView.m */, 216 | 8C51BC11C24646F58EEF513A8EDB006F /* BearAlertView.h */, 217 | 70A7A556953468F168543B81E0F997FB /* BearAlertView.m */, 218 | 5B5605E8D8D1E0B164F885D1CA94ACD5 /* BearBezierPath.h */, 219 | FC10E4F26F4B205F2C1A1981D2F5B96A /* BearBezierPath.m */, 220 | EC34E69E269614951FFFD6AC37577162 /* BearCutOutView.h */, 221 | 299F318DBCC950191A79A10934AF1138 /* BearCutOutView.m */, 222 | 99029E5D8F02FD9527F26F897F90EC14 /* UILabel+BearSet.h */, 223 | B07FEA110BE70B31373129A3C1CDB11B /* UILabel+BearSet.m */, 224 | 784B724A716F30861691C2E171D7E3D7 /* UITextField+BearLimitLength.h */, 225 | 5F72FB394658EDA3555DF0327B8F0745 /* UITextField+BearLimitLength.m */, 226 | ); 227 | name = UIAndExtend; 228 | sourceTree = ""; 229 | }; 230 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { 231 | isa = PBXGroup; 232 | children = ( 233 | D35AF013A5F0BAD4F32504907A52519E /* iOS */, 234 | ); 235 | name = Frameworks; 236 | sourceTree = ""; 237 | }; 238 | D35AF013A5F0BAD4F32504907A52519E /* iOS */ = { 239 | isa = PBXGroup; 240 | children = ( 241 | 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */, 242 | ); 243 | name = iOS; 244 | sourceTree = ""; 245 | }; 246 | D637EF82F2237E6227A85D08CF1F7C34 /* Support Files */ = { 247 | isa = PBXGroup; 248 | children = ( 249 | 5EB09FD3EB8D655718889CDB3FE2B1FA /* BearSkill.xcconfig */, 250 | 7A1EC4E88491D090CB7D87B93DF9028D /* BearSkill-dummy.m */, 251 | B3F49ABF5D097C7FD1118FA3B90C8948 /* BearSkill-prefix.pch */, 252 | ); 253 | name = "Support Files"; 254 | path = "../Target Support Files/BearSkill"; 255 | sourceTree = ""; 256 | }; 257 | D85AF2E5018B4E615023B334EBE51059 /* Targets Support Files */ = { 258 | isa = PBXGroup; 259 | children = ( 260 | 9BF68DB89F4EE442B261A59343CB8F24 /* Pods-CRIconView */, 261 | ); 262 | name = "Targets Support Files"; 263 | sourceTree = ""; 264 | }; 265 | /* End PBXGroup section */ 266 | 267 | /* Begin PBXHeadersBuildPhase section */ 268 | 2D4F8501362EA08383C6EC8F1B258B88 /* Headers */ = { 269 | isa = PBXHeadersBuildPhase; 270 | buildActionMask = 2147483647; 271 | files = ( 272 | A6B15AA23C22261EB0057562D379E845 /* ApplicationOpenURLManager.h in Headers */, 273 | EE58DB23DC3ABC2957B99AEA74C6ED9A /* BearAlertBtnsView.h in Headers */, 274 | 104158E89769DCB9188B527C13901D28 /* BearAlertContentView.h in Headers */, 275 | 78A34DEAFCE4C5B40185543B3D97EE89 /* BearAlertView.h in Headers */, 276 | BC18FBCC4E2E0017CB97ECB26CA77236 /* BearBezierPath.h in Headers */, 277 | 563792FB3DD8231031E4BE531F90D4F5 /* BearConstants.h in Headers */, 278 | BFAC5A77D386DC467FDE716269E6F735 /* BearCutOutView.h in Headers */, 279 | A29499AE22C0A3975FCA535821238BB9 /* BearDefines.h in Headers */, 280 | 5C10719DAF382D38423178F44E0EF48C /* NSMutableAttributedString+BearSet.h in Headers */, 281 | 2A16A49CB9960B06002184A517D92144 /* UILabel+BearSet.h in Headers */, 282 | 57D676441A04E1623805649027DB8400 /* UITableView+BearStoreCellHeight.h in Headers */, 283 | DFEA8695C636F2360D13209A3E391E33 /* UITextField+BearLimitLength.h in Headers */, 284 | 134BB05E3640CB9080E445412DC245C1 /* UIView+BearSet.h in Headers */, 285 | ); 286 | runOnlyForDeploymentPostprocessing = 0; 287 | }; 288 | /* End PBXHeadersBuildPhase section */ 289 | 290 | /* Begin PBXNativeTarget section */ 291 | 20E2DE86A4B3D5EFA27C2634656D2D34 /* BearSkill */ = { 292 | isa = PBXNativeTarget; 293 | buildConfigurationList = 82CEFA9B9D31E0D66624E82264A10EFE /* Build configuration list for PBXNativeTarget "BearSkill" */; 294 | buildPhases = ( 295 | 5AC5A65B5D2276C3DD1F5AD2712853B5 /* Sources */, 296 | B37CC273BDF5540C89A6B4E1FECF55BB /* Frameworks */, 297 | 2D4F8501362EA08383C6EC8F1B258B88 /* Headers */, 298 | ); 299 | buildRules = ( 300 | ); 301 | dependencies = ( 302 | ); 303 | name = BearSkill; 304 | productName = BearSkill; 305 | productReference = 07D9A4176EF7D71A187CD13A6C208C0E /* libBearSkill.a */; 306 | productType = "com.apple.product-type.library.static"; 307 | }; 308 | 2A00A6E09D08655FF0B5809028DD7FCC /* Pods-CRIconView */ = { 309 | isa = PBXNativeTarget; 310 | buildConfigurationList = CFB0928E56BD24AA8F78BB4C9EEB8CB8 /* Build configuration list for PBXNativeTarget "Pods-CRIconView" */; 311 | buildPhases = ( 312 | B2BEE395F64D6BC7E78E852CAEE920DD /* Sources */, 313 | 347F111F5ABE8DFE8912830344BE35DA /* Frameworks */, 314 | ); 315 | buildRules = ( 316 | ); 317 | dependencies = ( 318 | B10AFF2997C7CBD8C9273C450896AACE /* PBXTargetDependency */, 319 | ); 320 | name = "Pods-CRIconView"; 321 | productName = "Pods-CRIconView"; 322 | productReference = 3EB8A2532D462B18FB12ADF5A88B916C /* libPods-CRIconView.a */; 323 | productType = "com.apple.product-type.library.static"; 324 | }; 325 | /* End PBXNativeTarget section */ 326 | 327 | /* Begin PBXProject section */ 328 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 329 | isa = PBXProject; 330 | attributes = { 331 | LastSwiftUpdateCheck = 0830; 332 | LastUpgradeCheck = 0700; 333 | }; 334 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 335 | compatibilityVersion = "Xcode 3.2"; 336 | developmentRegion = English; 337 | hasScannedForEncodings = 0; 338 | knownRegions = ( 339 | en, 340 | ); 341 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 342 | productRefGroup = 14C8A59020C37399E7EB1E0BD945C873 /* Products */; 343 | projectDirPath = ""; 344 | projectRoot = ""; 345 | targets = ( 346 | 20E2DE86A4B3D5EFA27C2634656D2D34 /* BearSkill */, 347 | 2A00A6E09D08655FF0B5809028DD7FCC /* Pods-CRIconView */, 348 | ); 349 | }; 350 | /* End PBXProject section */ 351 | 352 | /* Begin PBXSourcesBuildPhase section */ 353 | 5AC5A65B5D2276C3DD1F5AD2712853B5 /* Sources */ = { 354 | isa = PBXSourcesBuildPhase; 355 | buildActionMask = 2147483647; 356 | files = ( 357 | 11B5B0CB423B4E34E2D4F46B22F929A7 /* ApplicationOpenURLManager.m in Sources */, 358 | B915DE695A3F0CCAD26544438DE382B3 /* BearAlertBtnsView.m in Sources */, 359 | 1CB82BC4E95337BB5A87F42D5ECFF809 /* BearAlertContentView.m in Sources */, 360 | CA19AFD5360AD487FFF89A57F3ADE353 /* BearAlertView.m in Sources */, 361 | 90190F67A5C8C65B2D1C0222CB4CCCC3 /* BearBezierPath.m in Sources */, 362 | B9E1B844C299497713DEF3FE9D980892 /* BearConstants.m in Sources */, 363 | 7E3AECFBF64F432244CB805777C84D4A /* BearCutOutView.m in Sources */, 364 | BD25E63CB152781018550A0284B43678 /* BearSkill-dummy.m in Sources */, 365 | F03DB0FEA5D8AFEB561F683F6317BB35 /* NSMutableAttributedString+BearSet.m in Sources */, 366 | 017C00A71D65582967425BF04D8CD12F /* UILabel+BearSet.m in Sources */, 367 | 453417035B3AB5AEF34901F544213834 /* UITableView+BearStoreCellHeight.m in Sources */, 368 | 2263F0110B58F36F06323CDEE5E613B3 /* UITextField+BearLimitLength.m in Sources */, 369 | 72EEAB76711C50948C2FAF6BAEFC1829 /* UIView+BearSet.m in Sources */, 370 | ); 371 | runOnlyForDeploymentPostprocessing = 0; 372 | }; 373 | B2BEE395F64D6BC7E78E852CAEE920DD /* Sources */ = { 374 | isa = PBXSourcesBuildPhase; 375 | buildActionMask = 2147483647; 376 | files = ( 377 | 5219DE4ACD3E56A6C15148FC43001AE9 /* Pods-CRIconView-dummy.m in Sources */, 378 | ); 379 | runOnlyForDeploymentPostprocessing = 0; 380 | }; 381 | /* End PBXSourcesBuildPhase section */ 382 | 383 | /* Begin PBXTargetDependency section */ 384 | B10AFF2997C7CBD8C9273C450896AACE /* PBXTargetDependency */ = { 385 | isa = PBXTargetDependency; 386 | name = BearSkill; 387 | target = 20E2DE86A4B3D5EFA27C2634656D2D34 /* BearSkill */; 388 | targetProxy = 2E205469B0567777F1243907430F7BD7 /* PBXContainerItemProxy */; 389 | }; 390 | /* End PBXTargetDependency section */ 391 | 392 | /* Begin XCBuildConfiguration section */ 393 | 163D87BE96A63549B0EACF1CC31A2E90 /* Debug */ = { 394 | isa = XCBuildConfiguration; 395 | buildSettings = { 396 | ALWAYS_SEARCH_USER_PATHS = NO; 397 | CLANG_ANALYZER_NONNULL = YES; 398 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; 399 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 400 | CLANG_CXX_LIBRARY = "libc++"; 401 | CLANG_ENABLE_MODULES = YES; 402 | CLANG_ENABLE_OBJC_ARC = YES; 403 | CLANG_WARN_BOOL_CONVERSION = YES; 404 | CLANG_WARN_CONSTANT_CONVERSION = YES; 405 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 406 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 407 | CLANG_WARN_EMPTY_BODY = YES; 408 | CLANG_WARN_ENUM_CONVERSION = YES; 409 | CLANG_WARN_INFINITE_RECURSION = YES; 410 | CLANG_WARN_INT_CONVERSION = YES; 411 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 412 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 413 | CLANG_WARN_UNREACHABLE_CODE = YES; 414 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 415 | CODE_SIGNING_REQUIRED = NO; 416 | COPY_PHASE_STRIP = NO; 417 | ENABLE_TESTABILITY = YES; 418 | GCC_C_LANGUAGE_STANDARD = gnu99; 419 | GCC_DYNAMIC_NO_PIC = NO; 420 | GCC_OPTIMIZATION_LEVEL = 0; 421 | GCC_PREPROCESSOR_DEFINITIONS = ( 422 | "POD_CONFIGURATION_DEBUG=1", 423 | "DEBUG=1", 424 | "$(inherited)", 425 | ); 426 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 427 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 428 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 429 | GCC_WARN_UNDECLARED_SELECTOR = YES; 430 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 431 | GCC_WARN_UNUSED_FUNCTION = YES; 432 | GCC_WARN_UNUSED_VARIABLE = YES; 433 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 434 | ONLY_ACTIVE_ARCH = YES; 435 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 436 | STRIP_INSTALLED_PRODUCT = NO; 437 | SYMROOT = "${SRCROOT}/../build"; 438 | }; 439 | name = Debug; 440 | }; 441 | 39DC8E2FE156934F875B84144D6642EC /* Release */ = { 442 | isa = XCBuildConfiguration; 443 | baseConfigurationReference = 9BDA5655DC151730F6F789D5ADC1FC4E /* Pods-CRIconView.release.xcconfig */; 444 | buildSettings = { 445 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 446 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 447 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 448 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 449 | ENABLE_STRICT_OBJC_MSGSEND = YES; 450 | GCC_NO_COMMON_BLOCKS = YES; 451 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 452 | MACH_O_TYPE = staticlib; 453 | MTL_ENABLE_DEBUG_INFO = NO; 454 | OTHER_LDFLAGS = ""; 455 | OTHER_LIBTOOLFLAGS = ""; 456 | PODS_ROOT = "$(SRCROOT)"; 457 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 458 | PRODUCT_NAME = "$(TARGET_NAME)"; 459 | SDKROOT = iphoneos; 460 | SKIP_INSTALL = YES; 461 | }; 462 | name = Release; 463 | }; 464 | 707B86CFB21B645E37109F39754D4051 /* Release */ = { 465 | isa = XCBuildConfiguration; 466 | buildSettings = { 467 | ALWAYS_SEARCH_USER_PATHS = NO; 468 | CLANG_ANALYZER_NONNULL = YES; 469 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; 470 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 471 | CLANG_CXX_LIBRARY = "libc++"; 472 | CLANG_ENABLE_MODULES = YES; 473 | CLANG_ENABLE_OBJC_ARC = YES; 474 | CLANG_WARN_BOOL_CONVERSION = YES; 475 | CLANG_WARN_CONSTANT_CONVERSION = YES; 476 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 477 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 478 | CLANG_WARN_EMPTY_BODY = YES; 479 | CLANG_WARN_ENUM_CONVERSION = YES; 480 | CLANG_WARN_INFINITE_RECURSION = YES; 481 | CLANG_WARN_INT_CONVERSION = YES; 482 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 483 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 484 | CLANG_WARN_UNREACHABLE_CODE = YES; 485 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 486 | CODE_SIGNING_REQUIRED = NO; 487 | COPY_PHASE_STRIP = YES; 488 | ENABLE_NS_ASSERTIONS = NO; 489 | GCC_C_LANGUAGE_STANDARD = gnu99; 490 | GCC_PREPROCESSOR_DEFINITIONS = ( 491 | "POD_CONFIGURATION_RELEASE=1", 492 | "$(inherited)", 493 | ); 494 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 495 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 496 | GCC_WARN_UNDECLARED_SELECTOR = YES; 497 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 498 | GCC_WARN_UNUSED_FUNCTION = YES; 499 | GCC_WARN_UNUSED_VARIABLE = YES; 500 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 501 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 502 | STRIP_INSTALLED_PRODUCT = NO; 503 | SYMROOT = "${SRCROOT}/../build"; 504 | VALIDATE_PRODUCT = YES; 505 | }; 506 | name = Release; 507 | }; 508 | D6680D2A62EB60FDD901C2363BF422CF /* Debug */ = { 509 | isa = XCBuildConfiguration; 510 | baseConfigurationReference = 5EB09FD3EB8D655718889CDB3FE2B1FA /* BearSkill.xcconfig */; 511 | buildSettings = { 512 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 513 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 514 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 515 | DEBUG_INFORMATION_FORMAT = dwarf; 516 | ENABLE_STRICT_OBJC_MSGSEND = YES; 517 | GCC_NO_COMMON_BLOCKS = YES; 518 | GCC_PREFIX_HEADER = "Target Support Files/BearSkill/BearSkill-prefix.pch"; 519 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 520 | MTL_ENABLE_DEBUG_INFO = YES; 521 | OTHER_LDFLAGS = ""; 522 | OTHER_LIBTOOLFLAGS = ""; 523 | PRIVATE_HEADERS_FOLDER_PATH = ""; 524 | PRODUCT_NAME = "$(TARGET_NAME)"; 525 | PUBLIC_HEADERS_FOLDER_PATH = ""; 526 | SDKROOT = iphoneos; 527 | SKIP_INSTALL = YES; 528 | }; 529 | name = Debug; 530 | }; 531 | E6657050D94958CEB4FA52F9460DC608 /* Release */ = { 532 | isa = XCBuildConfiguration; 533 | baseConfigurationReference = 5EB09FD3EB8D655718889CDB3FE2B1FA /* BearSkill.xcconfig */; 534 | buildSettings = { 535 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 536 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 537 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 538 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 539 | ENABLE_STRICT_OBJC_MSGSEND = YES; 540 | GCC_NO_COMMON_BLOCKS = YES; 541 | GCC_PREFIX_HEADER = "Target Support Files/BearSkill/BearSkill-prefix.pch"; 542 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 543 | MTL_ENABLE_DEBUG_INFO = NO; 544 | OTHER_LDFLAGS = ""; 545 | OTHER_LIBTOOLFLAGS = ""; 546 | PRIVATE_HEADERS_FOLDER_PATH = ""; 547 | PRODUCT_NAME = "$(TARGET_NAME)"; 548 | PUBLIC_HEADERS_FOLDER_PATH = ""; 549 | SDKROOT = iphoneos; 550 | SKIP_INSTALL = YES; 551 | }; 552 | name = Release; 553 | }; 554 | FB1482EBE821EDABCCA5E68D700AA887 /* Debug */ = { 555 | isa = XCBuildConfiguration; 556 | baseConfigurationReference = 482683E7F6F8E50CAD36D0302BAEA386 /* Pods-CRIconView.debug.xcconfig */; 557 | buildSettings = { 558 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 559 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 560 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 561 | DEBUG_INFORMATION_FORMAT = dwarf; 562 | ENABLE_STRICT_OBJC_MSGSEND = YES; 563 | GCC_NO_COMMON_BLOCKS = YES; 564 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 565 | MACH_O_TYPE = staticlib; 566 | MTL_ENABLE_DEBUG_INFO = YES; 567 | OTHER_LDFLAGS = ""; 568 | OTHER_LIBTOOLFLAGS = ""; 569 | PODS_ROOT = "$(SRCROOT)"; 570 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 571 | PRODUCT_NAME = "$(TARGET_NAME)"; 572 | SDKROOT = iphoneos; 573 | SKIP_INSTALL = YES; 574 | }; 575 | name = Debug; 576 | }; 577 | /* End XCBuildConfiguration section */ 578 | 579 | /* Begin XCConfigurationList section */ 580 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 581 | isa = XCConfigurationList; 582 | buildConfigurations = ( 583 | 163D87BE96A63549B0EACF1CC31A2E90 /* Debug */, 584 | 707B86CFB21B645E37109F39754D4051 /* Release */, 585 | ); 586 | defaultConfigurationIsVisible = 0; 587 | defaultConfigurationName = Release; 588 | }; 589 | 82CEFA9B9D31E0D66624E82264A10EFE /* Build configuration list for PBXNativeTarget "BearSkill" */ = { 590 | isa = XCConfigurationList; 591 | buildConfigurations = ( 592 | D6680D2A62EB60FDD901C2363BF422CF /* Debug */, 593 | E6657050D94958CEB4FA52F9460DC608 /* Release */, 594 | ); 595 | defaultConfigurationIsVisible = 0; 596 | defaultConfigurationName = Release; 597 | }; 598 | CFB0928E56BD24AA8F78BB4C9EEB8CB8 /* Build configuration list for PBXNativeTarget "Pods-CRIconView" */ = { 599 | isa = XCConfigurationList; 600 | buildConfigurations = ( 601 | FB1482EBE821EDABCCA5E68D700AA887 /* Debug */, 602 | 39DC8E2FE156934F875B84144D6642EC /* Release */, 603 | ); 604 | defaultConfigurationIsVisible = 0; 605 | defaultConfigurationName = Release; 606 | }; 607 | /* End XCConfigurationList section */ 608 | }; 609 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 610 | } 611 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/bear.xcuserdatad/xcschemes/BearSkill.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/bear.xcuserdatad/xcschemes/Pods-CRIconView.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/bear.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | BearSkill.xcscheme 8 | 9 | isShown 10 | 11 | 12 | Pods-CRIconView.xcscheme 13 | 14 | isShown 15 | 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 20E2DE86A4B3D5EFA27C2634656D2D34 21 | 22 | primary 23 | 24 | 25 | 2A00A6E09D08655FF0B5809028DD7FCC 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Pods/Target Support Files/BearSkill/BearSkill-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_BearSkill : NSObject 3 | @end 4 | @implementation PodsDummy_BearSkill 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/BearSkill/BearSkill-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/BearSkill/BearSkill.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/BearSkill 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/BearSkill" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BearSkill" 4 | PODS_BUILD_DIR = $BUILD_DIR 5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/BearSkill 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-CRIconView/Pods-CRIconView-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## BearSkill 5 | 6 | Copyright (c) 2016 Bear <648070256@qq.com> 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-CRIconView/Pods-CRIconView-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2016 Bear <648070256@qq.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | BearSkill 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-CRIconView/Pods-CRIconView-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_CRIconView : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_CRIconView 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-CRIconView/Pods-CRIconView-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | elif [ -r "$1" ]; then 16 | local source="$1" 17 | fi 18 | 19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | 21 | if [ -L "${source}" ]; then 22 | echo "Symlinked..." 23 | source="$(readlink "${source}")" 24 | fi 25 | 26 | # use filter instead of exclude so missing patterns dont' throw errors 27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 29 | 30 | local basename 31 | basename="$(basename -s .framework "$1")" 32 | binary="${destination}/${basename}.framework/${basename}" 33 | if ! [ -r "$binary" ]; then 34 | binary="${destination}/${basename}" 35 | fi 36 | 37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 39 | strip_invalid_archs "$binary" 40 | fi 41 | 42 | # Resign the code if required by the build settings to avoid unstable apps 43 | code_sign_if_enabled "${destination}/$(basename "$1")" 44 | 45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 47 | local swift_runtime_libs 48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 49 | for lib in $swift_runtime_libs; do 50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 52 | code_sign_if_enabled "${destination}/${lib}" 53 | done 54 | fi 55 | } 56 | 57 | # Signs a framework with the provided identity 58 | code_sign_if_enabled() { 59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 60 | # Use the current code_sign_identitiy 61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 62 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" 63 | 64 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 65 | code_sign_cmd="$code_sign_cmd &" 66 | fi 67 | echo "$code_sign_cmd" 68 | eval "$code_sign_cmd" 69 | fi 70 | } 71 | 72 | # Strip invalid architectures 73 | strip_invalid_archs() { 74 | binary="$1" 75 | # Get architectures for current file 76 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 77 | stripped="" 78 | for arch in $archs; do 79 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 80 | # Strip non-valid architectures in-place 81 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 82 | stripped="$stripped $arch" 83 | fi 84 | done 85 | if [[ "$stripped" ]]; then 86 | echo "Stripped $binary of architectures:$stripped" 87 | fi 88 | } 89 | 90 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 91 | wait 92 | fi 93 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-CRIconView/Pods-CRIconView-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | 3) 22 | TARGET_DEVICE_ARGS="--target-device tv" 23 | ;; 24 | 4) 25 | TARGET_DEVICE_ARGS="--target-device watch" 26 | ;; 27 | *) 28 | TARGET_DEVICE_ARGS="--target-device mac" 29 | ;; 30 | esac 31 | 32 | install_resource() 33 | { 34 | if [[ "$1" = /* ]] ; then 35 | RESOURCE_PATH="$1" 36 | else 37 | RESOURCE_PATH="${PODS_ROOT}/$1" 38 | fi 39 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 40 | cat << EOM 41 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 42 | EOM 43 | exit 1 44 | fi 45 | case $RESOURCE_PATH in 46 | *.storyboard) 47 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 48 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 49 | ;; 50 | *.xib) 51 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 52 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 53 | ;; 54 | *.framework) 55 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 56 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 57 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 58 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 59 | ;; 60 | *.xcdatamodel) 61 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 62 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 63 | ;; 64 | *.xcdatamodeld) 65 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 66 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 67 | ;; 68 | *.xcmappingmodel) 69 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 70 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 71 | ;; 72 | *.xcassets) 73 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 74 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 75 | ;; 76 | *) 77 | echo "$RESOURCE_PATH" 78 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 79 | ;; 80 | esac 81 | } 82 | 83 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 84 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 85 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 86 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 87 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 88 | fi 89 | rm -f "$RESOURCES_TO_COPY" 90 | 91 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 92 | then 93 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 94 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 95 | while read line; do 96 | if [[ $line != "${PODS_ROOT}*" ]]; then 97 | XCASSET_FILES+=("$line") 98 | fi 99 | done <<<"$OTHER_XCASSETS" 100 | 101 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 102 | fi 103 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-CRIconView/Pods-CRIconView.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BearSkill" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/BearSkill" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/BearSkill" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"BearSkill" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-CRIconView/Pods-CRIconView.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BearSkill" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/BearSkill" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/BearSkill" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"BearSkill" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /libjpeg.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRAnimation/CRMaskImageView/0666f8abf3351805750a4cb664299dc87b0484b1/libjpeg.a --------------------------------------------------------------------------------