├── Pods ├── Headers │ ├── Private │ │ ├── Masonry │ │ │ ├── Masonry.h │ │ │ ├── MASUtilities.h │ │ │ ├── MASConstraint.h │ │ │ ├── MASViewAttribute.h │ │ │ ├── MASViewConstraint.h │ │ │ ├── View+MASAdditions.h │ │ │ ├── MASConstraintMaker.h │ │ │ ├── MASLayoutConstraint.h │ │ │ ├── NSArray+MASAdditions.h │ │ │ ├── MASCompositeConstraint.h │ │ │ ├── MASConstraint+Private.h │ │ │ ├── View+MASShorthandAdditions.h │ │ │ ├── ViewController+MASAdditions.h │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ └── NSLayoutConstraint+MASDebugAdditions.h │ │ ├── libextobjc │ │ │ ├── EXTADT.h │ │ │ ├── EXTNil.h │ │ │ ├── extobjc.h │ │ │ ├── EXTScope.h │ │ │ ├── metamacros.h │ │ │ ├── EXTSynthesize.h │ │ │ ├── EXTKeyPathCoding.h │ │ │ ├── EXTSafeCategory.h │ │ │ ├── NSInvocation+EXT.h │ │ │ ├── EXTConcreteProtocol.h │ │ │ ├── EXTSelectorChecking.h │ │ │ ├── EXTRuntimeExtensions.h │ │ │ └── NSMethodSignature+EXT.h │ │ └── SDWebImage │ │ │ ├── SDImageCache.h │ │ │ ├── UIImage+GIF.h │ │ │ ├── SDWebImageCompat.h │ │ │ ├── SDWebImageDecoder.h │ │ │ ├── SDWebImageManager.h │ │ │ ├── UIButton+WebCache.h │ │ │ ├── SDWebImageDownloader.h │ │ │ ├── SDWebImageOperation.h │ │ │ ├── SDWebImagePrefetcher.h │ │ │ ├── UIImage+MultiFormat.h │ │ │ ├── UIImageView+WebCache.h │ │ │ ├── NSData+ImageContentType.h │ │ │ ├── UIView+WebCacheOperation.h │ │ │ ├── SDWebImageDownloaderOperation.h │ │ │ └── UIImageView+HighlightedWebCache.h │ └── Public │ │ ├── Masonry │ │ ├── Masonry.h │ │ ├── MASConstraint.h │ │ ├── MASUtilities.h │ │ ├── MASConstraintMaker.h │ │ ├── MASViewAttribute.h │ │ ├── MASViewConstraint.h │ │ ├── View+MASAdditions.h │ │ ├── MASLayoutConstraint.h │ │ ├── NSArray+MASAdditions.h │ │ ├── MASCompositeConstraint.h │ │ ├── MASConstraint+Private.h │ │ ├── View+MASShorthandAdditions.h │ │ ├── ViewController+MASAdditions.h │ │ ├── NSArray+MASShorthandAdditions.h │ │ └── NSLayoutConstraint+MASDebugAdditions.h │ │ ├── libextobjc │ │ ├── EXTADT.h │ │ ├── EXTNil.h │ │ ├── extobjc.h │ │ ├── EXTScope.h │ │ ├── metamacros.h │ │ ├── EXTSafeCategory.h │ │ ├── EXTSynthesize.h │ │ ├── EXTKeyPathCoding.h │ │ ├── NSInvocation+EXT.h │ │ ├── EXTConcreteProtocol.h │ │ ├── EXTRuntimeExtensions.h │ │ ├── EXTSelectorChecking.h │ │ └── NSMethodSignature+EXT.h │ │ └── SDWebImage │ │ ├── UIImage+GIF.h │ │ ├── SDImageCache.h │ │ ├── SDWebImageCompat.h │ │ ├── SDWebImageDecoder.h │ │ ├── SDWebImageManager.h │ │ ├── UIButton+WebCache.h │ │ ├── SDWebImageDownloader.h │ │ ├── SDWebImageOperation.h │ │ ├── SDWebImagePrefetcher.h │ │ ├── UIImage+MultiFormat.h │ │ ├── UIImageView+WebCache.h │ │ ├── NSData+ImageContentType.h │ │ ├── UIView+WebCacheOperation.h │ │ ├── SDWebImageDownloaderOperation.h │ │ └── UIImageView+HighlightedWebCache.h ├── Target Support Files │ ├── Masonry │ │ ├── Masonry-prefix.pch │ │ ├── Masonry-dummy.m │ │ └── Masonry.xcconfig │ ├── SDWebImage │ │ ├── SDWebImage-prefix.pch │ │ ├── SDWebImage-dummy.m │ │ └── SDWebImage.xcconfig │ ├── libextobjc │ │ ├── libextobjc-prefix.pch │ │ ├── libextobjc-dummy.m │ │ └── libextobjc.xcconfig │ ├── Pods-ImageAndTextMixed │ │ ├── Pods-ImageAndTextMixed-dummy.m │ │ ├── Pods-ImageAndTextMixed.debug.xcconfig │ │ ├── Pods-ImageAndTextMixed.release.xcconfig │ │ ├── Pods-ImageAndTextMixed-acknowledgements.markdown │ │ ├── Pods-ImageAndTextMixed-frameworks.sh │ │ ├── Pods-ImageAndTextMixed-acknowledgements.plist │ │ └── Pods-ImageAndTextMixed-resources.sh │ ├── Pods-ImageAndTextMixedTests │ │ ├── Pods-ImageAndTextMixedTests-acknowledgements.markdown │ │ ├── Pods-ImageAndTextMixedTests-dummy.m │ │ ├── Pods-ImageAndTextMixedTests.debug.xcconfig │ │ ├── Pods-ImageAndTextMixedTests.release.xcconfig │ │ ├── Pods-ImageAndTextMixedTests-acknowledgements.plist │ │ ├── Pods-ImageAndTextMixedTests-frameworks.sh │ │ └── Pods-ImageAndTextMixedTests-resources.sh │ └── Pods-ImageAndTextMixedUITests │ │ ├── Pods-ImageAndTextMixedUITests-acknowledgements.markdown │ │ ├── Pods-ImageAndTextMixedUITests-dummy.m │ │ ├── Pods-ImageAndTextMixedUITests.debug.xcconfig │ │ ├── Pods-ImageAndTextMixedUITests.release.xcconfig │ │ ├── Pods-ImageAndTextMixedUITests-acknowledgements.plist │ │ ├── Pods-ImageAndTextMixedUITests-frameworks.sh │ │ └── Pods-ImageAndTextMixedUITests-resources.sh ├── Masonry │ ├── Masonry │ │ ├── MASLayoutConstraint.m │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ ├── MASLayoutConstraint.h │ │ ├── MASCompositeConstraint.h │ │ ├── Masonry.h │ │ ├── ViewController+MASAdditions.h │ │ ├── NSArray+MASShorthandAdditions.h │ │ ├── MASViewAttribute.m │ │ ├── MASViewAttribute.h │ │ ├── ViewController+MASAdditions.m │ │ ├── MASViewConstraint.h │ │ ├── MASConstraint+Private.h │ │ ├── NSArray+MASAdditions.h │ │ ├── View+MASShorthandAdditions.h │ │ └── View+MASAdditions.h │ └── LICENSE ├── SDWebImage │ ├── SDWebImage │ │ ├── UIImage+MultiFormat.h │ │ ├── SDWebImageOperation.h │ │ ├── UIImage+GIF.h │ │ ├── SDWebImageDecoder.h │ │ ├── NSData+ImageContentType.h │ │ ├── UIView+WebCacheOperation.h │ │ ├── NSData+ImageContentType.m │ │ ├── SDWebImageCompat.m │ │ ├── SDWebImageCompat.h │ │ ├── UIView+WebCacheOperation.m │ │ ├── UIImage+MultiFormat.m │ │ ├── SDWebImageDecoder.m │ │ ├── SDWebImagePrefetcher.h │ │ └── SDWebImageDownloaderOperation.h │ └── LICENSE ├── libextobjc │ ├── extobjc │ │ ├── EXTScope.m │ │ ├── EXTSelectorChecking.m │ │ ├── extobjc.h │ │ ├── NSInvocation+EXT.h │ │ ├── NSMethodSignature+EXT.h │ │ ├── EXTADT.m │ │ ├── EXTNil.h │ │ ├── EXTSafeCategory.m │ │ ├── EXTSelectorChecking.h │ │ ├── EXTNil.m │ │ ├── EXTKeyPathCoding.h │ │ ├── NSMethodSignature+EXT.m │ │ ├── EXTSynthesize.h │ │ ├── EXTConcreteProtocol.m │ │ ├── EXTScope.h │ │ ├── EXTSafeCategory.h │ │ └── EXTConcreteProtocol.h │ ├── LICENSE.md │ └── README.md ├── Pods.xcodeproj │ └── xcuserdata │ │ └── syc.xcuserdatad │ │ └── xcschemes │ │ ├── xcschememanagement.plist │ │ ├── Masonry.xcscheme │ │ ├── SDWebImage.xcscheme │ │ ├── libextobjc.xcscheme │ │ ├── Pods-ImageAndTextMixed.xcscheme │ │ ├── Pods-ImageAndTextMixedTests.xcscheme │ │ └── Pods-ImageAndTextMixedUITests.xcscheme └── Manifest.lock ├── README.md ├── ImageAndTextMixed ├── general_picture_icon_close_normal.png ├── general_picture_icon_close_pressed.png ├── view │ ├── GADetialTextView.m │ ├── GADetialTextView.h │ └── GAEditPhoto.h ├── AppDelegate.h ├── main.m ├── ViewController.h ├── untill │ ├── UIImage+GAImage.h │ └── UIImage+GAImage.m ├── model │ ├── GAXMLModel.m │ └── GAXMLModel.h ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── Info.plist ├── Base.lproj │ ├── Main.storyboard │ └── LaunchScreen.storyboard └── AppDelegate.m ├── ImageAndTextMixed.xcworkspace ├── xcuserdata │ └── syc.xcuserdatad │ │ └── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist └── contents.xcworkspacedata ├── ImageAndTextMixed.xcodeproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcuserdata │ └── syc.xcuserdatad │ └── xcschemes │ ├── xcschememanagement.plist │ └── ImageAndTextMixed.xcscheme ├── podfile ├── ImageAndTextMixedTests ├── Info.plist └── ImageAndTextMixedTests.m ├── ImageAndTextMixedUITests ├── Info.plist └── ImageAndTextMixedUITests.m └── Podfile.lock /Pods/Headers/Private/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/EXTADT.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTADT.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/EXTNil.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTNil.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/extobjc.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/extobjc.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/EXTADT.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTADT.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/EXTNil.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTNil.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/extobjc.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/extobjc.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/EXTScope.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTScope.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/EXTScope.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTScope.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/metamacros.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/metamacros.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/metamacros.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/metamacros.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/EXTSynthesize.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTSynthesize.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/EXTSafeCategory.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTSafeCategory.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/EXTSynthesize.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTSynthesize.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/EXTKeyPathCoding.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTKeyPathCoding.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/EXTSafeCategory.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTSafeCategory.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/NSInvocation+EXT.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/NSInvocation+EXT.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/EXTKeyPathCoding.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTKeyPathCoding.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/NSInvocation+EXT.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/NSInvocation+EXT.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageDecoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDecoder.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/EXTConcreteProtocol.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTConcreteProtocol.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/EXTSelectorChecking.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTSelectorChecking.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageDecoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDecoder.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/EXTConcreteProtocol.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTConcreteProtocol.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/EXTRuntimeExtensions.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTRuntimeExtensions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/EXTSelectorChecking.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTSelectorChecking.h -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ImageAndTextMixed 2 | IOS图文混排编辑器 3 | 本地demo 只是公司项目的一小部分功能,可以为大家提供一个思路,等公司项目开源后,会持续更新。。。。。 -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImageView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/EXTRuntimeExtensions.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/EXTRuntimeExtensions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/libextobjc/NSMethodSignature+EXT.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/NSMethodSignature+EXT.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImageView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/libextobjc/NSMethodSignature+EXT.h: -------------------------------------------------------------------------------- 1 | ../../../libextobjc/extobjc/NSMethodSignature+EXT.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Masonry-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Target Support Files/libextobjc/libextobjc-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImageView+HighlightedWebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImageView+HighlightedWebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /ImageAndTextMixed/general_picture_icon_close_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyWithCode/ImageAndTextMixed/HEAD/ImageAndTextMixed/general_picture_icon_close_normal.png -------------------------------------------------------------------------------- /ImageAndTextMixed/general_picture_icon_close_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyWithCode/ImageAndTextMixed/HEAD/ImageAndTextMixed/general_picture_icon_close_pressed.png -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Masonry-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Masonry : NSObject 3 | @end 4 | @implementation PodsDummy_Masonry 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SDWebImage : NSObject 3 | @end 4 | @implementation PodsDummy_SDWebImage 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/libextobjc/libextobjc-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_libextobjc : NSObject 3 | @end 4 | @implementation PodsDummy_libextobjc 5 | @end 6 | -------------------------------------------------------------------------------- /ImageAndTextMixed.xcworkspace/xcuserdata/syc.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixed/Pods-ImageAndTextMixed-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_ImageAndTextMixed : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_ImageAndTextMixed 5 | @end 6 | -------------------------------------------------------------------------------- /ImageAndTextMixed/view/GADetialTextView.m: -------------------------------------------------------------------------------- 1 | // 2 | // GADetialTextView.m 3 | // Pods 4 | // 5 | // Created by syc on 16/9/4. 6 | // 7 | // 8 | 9 | #import "GADetialTextView.h" 10 | 11 | @implementation GADetialTextView 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedTests/Pods-ImageAndTextMixedTests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedUITests/Pods-ImageAndTextMixedUITests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /ImageAndTextMixed.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedTests/Pods-ImageAndTextMixedTests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_ImageAndTextMixedTests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_ImageAndTextMixedTests 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedUITests/Pods-ImageAndTextMixedUITests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_ImageAndTextMixedUITests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_ImageAndTextMixedUITests 5 | @end 6 | -------------------------------------------------------------------------------- /ImageAndTextMixed/view/GADetialTextView.h: -------------------------------------------------------------------------------- 1 | // 2 | // GADetialTextView.h 3 | // Pods 4 | // 5 | // Created by syc on 17/5/11. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface GADetialTextView : UITextView 12 | @property (nonatomic,assign) BOOL isChange; 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASLayoutConstraint.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASLayoutConstraint.h" 10 | 11 | @implementation MASLayoutConstraint 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ImageAndTextMixed.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+MultiFormat.h 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (MultiFormat) 12 | 13 | + (UIImage *)sd_imageWithData:(NSData *)data; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTScope.m: -------------------------------------------------------------------------------- 1 | // 2 | // EXTScope.m 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2011-05-04. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTScope.h" 11 | 12 | void ext_executeCleanupBlock (__strong ext_cleanupBlock_t *block) { 13 | (*block)(); 14 | } 15 | 16 | -------------------------------------------------------------------------------- /ImageAndTextMixed/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // ImageAndTextMixed 4 | // 5 | // Created by syc on 17/5/11. 6 | // Copyright © 2017年 syc. 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 | -------------------------------------------------------------------------------- /ImageAndTextMixed/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // ImageAndTextMixed 4 | // 5 | // Created by syc on 17/5/11. 6 | // Copyright © 2017年 syc. 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 | -------------------------------------------------------------------------------- /podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | # platform :ios, '8.0' 3 | # Uncomment this line if you're using Swift 4 | # use_frameworks! 5 | 6 | target 'ImageAndTextMixed' do 7 | 8 | pod 'Masonry' 9 | pod 'SDWebImage' 10 | pod 'libextobjc' 11 | 12 | end 13 | 14 | target 'ImageAndTextMixedTests' do 15 | 16 | end 17 | 18 | target 'ImageAndTextMixedUITests' do 19 | 20 | end 21 | 22 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | 11 | @protocol SDWebImageOperation 12 | 13 | - (void)cancel; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ImageAndTextMixed/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // ImageAndTextMixed 4 | // 5 | // Created by syc on 17/5/11. 6 | // Copyright © 2017年 syc. All rights reserved. 7 | // 8 | 9 | typedef enum{ 10 | ObjectofTextView = 1, 11 | ObjectofScrollerView, 12 | ObjectofUIview, 13 | 14 | }ObjectType; 15 | 16 | #import 17 | 18 | @interface ViewController : UIViewController 19 | 20 | 21 | @end 22 | 23 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+MASDebugAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * makes debug and log output of NSLayoutConstraints more readable 13 | */ 14 | @interface NSLayoutConstraint (MASDebugAdditions) 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTSelectorChecking.m: -------------------------------------------------------------------------------- 1 | // 2 | // EXTSelectorChecking.m 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 26.06.12. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTSelectorChecking.h" 11 | 12 | @implementation NSString (EXTCheckedSelectorAdditions) 13 | - (SEL)ext_toSelector { 14 | return NSSelectorFromString(self); 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+GIF.h 3 | // LBGIFImage 4 | // 5 | // Created by Laurin Brandner on 06.01.12. 6 | // Copyright (c) 2012 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (GIF) 12 | 13 | + (UIImage *)sd_animatedGIFNamed:(NSString *)name; 14 | 15 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data; 16 | 17 | - (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/extobjc.h: -------------------------------------------------------------------------------- 1 | // 2 | // extobjc.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2010-11-09. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTADT.h" 11 | #import "EXTConcreteProtocol.h" 12 | #import "EXTKeyPathCoding.h" 13 | #import "EXTNil.h" 14 | #import "EXTSafeCategory.h" 15 | #import "EXTScope.h" 16 | #import "EXTSelectorChecking.h" 17 | #import "EXTSynthesize.h" 18 | #import "NSInvocation+EXT.h" 19 | #import "NSMethodSignature+EXT.h" 20 | 21 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageDecoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * Created by james on 9/28/11. 6 | * 7 | * For the full copyright and license information, please view the LICENSE 8 | * file that was distributed with this source code. 9 | */ 10 | 11 | #import 12 | #import "SDWebImageCompat.h" 13 | 14 | @interface UIImage (ForceDecode) 15 | 16 | + (UIImage *)decodedImageWithImage:(UIImage *)image; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /ImageAndTextMixed/untill/UIImage+GAImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+GAImage.h 3 | // GroupAdvertiseComponent 4 | // 5 | // Created by syc on 16/8/16. 6 | // Copyright © 2016年 ND. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (GAImage) 12 | 13 | /** 14 | 缩放图片 15 | 16 | @param size 缩放的size 17 | @return 缩放后的图片 18 | */ 19 | - (UIImage *)scaleToSize:(CGSize)size; 20 | 21 | /** 22 | 改变图片的透明度 23 | 24 | @param alpha 透明度 25 | @param image 图片 26 | @return 改变后的图片 27 | */ 28 | - (UIImage *)imageByApplyingAlpha:(CGFloat)alpha image:(UIImage*)image; 29 | @end 30 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * When you are debugging or printing the constraints attached to a view this subclass 13 | * makes it easier to identify which constraints have been created via Masonry 14 | */ 15 | @interface MASLayoutConstraint : NSLayoutConstraint 16 | 17 | /** 18 | * a key to associate with this constraint 19 | */ 20 | @property (nonatomic, strong) id mas_key; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASCompositeConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | #import "MASUtilities.h" 11 | 12 | /** 13 | * A group of MASConstraint objects 14 | */ 15 | @interface MASCompositeConstraint : MASConstraint 16 | 17 | /** 18 | * Creates a composite with a predefined array of children 19 | * 20 | * @param children child MASConstraints 21 | * 22 | * @return a composite constraint 23 | */ 24 | - (id)initWithChildren:(NSArray *)children; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/libextobjc/libextobjc.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/libextobjc 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/libextobjc" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/libextobjc" 4 | PODS_BUILD_DIR = $BUILD_DIR 5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 8 | SKIP_INSTALL = YES 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SDWebImage 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/libextobjc" 4 | OTHER_LDFLAGS = -framework "ImageIO" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Fabrice Aneche on 06/01/14. 3 | // Copyright (c) 2014 Dailymotion. All rights reserved. 4 | // 5 | 6 | #import 7 | 8 | @interface NSData (ImageContentType) 9 | 10 | /** 11 | * Compute the content type for an image data 12 | * 13 | * @param data the input data 14 | * 15 | * @return the content type as string (i.e. image/jpeg, image/gif) 16 | */ 17 | + (NSString *)sd_contentTypeForImageData:(NSData *)data; 18 | 19 | @end 20 | 21 | 22 | @interface NSData (ImageContentTypeDeprecated) 23 | 24 | + (NSString *)contentTypeForImageData:(NSData *)data __deprecated_msg("Use `sd_contentTypeForImageData:`"); 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Masonry.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Masonry 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Masonry" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/libextobjc" 4 | OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedTests/Pods-ImageAndTextMixedTests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/libextobjc" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -isystem "${PODS_ROOT}/Headers/Public/libextobjc" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedTests/Pods-ImageAndTextMixedTests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/libextobjc" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -isystem "${PODS_ROOT}/Headers/Public/libextobjc" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedUITests/Pods-ImageAndTextMixedUITests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/libextobjc" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -isystem "${PODS_ROOT}/Headers/Public/libextobjc" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedUITests/Pods-ImageAndTextMixedUITests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/libextobjc" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -isystem "${PODS_ROOT}/Headers/Public/libextobjc" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /ImageAndTextMixedTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /ImageAndTextMixedUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /ImageAndTextMixed.xcodeproj/xcuserdata/syc.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | ImageAndTextMixed.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 19599FA41EC42ECF0016AD29 16 | 17 | primary 18 | 19 | 20 | 19599FBD1EC42ECF0016AD29 21 | 22 | primary 23 | 24 | 25 | 19599FC81EC42ECF0016AD29 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | // 2 | // Masonry.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for Masonry. 12 | FOUNDATION_EXPORT double MasonryVersionNumber; 13 | 14 | //! Project version string for Masonry. 15 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[]; 16 | 17 | #import "MASUtilities.h" 18 | #import "View+MASAdditions.h" 19 | #import "View+MASShorthandAdditions.h" 20 | #import "ViewController+MASAdditions.h" 21 | #import "NSArray+MASAdditions.h" 22 | #import "NSArray+MASShorthandAdditions.h" 23 | #import "MASConstraint.h" 24 | #import "MASCompositeConstraint.h" 25 | #import "MASViewAttribute.h" 26 | #import "MASViewConstraint.h" 27 | #import "MASConstraintMaker.h" 28 | #import "MASLayoutConstraint.h" 29 | #import "NSLayoutConstraint+MASDebugAdditions.h" 30 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedTests/Pods-ImageAndTextMixedTests-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 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedUITests/Pods-ImageAndTextMixedUITests-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 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixed/Pods-ImageAndTextMixed.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/libextobjc" 4 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Masonry" "$PODS_CONFIGURATION_BUILD_DIR/SDWebImage" "$PODS_CONFIGURATION_BUILD_DIR/libextobjc" 5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -isystem "${PODS_ROOT}/Headers/Public/libextobjc" 6 | OTHER_LDFLAGS = $(inherited) -ObjC -l"Masonry" -l"SDWebImage" -l"libextobjc" -framework "Foundation" -framework "ImageIO" -framework "UIKit" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixed/Pods-ImageAndTextMixed.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/libextobjc" 4 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Masonry" "$PODS_CONFIGURATION_BUILD_DIR/SDWebImage" "$PODS_CONFIGURATION_BUILD_DIR/libextobjc" 5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -isystem "${PODS_ROOT}/Headers/Public/libextobjc" 6 | OTHER_LDFLAGS = $(inherited) -ObjC -l"Masonry" -l"SDWebImage" -l"libextobjc" -framework "Foundation" -framework "ImageIO" -framework "UIKit" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.h 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | #ifdef MAS_VIEW_CONTROLLER 14 | 15 | @interface MAS_VIEW_CONTROLLER (MASAdditions) 16 | 17 | /** 18 | * following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute 19 | */ 20 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide; 21 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide; 22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop; 23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom; 24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop; 25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom; 26 | 27 | 28 | @end 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/NSInvocation+EXT.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSInvocation+EXT.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2011-03-11. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | 12 | @interface NSInvocation (EXTExtensions) 13 | /** 14 | * Using the variadic arguments in \a args, initializes the arguments of this 15 | * invocation starting at index 2 (after 'self' and '_cmd'). The argument types 16 | * are determined using the invocation's method signature. 17 | * 18 | * Returns \c NO if an error occurs (such as being unable to retrieve an 19 | * argument for a certain type). 20 | * 21 | * @warning Due to the mechanics behind variable argument lists, this method cannot 22 | * be used with method signatures that involve \c struct or \c union parameters. 23 | * Blocks and function pointers may or may not also cause problems. Such 24 | * arguments must be set individually. 25 | */ 26 | - (BOOL)setArgumentsFromArgumentList:(va_list)args; 27 | @end 28 | -------------------------------------------------------------------------------- /ImageAndTextMixedTests/ImageAndTextMixedTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // ImageAndTextMixedTests.m 3 | // ImageAndTextMixedTests 4 | // 5 | // Created by syc on 17/5/11. 6 | // Copyright © 2017年 syc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ImageAndTextMixedTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation ImageAndTextMixedTests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | // Put setup code here. This method is called before the invocation of each test method in the class. 20 | } 21 | 22 | - (void)tearDown { 23 | // Put teardown code here. This method is called after the invocation of each test method in the class. 24 | [super tearDown]; 25 | } 26 | 27 | - (void)testExample { 28 | // This is an example of a functional test case. 29 | // Use XCTAssert and related functions to verify your tests produce the correct results. 30 | } 31 | 32 | - (void)testPerformanceExample { 33 | // This is an example of a performance test case. 34 | [self measureBlock:^{ 35 | // Put the code you want to measure the time of here. 36 | }]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/NSMethodSignature+EXT.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSMethodSignature+EXT.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2011-03-11. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | 12 | @interface NSMethodSignature (EXTExtensions) 13 | /** 14 | * Creates and returns a new method signature based off the receiver, but with 15 | * an additional argument of the given type at \a index. If \a index is greater 16 | * than the current number of arguments, the behavior is undefined. 17 | */ 18 | - (NSMethodSignature *)methodSignatureByInsertingType:(const char *)type atArgumentIndex:(NSUInteger)index; 19 | 20 | /** 21 | * Returns the Objective-C type encoding for this method signature, which 22 | * includes the return type and all arguments. The resultant string matches the 23 | * format of \c method_getTypeEncoding() and is suitable for passing to \c 24 | * class_addMethod() and similar facilities. 25 | * 26 | * @note The returned string is autoreleased. 27 | */ 28 | - (const char *)typeEncoding; 29 | @end 30 | -------------------------------------------------------------------------------- /Pods/libextobjc/LICENSE.md: -------------------------------------------------------------------------------- 1 | **Copyright (c) 2012 - 2014 Justin Spahr-Summers** 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software is furnished to do so, 8 | subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 15 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 16 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /ImageAndTextMixed/view/GAEditPhoto.h: -------------------------------------------------------------------------------- 1 | // 2 | // GAEditPhoto.h 3 | // GroupAdvertiseComponent 4 | // 5 | // Created by syc on 17/5/11. 6 | // Copyright © 2016年 ND. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface GAEditPhoto : UIView 12 | @property (nonatomic,strong) UIImage *addImage; 13 | @property (nonatomic,strong) UIImageView *addImageView; 14 | @property (nonatomic,strong) UIButton *deleButton; 15 | @property (nonatomic,strong) UIImageView *lodingImageView; 16 | @property (nonatomic,strong) UIView *loadingView; 17 | @property (nonatomic,strong) UIView *upFailView; 18 | @property (nonatomic,strong) UIButton *upFailButton; 19 | @property (nonatomic,strong) UILabel *upFailLable; 20 | @property (nonatomic,strong) UIView *maskView; 21 | @property (nonatomic,strong) UIButton *phtoDeleButton;; 22 | 23 | 24 | - (void)creatImageViewWith:(UIImage *)image andWidth:(CGFloat)width; 25 | - (void)addingLoadingView; 26 | - (void)addingDeleButton; 27 | - (void)addingUpfailView; 28 | - (void)setPhtoDeleButton; 29 | - (void)hideUpfailView; 30 | - (void)showUpfailView; 31 | - (void)showLoadingView; 32 | - (void)hideLoadingView; 33 | @end 34 | 35 | -------------------------------------------------------------------------------- /Pods/Masonry/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/SDWebImage/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016 Olivier Poitrey rs@dailymotion.com 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | 21 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageManager.h" 11 | 12 | @interface UIView (WebCacheOperation) 13 | 14 | /** 15 | * Set the image load operation (storage in a UIView based dictionary) 16 | * 17 | * @param operation the operation 18 | * @param key key for storing the operation 19 | */ 20 | - (void)sd_setImageLoadOperation:(id)operation forKey:(NSString *)key; 21 | 22 | /** 23 | * Cancel all operations for the current UIView and key 24 | * 25 | * @param key key for identifying the operations 26 | */ 27 | - (void)sd_cancelImageLoadOperationWithKey:(NSString *)key; 28 | 29 | /** 30 | * Just remove the operations corresponding to the current UIView and key without cancelling them 31 | * 32 | * @param key key for identifying the operations 33 | */ 34 | - (void)sd_removeImageLoadOperationWithKey:(NSString *)key; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTADT.m: -------------------------------------------------------------------------------- 1 | // 2 | // EXTADT.m 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 25.06.12. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTADT.h" 11 | 12 | const char *ext_trimADTJunkFromTypeEncoding (const char *encoding) { 13 | // we need to skip past two unions in the type string 14 | const char *next; 15 | 16 | for (int i = 0; i < 2; ++i) { 17 | next = strstr(encoding, "(?="); 18 | if (!next) 19 | break; 20 | 21 | encoding = next + 3; 22 | } 23 | 24 | return encoding; 25 | } 26 | 27 | NSString *ext_parameterNameFromDeclaration (NSString *declaration) { 28 | NSMutableCharacterSet *identifierCharacterSet = [[NSCharacterSet alphanumericCharacterSet] mutableCopy]; 29 | [identifierCharacterSet addCharactersInString:@"$_"]; 30 | 31 | // now invert, to get all characters disallowed in identifiers 32 | [identifierCharacterSet invert]; 33 | 34 | NSRange lastWhitespace = [declaration rangeOfCharacterFromSet:identifierCharacterSet options:NSBackwardsSearch]; 35 | return [declaration substringFromIndex:lastWhitespace.location + 1]; 36 | } 37 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+MASShorthandAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 22/07/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "NSArray+MASAdditions.h" 10 | 11 | #ifdef MAS_SHORTHAND 12 | 13 | /** 14 | * Shorthand array additions without the 'mas_' prefixes, 15 | * only enabled if MAS_SHORTHAND is defined 16 | */ 17 | @interface NSArray (MASShorthandAdditions) 18 | 19 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block; 20 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block; 21 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block; 22 | 23 | @end 24 | 25 | @implementation NSArray (MASShorthandAdditions) 26 | 27 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block { 28 | return [self mas_makeConstraints:block]; 29 | } 30 | 31 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block { 32 | return [self mas_updateConstraints:block]; 33 | } 34 | 35 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block { 36 | return [self mas_remakeConstraints:block]; 37 | } 38 | 39 | @end 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /ImageAndTextMixed/model/GAXMLModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // GAXMLModel.m 3 | // GroupAdvertiseComponent 4 | // 5 | // Created by syc on 16/8/24. 6 | // Copyright © 2016年 ND. All rights reserved. 7 | // 8 | 9 | #import "GAXMLModel.h" 10 | 11 | @implementation GAXMLModel 12 | 13 | - (id)initWithContentText:(NSString *)text imageSrc:(NSString *)src imageMime:(NSString *)mime imageWidth:(NSString *)width imageHeight:(NSString *)height imageSize:(NSString *)size imageAlt:(NSString *)alt imageStyle:(NSString *)style{ 14 | if (self = [super init]) { 15 | _text = [text copy]; 16 | _src = [src copy]; 17 | _mime = [mime copy]; 18 | _width = [width copy]; 19 | _height = [height copy]; 20 | _size = [size copy]; 21 | _alt = [alt copy]; 22 | _style = [style copy]; 23 | } 24 | return self; 25 | } 26 | 27 | +(id)getXMLModelWithContentText:(NSString *)text imageSrc:(NSString *)src imageMime:(NSString *)mime imageWidth:(NSString *)width imageHeight:(NSString *)height imageSize:(NSString *)size imageAlt:(NSString *)alt imageStyle:(NSString *)style{ 28 | return [[self alloc]initWithContentText:text imageSrc:src imageMime:mime imageWidth:width imageHeight:height imageSize:size imageAlt:alt imageStyle:style]; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTNil.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTNil.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2011-04-25. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | 12 | /** 13 | * Like \c NSNull, this class provides a singleton object that can be used to 14 | * represent a \c NULL or \c nil value. Unlike \c NSNull, this object behaves 15 | * more similarly to a \c nil object, responding to messages with "zero" values. 16 | * This eliminates the need for \c NSNull class or equality checks with 17 | * collections that need to contain null values. 18 | * 19 | * This class will pretend to be \c NSNull when queried for its class or 20 | * compared for equality, to keep compatibility with code that expects or uses 21 | * \c NSNull. 22 | * 23 | * @note Because this class does still behave like an object in some ways, it 24 | * will respond to certain \c NSObject protocol methods where an actually \c nil 25 | * object would not. 26 | */ 27 | @interface EXTNil : NSProxy { 28 | 29 | } 30 | 31 | /** 32 | * Returns the singleton \c EXTNil instance. This naming matches that of \c 33 | * NSNull -- \c nil as a method name is unusable because it is a language 34 | * keyword. 35 | */ 36 | + (id)null; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASViewAttribute.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASAttribute.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | 11 | @implementation MASViewAttribute 12 | 13 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute { 14 | self = [self initWithView:view item:view layoutAttribute:layoutAttribute]; 15 | return self; 16 | } 17 | 18 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute { 19 | self = [super init]; 20 | if (!self) return nil; 21 | 22 | _view = view; 23 | _item = item; 24 | _layoutAttribute = layoutAttribute; 25 | 26 | return self; 27 | } 28 | 29 | - (BOOL)isSizeAttribute { 30 | return self.layoutAttribute == NSLayoutAttributeWidth 31 | || self.layoutAttribute == NSLayoutAttributeHeight; 32 | } 33 | 34 | - (BOOL)isEqual:(MASViewAttribute *)viewAttribute { 35 | if ([viewAttribute isKindOfClass:self.class]) { 36 | return self.view == viewAttribute.view 37 | && self.layoutAttribute == viewAttribute.layoutAttribute; 38 | } 39 | return [super isEqual:viewAttribute]; 40 | } 41 | 42 | - (NSUInteger)hash { 43 | return MAS_NSUINTROTATE([self.view hash], MAS_NSUINT_BIT / 2) ^ self.layoutAttribute; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Fabrice Aneche on 06/01/14. 3 | // Copyright (c) 2014 Dailymotion. All rights reserved. 4 | // 5 | 6 | #import "NSData+ImageContentType.h" 7 | 8 | 9 | @implementation NSData (ImageContentType) 10 | 11 | + (NSString *)sd_contentTypeForImageData:(NSData *)data { 12 | uint8_t c; 13 | [data getBytes:&c length:1]; 14 | switch (c) { 15 | case 0xFF: 16 | return @"image/jpeg"; 17 | case 0x89: 18 | return @"image/png"; 19 | case 0x47: 20 | return @"image/gif"; 21 | case 0x49: 22 | case 0x4D: 23 | return @"image/tiff"; 24 | case 0x52: 25 | // R as RIFF for WEBP 26 | if ([data length] < 12) { 27 | return nil; 28 | } 29 | 30 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding]; 31 | if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) { 32 | return @"image/webp"; 33 | } 34 | 35 | return nil; 36 | } 37 | return nil; 38 | } 39 | 40 | @end 41 | 42 | 43 | @implementation NSData (ImageContentTypeDeprecated) 44 | 45 | + (NSString *)contentTypeForImageData:(NSData *)data { 46 | return [self sd_contentTypeForImageData:data]; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /ImageAndTextMixed/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /ImageAndTextMixedUITests/ImageAndTextMixedUITests.m: -------------------------------------------------------------------------------- 1 | // 2 | // ImageAndTextMixedUITests.m 3 | // ImageAndTextMixedUITests 4 | // 5 | // Created by syc on 17/5/11. 6 | // Copyright © 2017年 syc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ImageAndTextMixedUITests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation ImageAndTextMixedUITests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | 22 | // In UI tests it is usually best to stop immediately when a failure occurs. 23 | self.continueAfterFailure = NO; 24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 25 | [[[XCUIApplication alloc] init] launch]; 26 | 27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 28 | } 29 | 30 | - (void)tearDown { 31 | // Put teardown code here. This method is called after the invocation of each test method in the class. 32 | [super tearDown]; 33 | } 34 | 35 | - (void)testExample { 36 | // Use recording to get started writing UI tests. 37 | // Use XCTAssert and related functions to verify your tests produce the correct results. 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASAttribute.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * An immutable tuple which stores the view and the related NSLayoutAttribute. 13 | * Describes part of either the left or right hand side of a constraint equation 14 | */ 15 | @interface MASViewAttribute : NSObject 16 | 17 | /** 18 | * The view which the reciever relates to. Can be nil if item is not a view. 19 | */ 20 | @property (nonatomic, weak, readonly) MAS_VIEW *view; 21 | 22 | /** 23 | * The item which the reciever relates to. 24 | */ 25 | @property (nonatomic, weak, readonly) id item; 26 | 27 | /** 28 | * The attribute which the reciever relates to 29 | */ 30 | @property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute; 31 | 32 | /** 33 | * Convenience initializer. 34 | */ 35 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute; 36 | 37 | /** 38 | * The designated initializer. 39 | */ 40 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute; 41 | 42 | /** 43 | * Determine whether the layoutAttribute is a size attribute 44 | * 45 | * @return YES if layoutAttribute is equal to NSLayoutAttributeWidth or NSLayoutAttributeHeight 46 | */ 47 | - (BOOL)isSizeAttribute; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/ViewController+MASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.m 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "ViewController+MASAdditions.h" 10 | 11 | #ifdef MAS_VIEW_CONTROLLER 12 | 13 | @implementation MAS_VIEW_CONTROLLER (MASAdditions) 14 | 15 | - (MASViewAttribute *)mas_topLayoutGuide { 16 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 17 | } 18 | - (MASViewAttribute *)mas_topLayoutGuideTop { 19 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 20 | } 21 | - (MASViewAttribute *)mas_topLayoutGuideBottom { 22 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 23 | } 24 | 25 | - (MASViewAttribute *)mas_bottomLayoutGuide { 26 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 27 | } 28 | - (MASViewAttribute *)mas_bottomLayoutGuideTop { 29 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 30 | } 31 | - (MASViewAttribute *)mas_bottomLayoutGuideBottom { 32 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 33 | } 34 | 35 | 36 | 37 | @end 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | #import "MASConstraint.h" 11 | #import "MASLayoutConstraint.h" 12 | #import "MASUtilities.h" 13 | 14 | /** 15 | * A single constraint. 16 | * Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view 17 | */ 18 | @interface MASViewConstraint : MASConstraint 19 | 20 | /** 21 | * First item/view and first attribute of the NSLayoutConstraint 22 | */ 23 | @property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute; 24 | 25 | /** 26 | * Second item/view and second attribute of the NSLayoutConstraint 27 | */ 28 | @property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute; 29 | 30 | /** 31 | * initialises the MASViewConstraint with the first part of the equation 32 | * 33 | * @param firstViewAttribute view.mas_left, view.mas_width etc. 34 | * 35 | * @return a new view constraint 36 | */ 37 | - (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute; 38 | 39 | /** 40 | * Returns all MASViewConstraints installed with this view as a first item. 41 | * 42 | * @param view A view to retrieve constraints for. 43 | * 44 | * @return An array of MASViewConstraints. 45 | */ 46 | + (NSArray *)installedConstraintsForView:(MAS_VIEW *)view; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /ImageAndTextMixed/untill/UIImage+GAImage.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+GAImage.m 3 | // GroupAdvertiseComponent 4 | // 5 | // Created by syc on 16/8/16. 6 | // Copyright © 2016年 ND. All rights reserved. 7 | // 8 | 9 | #import "UIImage+GAImage.h" 10 | 11 | @implementation UIImage (GAImage) 12 | 13 | /** 14 | 缩放图片 15 | 16 | @param size 缩放的size 17 | @return 缩放后的图片 18 | */ 19 | - (UIImage *)scaleToSize:(CGSize)size{ 20 | // 创建一个bitmap的context 21 | // 并把它设置成为当前正在使用的context 22 | UIGraphicsBeginImageContext(size); 23 | // 绘制改变大小的图片 24 | [self drawInRect:CGRectMake(0, 0, size.width, size.height)]; 25 | // 从当前context中创建一个改变大小后的图片 26 | UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 27 | // 使当前的context出堆栈 28 | UIGraphicsEndImageContext(); 29 | // 返回新的改变大小后的图片 30 | return scaledImage; 31 | } 32 | 33 | /** 34 | 改变图片的透明度 35 | 36 | @param alpha 透明度 37 | @param image 图片 38 | @return 改变后的图片 39 | */ 40 | 41 | - (UIImage *)imageByApplyingAlpha:(CGFloat)alpha image:(UIImage*)image { 42 | UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0f); 43 | 44 | CGContextRef ctx = UIGraphicsGetCurrentContext(); 45 | CGRect area = CGRectMake(0, 0, image.size.width, image.size.height); 46 | 47 | CGContextScaleCTM(ctx, 1, -1); 48 | CGContextTranslateCTM(ctx, 0, -area.size.height); 49 | 50 | CGContextSetBlendMode(ctx, kCGBlendModeMultiply); 51 | 52 | CGContextSetAlpha(ctx, alpha); 53 | 54 | CGContextDrawImage(ctx, area, image.CGImage); 55 | 56 | UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 57 | 58 | UIGraphicsEndImageContext(); 59 | 60 | return newImage; 61 | } 62 | 63 | @end 64 | -------------------------------------------------------------------------------- /ImageAndTextMixed/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 | NSPhotoLibraryUsageDescription 24 | 是否同意访问相册 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTSafeCategory.m: -------------------------------------------------------------------------------- 1 | // 2 | // EXTSafeCategory.m 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2010-11-13. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTSafeCategory.h" 11 | #import "EXTRuntimeExtensions.h" 12 | #import 13 | 14 | static 15 | void safeCategoryMethodFailed (Class cls, Method method) { 16 | const char *methodName = sel_getName(method_getName(method)); 17 | const char *className = class_getName(cls); 18 | 19 | BOOL isMeta = class_isMetaClass(cls); 20 | if (isMeta) 21 | fprintf(stderr, "ERROR: Could not add class method +%s to %s (a method by the same name already exists)\n", methodName, className); 22 | else 23 | fprintf(stderr, "ERROR: Could not add instance method -%s to %s (a method by the same name already exists)\n", methodName, className); 24 | } 25 | 26 | /** 27 | * This loads a safe category into the destination class, making sure not to 28 | * overwrite any methods that already exist. \a methodContainer is the class 29 | * containing the methods defined in the safe category. \a targetClass is the 30 | * destination of the methods. 31 | * 32 | * Returns \c YES if all methods loaded without conflicts, or \c NO if 33 | * loading failed, whether due to a naming conflict or some other error. 34 | */ 35 | BOOL ext_loadSafeCategory (Class methodContainer, Class targetClass) { 36 | if (!methodContainer || !targetClass) 37 | return NO; 38 | 39 | return ext_injectMethodsFromClass( 40 | methodContainer, 41 | targetClass, 42 | ext_methodInjectionFailOnAnyExisting | ext_methodInjectionIgnoreLoad, 43 | &safeCategoryMethodFailed 44 | ); 45 | } 46 | 47 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageCompat.m: -------------------------------------------------------------------------------- 1 | // 2 | // SDWebImageCompat.m 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 11/12/12. 6 | // Copyright (c) 2012 Dailymotion. All rights reserved. 7 | // 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | #if !__has_feature(objc_arc) 12 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag 13 | #endif 14 | 15 | inline UIImage *SDScaledImageForKey(NSString *key, UIImage *image) { 16 | if (!image) { 17 | return nil; 18 | } 19 | 20 | if ([image.images count] > 0) { 21 | NSMutableArray *scaledImages = [NSMutableArray array]; 22 | 23 | for (UIImage *tempImage in image.images) { 24 | [scaledImages addObject:SDScaledImageForKey(key, tempImage)]; 25 | } 26 | 27 | return [UIImage animatedImageWithImages:scaledImages duration:image.duration]; 28 | } 29 | else { 30 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { 31 | CGFloat scale = 1; 32 | if (key.length >= 8) { 33 | NSRange range = [key rangeOfString:@"@2x."]; 34 | if (range.location != NSNotFound) { 35 | scale = 2.0; 36 | } 37 | 38 | range = [key rangeOfString:@"@3x."]; 39 | if (range.location != NSNotFound) { 40 | scale = 3.0; 41 | } 42 | } 43 | 44 | UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; 45 | image = scaledImage; 46 | } 47 | return image; 48 | } 49 | } 50 | 51 | NSString *const SDWebImageErrorDomain = @"SDWebImageErrorDomain"; 52 | -------------------------------------------------------------------------------- /ImageAndTextMixed/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 | -------------------------------------------------------------------------------- /ImageAndTextMixed/model/GAXMLModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // GAXMLModel.h 3 | // GroupAdvertiseComponent 4 | // 5 | // Created by syc on 16/8/24. 6 | // Copyright © 2016年 ND. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface GAXMLModel : NSObject 13 | /** 14 | * 内容文本text 15 | */ 16 | @property (nonatomic, copy) NSString *text; 17 | 18 | /** 19 | * 内容图片地址src 20 | */ 21 | @property (nonatomic, copy) NSString *src; 22 | 23 | /** 24 | * 内容图片类型mime 25 | */ 26 | @property (nonatomic, copy) NSString *mime; 27 | 28 | /** 29 | * 内容图片宽width 30 | */ 31 | @property (nonatomic, copy) NSString *width; 32 | 33 | /** 34 | * 内容图片高height 35 | */ 36 | @property (nonatomic, copy) NSString *height; 37 | 38 | /** 39 | * 内容图片大小size 40 | */ 41 | @property (nonatomic, copy) NSString *size; 42 | 43 | /** 44 | * 内容图片说明alt 45 | */ 46 | @property (nonatomic, copy) NSString *alt; 47 | /** 48 | * 内容style 49 | */ 50 | @property (nonatomic, copy) NSString *style; 51 | 52 | /** 53 | * 内容image 54 | */ 55 | @property (nonatomic, strong) UIImage *image; 56 | 57 | 58 | 59 | /** 60 | 获取XMLModel 61 | 62 | @param text 文本信息 63 | @param src 图片地址 64 | @param mimei 内容图片类型mime 65 | @param width 内容图片宽 66 | @param height 内容图片高 67 | @param size 内容图片大小size 68 | @param alt 内容图片说明alt 69 | @param style 内容style 70 | @return 内容image 71 | */ 72 | +(id)getXMLModelWithContentText:(NSString *)text 73 | imageSrc:(NSString *)src 74 | imageMime:(NSString *)mimei 75 | imageWidth:(NSString *)width 76 | imageHeight:(NSString *)height 77 | imageSize:(NSString *)size 78 | imageAlt:(NSString *)alt 79 | imageStyle:(NSString *)style; 80 | @end 81 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/syc.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Masonry.xcscheme 8 | 9 | isShown 10 | 11 | 12 | Pods-ImageAndTextMixed.xcscheme 13 | 14 | isShown 15 | 16 | 17 | Pods-ImageAndTextMixedTests.xcscheme 18 | 19 | isShown 20 | 21 | 22 | Pods-ImageAndTextMixedUITests.xcscheme 23 | 24 | isShown 25 | 26 | 27 | SDWebImage.xcscheme 28 | 29 | isShown 30 | 31 | 32 | libextobjc.xcscheme 33 | 34 | isShown 35 | 36 | 37 | 38 | SuppressBuildableAutocreation 39 | 40 | 0D0D895341BA637BE708B6FC97974C88 41 | 42 | primary 43 | 44 | 45 | 2A4E0EB1B1C8D362360F54FE8F9D3C64 46 | 47 | primary 48 | 49 | 50 | 2DEAA3CF69A465A9A9022576124B41ED 51 | 52 | primary 53 | 54 | 55 | 3D119A72A9976FCF4F28673C3CF6D6B0 56 | 57 | primary 58 | 59 | 60 | 53480ED0BE09FF49E34B1702D485CAAB 61 | 62 | primary 63 | 64 | 65 | 7E41CA2ECB40C640963734378302229C 66 | 67 | primary 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /ImageAndTextMixed/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 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTSelectorChecking.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTSelectorChecking.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 26.06.12. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | #import "metamacros.h" 12 | 13 | /** 14 | * \@checkselector verifies at compile-time that a selector can be invoked 15 | * against the given TARGET. The checked selector is then returned as a SEL. 16 | * 17 | * The variadic arguments should be pieces of the selector, each ending with 18 | * ':'. For example: 19 | * 20 | * @code 21 | 22 | [myButton addTarget:self action:@checkselector(self, buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 23 | [otherButton addTarget:self action:@checkselector(self, buttonAction:, withEvent:) forControlEvents:UIControlEventTouchUpInside]; 24 | 25 | * @endcode 26 | * 27 | * For zero-argument selectors, use \@checkselector0 instead. 28 | * 29 | * @bug This macro currently does not work with selectors with variadic 30 | * arguments. 31 | * 32 | * @bug This macro will not work if the method on TARGET designated by the 33 | * selector must accept a struct or union argument. 34 | */ 35 | #define checkselector(TARGET, ...) \ 36 | (((void)(NO && ((void)[TARGET metamacro_foreach(ext_checkselector_message_iter,, __VA_ARGS__)], NO)), \ 37 | metamacro_foreach(ext_checkselector_selector_iter,, __VA_ARGS__))).ext_toSelector 38 | 39 | #define checkselector0(TARGET, SELECTOR) \ 40 | (((void)(NO && ((void)[TARGET SELECTOR], NO)), \ 41 | # SELECTOR)).ext_toSelector 42 | 43 | /*** implementation details follow ***/ 44 | #define ext_checkselector_message_iter(INDEX, SELPART) \ 45 | SELPART (0) 46 | 47 | #define ext_checkselector_selector_iter(INDEX, SELPART) \ 48 | # SELPART 49 | 50 | @interface NSString (EXTCheckedSelectorAdditions) 51 | - (SEL)ext_toSelector; 52 | @end 53 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - libextobjc (0.4.1): 3 | - libextobjc/EXTADT (= 0.4.1) 4 | - libextobjc/EXTConcreteProtocol (= 0.4.1) 5 | - libextobjc/EXTKeyPathCoding (= 0.4.1) 6 | - libextobjc/EXTNil (= 0.4.1) 7 | - libextobjc/EXTSafeCategory (= 0.4.1) 8 | - libextobjc/EXTScope (= 0.4.1) 9 | - libextobjc/EXTSelectorChecking (= 0.4.1) 10 | - libextobjc/EXTSynthesize (= 0.4.1) 11 | - libextobjc/NSInvocation+EXT (= 0.4.1) 12 | - libextobjc/NSMethodSignature+EXT (= 0.4.1) 13 | - libextobjc/RuntimeExtensions (= 0.4.1) 14 | - libextobjc/UmbrellaHeader (= 0.4.1) 15 | - libextobjc/EXTADT (0.4.1): 16 | - libextobjc/RuntimeExtensions 17 | - libextobjc/EXTConcreteProtocol (0.4.1): 18 | - libextobjc/RuntimeExtensions 19 | - libextobjc/EXTKeyPathCoding (0.4.1): 20 | - libextobjc/RuntimeExtensions 21 | - libextobjc/EXTNil (0.4.1): 22 | - libextobjc/RuntimeExtensions 23 | - libextobjc/EXTSafeCategory (0.4.1): 24 | - libextobjc/RuntimeExtensions 25 | - libextobjc/EXTScope (0.4.1): 26 | - libextobjc/RuntimeExtensions 27 | - libextobjc/EXTSelectorChecking (0.4.1): 28 | - libextobjc/RuntimeExtensions 29 | - libextobjc/EXTSynthesize (0.4.1): 30 | - libextobjc/RuntimeExtensions 31 | - libextobjc/NSInvocation+EXT (0.4.1): 32 | - libextobjc/RuntimeExtensions 33 | - libextobjc/NSMethodSignature+EXT (0.4.1): 34 | - libextobjc/RuntimeExtensions 35 | - libextobjc/RuntimeExtensions (0.4.1) 36 | - libextobjc/UmbrellaHeader (0.4.1) 37 | - Masonry (1.0.2) 38 | - SDWebImage (3.8.2): 39 | - SDWebImage/Core (= 3.8.2) 40 | - SDWebImage/Core (3.8.2) 41 | 42 | DEPENDENCIES: 43 | - libextobjc 44 | - Masonry 45 | - SDWebImage 46 | 47 | SPEC CHECKSUMS: 48 | libextobjc: a650fc1bf489a3d3a9bc2e621efa3e1006fc5471 49 | Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e 50 | SDWebImage: 098e97e6176540799c27e804c96653ee0833d13c 51 | 52 | PODFILE CHECKSUM: e21e3725e202d0c078ddd5732967c146e524ecf2 53 | 54 | COCOAPODS: 1.1.1 55 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - libextobjc (0.4.1): 3 | - libextobjc/EXTADT (= 0.4.1) 4 | - libextobjc/EXTConcreteProtocol (= 0.4.1) 5 | - libextobjc/EXTKeyPathCoding (= 0.4.1) 6 | - libextobjc/EXTNil (= 0.4.1) 7 | - libextobjc/EXTSafeCategory (= 0.4.1) 8 | - libextobjc/EXTScope (= 0.4.1) 9 | - libextobjc/EXTSelectorChecking (= 0.4.1) 10 | - libextobjc/EXTSynthesize (= 0.4.1) 11 | - libextobjc/NSInvocation+EXT (= 0.4.1) 12 | - libextobjc/NSMethodSignature+EXT (= 0.4.1) 13 | - libextobjc/RuntimeExtensions (= 0.4.1) 14 | - libextobjc/UmbrellaHeader (= 0.4.1) 15 | - libextobjc/EXTADT (0.4.1): 16 | - libextobjc/RuntimeExtensions 17 | - libextobjc/EXTConcreteProtocol (0.4.1): 18 | - libextobjc/RuntimeExtensions 19 | - libextobjc/EXTKeyPathCoding (0.4.1): 20 | - libextobjc/RuntimeExtensions 21 | - libextobjc/EXTNil (0.4.1): 22 | - libextobjc/RuntimeExtensions 23 | - libextobjc/EXTSafeCategory (0.4.1): 24 | - libextobjc/RuntimeExtensions 25 | - libextobjc/EXTScope (0.4.1): 26 | - libextobjc/RuntimeExtensions 27 | - libextobjc/EXTSelectorChecking (0.4.1): 28 | - libextobjc/RuntimeExtensions 29 | - libextobjc/EXTSynthesize (0.4.1): 30 | - libextobjc/RuntimeExtensions 31 | - libextobjc/NSInvocation+EXT (0.4.1): 32 | - libextobjc/RuntimeExtensions 33 | - libextobjc/NSMethodSignature+EXT (0.4.1): 34 | - libextobjc/RuntimeExtensions 35 | - libextobjc/RuntimeExtensions (0.4.1) 36 | - libextobjc/UmbrellaHeader (0.4.1) 37 | - Masonry (1.0.2) 38 | - SDWebImage (3.8.2): 39 | - SDWebImage/Core (= 3.8.2) 40 | - SDWebImage/Core (3.8.2) 41 | 42 | DEPENDENCIES: 43 | - libextobjc 44 | - Masonry 45 | - SDWebImage 46 | 47 | SPEC CHECKSUMS: 48 | libextobjc: a650fc1bf489a3d3a9bc2e621efa3e1006fc5471 49 | Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e 50 | SDWebImage: 098e97e6176540799c27e804c96653ee0833d13c 51 | 52 | PODFILE CHECKSUM: e21e3725e202d0c078ddd5732967c146e524ecf2 53 | 54 | COCOAPODS: 1.1.1 55 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASConstraint+Private.h 3 | // Masonry 4 | // 5 | // Created by Nick Tymchenko on 29/04/14. 6 | // Copyright (c) 2014 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | 11 | @protocol MASConstraintDelegate; 12 | 13 | 14 | @interface MASConstraint () 15 | 16 | /** 17 | * Whether or not to check for an existing constraint instead of adding constraint 18 | */ 19 | @property (nonatomic, assign) BOOL updateExisting; 20 | 21 | /** 22 | * Usually MASConstraintMaker but could be a parent MASConstraint 23 | */ 24 | @property (nonatomic, weak) id delegate; 25 | 26 | /** 27 | * Based on a provided value type, is equal to calling: 28 | * NSNumber - setOffset: 29 | * NSValue with CGPoint - setPointOffset: 30 | * NSValue with CGSize - setSizeOffset: 31 | * NSValue with MASEdgeInsets - setInsets: 32 | */ 33 | - (void)setLayoutConstantWithValue:(NSValue *)value; 34 | 35 | @end 36 | 37 | 38 | @interface MASConstraint (Abstract) 39 | 40 | /** 41 | * Sets the constraint relation to given NSLayoutRelation 42 | * returns a block which accepts one of the following: 43 | * MASViewAttribute, UIView, NSValue, NSArray 44 | * see readme for more details. 45 | */ 46 | - (MASConstraint * (^)(id, NSLayoutRelation))equalToWithRelation; 47 | 48 | /** 49 | * Override to set a custom chaining behaviour 50 | */ 51 | - (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute; 52 | 53 | @end 54 | 55 | 56 | @protocol MASConstraintDelegate 57 | 58 | /** 59 | * Notifies the delegate when the constraint needs to be replaced with another constraint. For example 60 | * A MASViewConstraint may turn into a MASCompositeConstraint when an array is passed to one of the equality blocks 61 | */ 62 | - (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(MASConstraint *)replacementConstraint; 63 | 64 | - (MASConstraint *)constraint:(MASConstraint *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute; 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Jamie Pinkham 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import 11 | 12 | #ifdef __OBJC_GC__ 13 | #error SDWebImage does not support Objective-C Garbage Collection 14 | #endif 15 | 16 | #if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0 17 | #error SDWebImage doesn't support Deployment Target version < 5.0 18 | #endif 19 | 20 | #if !TARGET_OS_IPHONE 21 | #import 22 | #ifndef UIImage 23 | #define UIImage NSImage 24 | #endif 25 | #ifndef UIImageView 26 | #define UIImageView NSImageView 27 | #endif 28 | #else 29 | 30 | #import 31 | 32 | #endif 33 | 34 | #ifndef NS_ENUM 35 | #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type 36 | #endif 37 | 38 | #ifndef NS_OPTIONS 39 | #define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type 40 | #endif 41 | 42 | #if OS_OBJECT_USE_OBJC 43 | #undef SDDispatchQueueRelease 44 | #undef SDDispatchQueueSetterSementics 45 | #define SDDispatchQueueRelease(q) 46 | #define SDDispatchQueueSetterSementics strong 47 | #else 48 | #undef SDDispatchQueueRelease 49 | #undef SDDispatchQueueSetterSementics 50 | #define SDDispatchQueueRelease(q) (dispatch_release(q)) 51 | #define SDDispatchQueueSetterSementics assign 52 | #endif 53 | 54 | extern UIImage *SDScaledImageForKey(NSString *key, UIImage *image); 55 | 56 | typedef void(^SDWebImageNoParamsBlock)(); 57 | 58 | extern NSString *const SDWebImageErrorDomain; 59 | 60 | #define dispatch_main_sync_safe(block)\ 61 | if ([NSThread isMainThread]) {\ 62 | block();\ 63 | } else {\ 64 | dispatch_sync(dispatch_get_main_queue(), block);\ 65 | } 66 | 67 | #define dispatch_main_async_safe(block)\ 68 | if ([NSThread isMainThread]) {\ 69 | block();\ 70 | } else {\ 71 | dispatch_async(dispatch_get_main_queue(), block);\ 72 | } 73 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIView+WebCacheOperation.h" 10 | #import "objc/runtime.h" 11 | 12 | static char loadOperationKey; 13 | 14 | @implementation UIView (WebCacheOperation) 15 | 16 | - (NSMutableDictionary *)operationDictionary { 17 | NSMutableDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey); 18 | if (operations) { 19 | return operations; 20 | } 21 | operations = [NSMutableDictionary dictionary]; 22 | objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 23 | return operations; 24 | } 25 | 26 | - (void)sd_setImageLoadOperation:(id)operation forKey:(NSString *)key { 27 | [self sd_cancelImageLoadOperationWithKey:key]; 28 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 29 | [operationDictionary setObject:operation forKey:key]; 30 | } 31 | 32 | - (void)sd_cancelImageLoadOperationWithKey:(NSString *)key { 33 | // Cancel in progress downloader from queue 34 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 35 | id operations = [operationDictionary objectForKey:key]; 36 | if (operations) { 37 | if ([operations isKindOfClass:[NSArray class]]) { 38 | for (id operation in operations) { 39 | if (operation) { 40 | [operation cancel]; 41 | } 42 | } 43 | } else if ([operations conformsToProtocol:@protocol(SDWebImageOperation)]){ 44 | [(id) operations cancel]; 45 | } 46 | [operationDictionary removeObjectForKey:key]; 47 | } 48 | } 49 | 50 | - (void)sd_removeImageLoadOperationWithKey:(NSString *)key { 51 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 52 | [operationDictionary removeObjectForKey:key]; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTNil.m: -------------------------------------------------------------------------------- 1 | // 2 | // EXTNil.m 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2011-04-25. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTNil.h" 11 | #import "EXTRuntimeExtensions.h" 12 | 13 | static id singleton = nil; 14 | 15 | @implementation EXTNil 16 | + (void)initialize { 17 | if (self == [EXTNil class]) { 18 | if (!singleton) 19 | singleton = [self alloc]; 20 | } 21 | } 22 | 23 | + (EXTNil *)null { 24 | return singleton; 25 | } 26 | 27 | - (id)init { 28 | return self; 29 | } 30 | 31 | #pragma mark NSCopying 32 | 33 | - (id)copyWithZone:(NSZone *)zone { 34 | return self; 35 | } 36 | 37 | #pragma mark Forwarding machinery 38 | 39 | - (void)forwardInvocation:(NSInvocation *)anInvocation { 40 | NSUInteger returnLength = [[anInvocation methodSignature] methodReturnLength]; 41 | if (!returnLength) { 42 | // nothing to do 43 | return; 44 | } 45 | 46 | // set return value to all zero bits 47 | char buffer[returnLength]; 48 | memset(buffer, 0, returnLength); 49 | 50 | [anInvocation setReturnValue:buffer]; 51 | } 52 | 53 | - (NSMethodSignature *)methodSignatureForSelector:(SEL)selector { 54 | return ext_globalMethodSignatureForSelector(selector); 55 | } 56 | 57 | - (BOOL)respondsToSelector:(SEL)selector { 58 | // behave like nil 59 | return NO; 60 | } 61 | 62 | #pragma mark NSObject protocol 63 | 64 | - (BOOL)conformsToProtocol:(Protocol *)aProtocol { 65 | return NO; 66 | } 67 | 68 | - (NSUInteger)hash { 69 | return 0; 70 | } 71 | 72 | - (BOOL)isEqual:(id)obj { 73 | return !obj || obj == self || [obj isEqual:[NSNull null]]; 74 | } 75 | 76 | - (BOOL)isKindOfClass:(Class)class { 77 | return [class isEqual:[EXTNil class]] || [class isEqual:[NSNull class]]; 78 | } 79 | 80 | - (BOOL)isMemberOfClass:(Class)class { 81 | return [class isEqual:[EXTNil class]] || [class isEqual:[NSNull class]]; 82 | } 83 | 84 | - (BOOL)isProxy { 85 | // not really a proxy -- we just inherit from NSProxy because it makes 86 | // method signature lookup simpler 87 | return NO; 88 | } 89 | 90 | @end 91 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/syc.xcuserdatad/xcschemes/Masonry.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/syc.xcuserdatad/xcschemes/SDWebImage.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/syc.xcuserdatad/xcschemes/libextobjc.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/syc.xcuserdatad/xcschemes/Pods-ImageAndTextMixed.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 | -------------------------------------------------------------------------------- /ImageAndTextMixed/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // ImageAndTextMixed 4 | // 5 | // Created by syc on 17/5/11. 6 | // Copyright © 2017年 syc. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "ViewController.h" 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 | UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:[ViewController new]]; 21 | self.window.rootViewController = nav; 22 | return YES; 23 | } 24 | 25 | 26 | - (void)applicationWillResignActive:(UIApplication *)application { 27 | // 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. 28 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 29 | } 30 | 31 | 32 | - (void)applicationDidEnterBackground:(UIApplication *)application { 33 | // 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. 34 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 35 | } 36 | 37 | 38 | - (void)applicationWillEnterForeground:(UIApplication *)application { 39 | // 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. 40 | } 41 | 42 | 43 | - (void)applicationDidBecomeActive:(UIApplication *)application { 44 | // 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. 45 | } 46 | 47 | 48 | - (void)applicationWillTerminate:(UIApplication *)application { 49 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 50 | } 51 | 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/syc.xcuserdatad/xcschemes/Pods-ImageAndTextMixedTests.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/syc.xcuserdatad/xcschemes/Pods-ImageAndTextMixedUITests.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/libextobjc/extobjc/EXTKeyPathCoding.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTKeyPathCoding.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 19.06.12. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | #import "metamacros.h" 12 | 13 | /** 14 | * \@keypath allows compile-time verification of key paths. Given a real object 15 | * receiver and key path: 16 | * 17 | * @code 18 | 19 | NSString *UTF8StringPath = @keypath(str.lowercaseString.UTF8String); 20 | // => @"lowercaseString.UTF8String" 21 | 22 | NSString *versionPath = @keypath(NSObject, version); 23 | // => @"version" 24 | 25 | NSString *lowercaseStringPath = @keypath(NSString.new, lowercaseString); 26 | // => @"lowercaseString" 27 | 28 | * @endcode 29 | * 30 | * ... the macro returns an \c NSString containing all but the first path 31 | * component or argument (e.g., @"lowercaseString.UTF8String", @"version"). 32 | * 33 | * In addition to simply creating a key path, this macro ensures that the key 34 | * path is valid at compile-time (causing a syntax error if not), and supports 35 | * refactoring, such that changing the name of the property will also update any 36 | * uses of \@keypath. 37 | */ 38 | #define keypath(...) \ 39 | _Pragma("clang diagnostic push") \ 40 | _Pragma("clang diagnostic ignored \"-Warc-repeated-use-of-weak\"") \ 41 | metamacro_if_eq(1, metamacro_argcount(__VA_ARGS__))(keypath1(__VA_ARGS__))(keypath2(__VA_ARGS__)) \ 42 | _Pragma("clang diagnostic pop") \ 43 | 44 | #define keypath1(PATH) \ 45 | (((void)(NO && ((void)PATH, NO)), strchr(# PATH, '.') + 1)) 46 | 47 | #define keypath2(OBJ, PATH) \ 48 | (((void)(NO && ((void)OBJ.PATH, NO)), # PATH)) 49 | 50 | /** 51 | * \@collectionKeypath allows compile-time verification of key paths across collections NSArray/NSSet etc. Given a real object 52 | * receiver, collection object receiver and related keypaths: 53 | * 54 | * @code 55 | 56 | NSString *employessFirstNamePath = @collectionKeypath(department.employees, Employee.new, firstName) 57 | // => @"employees.firstName" 58 | 59 | NSString *employessFirstNamePath = @collectionKeypath(Department.new, employees, Employee.new, firstName) 60 | // => @"employees.firstName" 61 | 62 | * @endcode 63 | * 64 | */ 65 | #define collectionKeypath(...) \ 66 | metamacro_if_eq(3, metamacro_argcount(__VA_ARGS__))(collectionKeypath3(__VA_ARGS__))(collectionKeypath4(__VA_ARGS__)) 67 | 68 | #define collectionKeypath3(PATH, COLLECTION_OBJECT, COLLECTION_PATH) ([[NSString stringWithFormat:@"%s.%s",keypath(PATH), keypath(COLLECTION_OBJECT, COLLECTION_PATH)] UTF8String]) 69 | 70 | #define collectionKeypath4(OBJ, PATH, COLLECTION_OBJECT, COLLECTION_PATH) ([[NSString stringWithFormat:@"%s.%s",keypath(OBJ, PATH), keypath(COLLECTION_OBJECT, COLLECTION_PATH)] UTF8String]) 71 | 72 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/NSMethodSignature+EXT.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSMethodSignature+EXT.m 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2011-03-11. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "NSMethodSignature+EXT.h" 11 | 12 | @implementation NSMethodSignature (EXTExtensions) 13 | - (NSMethodSignature *)methodSignatureByInsertingType:(const char *)type atArgumentIndex:(NSUInteger)index { 14 | NSUInteger argumentCount = [self numberOfArguments]; 15 | size_t typeLength = strlen(type); 16 | 17 | size_t stringLength = strlen([self methodReturnType]); 18 | for (NSUInteger i = 0;i < argumentCount + 1;++i) { 19 | NSUInteger realIndex; 20 | if (i == index) { 21 | stringLength += typeLength; 22 | continue; 23 | } else if (i > index) { 24 | realIndex = i - 1; 25 | } else { 26 | realIndex = i; 27 | } 28 | 29 | const char *argType = [self getArgumentTypeAtIndex:realIndex]; 30 | stringLength += strlen(argType); 31 | } 32 | 33 | // start counting the NUL byte for strlcpy() 34 | stringLength++; 35 | 36 | char *encoding = calloc(stringLength, 1); 37 | strlcpy(encoding, [self methodReturnType], stringLength); 38 | 39 | for (NSUInteger i = 0;i < argumentCount + 1;++i) { 40 | NSUInteger realIndex = i; 41 | const char *argType = NULL; 42 | 43 | if (i == index) { 44 | argType = type; 45 | } else if (i > index) { 46 | realIndex = i - 1; 47 | } 48 | 49 | if (!argType) 50 | argType = [self getArgumentTypeAtIndex:realIndex]; 51 | 52 | size_t currentLength = strlen(encoding); 53 | strlcpy(encoding + currentLength, argType, stringLength - currentLength); 54 | } 55 | 56 | NSMethodSignature *newSignature = [NSMethodSignature signatureWithObjCTypes:encoding]; 57 | free(encoding); 58 | 59 | return newSignature; 60 | } 61 | 62 | - (const char *)typeEncoding { 63 | NSUInteger argumentCount = [self numberOfArguments]; 64 | 65 | size_t stringLength = strlen([self methodReturnType]); 66 | for (NSUInteger i = 0;i < argumentCount;++i) { 67 | const char *argType = [self getArgumentTypeAtIndex:i]; 68 | stringLength += strlen(argType); 69 | } 70 | 71 | stringLength++; 72 | 73 | char *encoding = calloc(stringLength, 1); 74 | strlcpy(encoding, [self methodReturnType], stringLength); 75 | 76 | for (NSUInteger i = 0;i < argumentCount;++i) { 77 | const char *argType = [self getArgumentTypeAtIndex:i]; 78 | 79 | size_t currentLength = strlen(encoding); 80 | strlcpy(encoding + currentLength, argType, stringLength - currentLength); 81 | } 82 | 83 | // create an unused NSData object to autorelease the allocated string 84 | [NSData dataWithBytesNoCopy:encoding length:stringLength + 1 freeWhenDone:YES]; 85 | 86 | return encoding; 87 | } 88 | @end 89 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+MASAdditions.h 3 | // 4 | // 5 | // Created by Daniel Hammond on 11/26/13. 6 | // 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | typedef NS_ENUM(NSUInteger, MASAxisType) { 14 | MASAxisTypeHorizontal, 15 | MASAxisTypeVertical 16 | }; 17 | 18 | @interface NSArray (MASAdditions) 19 | 20 | /** 21 | * Creates a MASConstraintMaker with each view in the callee. 22 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing on each view 23 | * 24 | * @param block scope within which you can build up the constraints which you wish to apply to each view. 25 | * 26 | * @return Array of created MASConstraints 27 | */ 28 | - (NSArray *)mas_makeConstraints:(void (^)(MASConstraintMaker *make))block; 29 | 30 | /** 31 | * Creates a MASConstraintMaker with each view in the callee. 32 | * Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view. 33 | * If an existing constraint exists then it will be updated instead. 34 | * 35 | * @param block scope within which you can build up the constraints which you wish to apply to each view. 36 | * 37 | * @return Array of created/updated MASConstraints 38 | */ 39 | - (NSArray *)mas_updateConstraints:(void (^)(MASConstraintMaker *make))block; 40 | 41 | /** 42 | * Creates a MASConstraintMaker with each view in the callee. 43 | * Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view. 44 | * All constraints previously installed for the views will be removed. 45 | * 46 | * @param block scope within which you can build up the constraints which you wish to apply to each view. 47 | * 48 | * @return Array of created/updated MASConstraints 49 | */ 50 | - (NSArray *)mas_remakeConstraints:(void (^)(MASConstraintMaker *make))block; 51 | 52 | /** 53 | * distribute with fixed spacing 54 | * 55 | * @param axisType which axis to distribute items along 56 | * @param fixedSpacing the spacing between each item 57 | * @param leadSpacing the spacing before the first item and the container 58 | * @param tailSpacing the spacing after the last item and the container 59 | */ 60 | - (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedSpacing:(CGFloat)fixedSpacing leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing; 61 | 62 | /** 63 | * distribute with fixed item size 64 | * 65 | * @param axisType which axis to distribute items along 66 | * @param fixedItemLength the fixed length of each item 67 | * @param leadSpacing the spacing before the first item and the container 68 | * @param tailSpacing the spacing after the last item and the container 69 | */ 70 | - (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedItemLength:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing; 71 | 72 | @end 73 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTSynthesize.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTSynthesize.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2012-09-04. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTRuntimeExtensions.h" 11 | #import 12 | 13 | /** 14 | * \@synthesizeAssociation synthesizes a property for a class using associated 15 | * objects. This is primarily useful for adding properties to a class within 16 | * a category. 17 | * 18 | * PROPERTY must have been declared with \@property in the interface of the 19 | * specified class (or a category upon it), and must be of object type. 20 | */ 21 | #define synthesizeAssociation(CLASS, PROPERTY) \ 22 | dynamic PROPERTY; \ 23 | \ 24 | void *ext_uniqueKey_ ## CLASS ## _ ## PROPERTY = &ext_uniqueKey_ ## CLASS ## _ ## PROPERTY; \ 25 | \ 26 | __attribute__((constructor)) \ 27 | static void ext_ ## CLASS ## _ ## PROPERTY ## _synthesize (void) { \ 28 | Class cls = objc_getClass(# CLASS); \ 29 | objc_property_t property = class_getProperty(cls, # PROPERTY); \ 30 | NSCAssert(property, @"Could not find property %s on class %@", # PROPERTY, cls); \ 31 | \ 32 | ext_propertyAttributes *attributes = ext_copyPropertyAttributes(property); \ 33 | if (!attributes) { \ 34 | NSLog(@"*** Could not copy property attributes for %@.%s", cls, # PROPERTY); \ 35 | return; \ 36 | } \ 37 | \ 38 | NSCAssert(!attributes->weak, @"@synthesizeAssociation does not support weak properties (%@.%s)", cls, # PROPERTY); \ 39 | \ 40 | objc_AssociationPolicy policy = OBJC_ASSOCIATION_ASSIGN; \ 41 | switch (attributes->memoryManagementPolicy) { \ 42 | case ext_propertyMemoryManagementPolicyRetain: \ 43 | policy = attributes->nonatomic ? OBJC_ASSOCIATION_RETAIN_NONATOMIC : OBJC_ASSOCIATION_RETAIN; \ 44 | break; \ 45 | \ 46 | case ext_propertyMemoryManagementPolicyCopy: \ 47 | policy = attributes->nonatomic ? OBJC_ASSOCIATION_COPY_NONATOMIC : OBJC_ASSOCIATION_COPY; \ 48 | break; \ 49 | \ 50 | case ext_propertyMemoryManagementPolicyAssign: \ 51 | break; \ 52 | \ 53 | default: \ 54 | NSCAssert(NO, @"Unrecognized property memory management policy %i", (int)attributes->memoryManagementPolicy); \ 55 | } \ 56 | \ 57 | id getter = ^(id self){ \ 58 | return objc_getAssociatedObject(self, ext_uniqueKey_ ## CLASS ## _ ## PROPERTY); \ 59 | }; \ 60 | \ 61 | id setter = ^(id self, id value){ \ 62 | objc_setAssociatedObject(self, ext_uniqueKey_ ## CLASS ## _ ## PROPERTY, value, policy); \ 63 | }; \ 64 | \ 65 | if (!class_addMethod(cls, attributes->getter, imp_implementationWithBlock(getter), "@@:")) { \ 66 | NSCAssert(NO, @"Could not add getter %s for property %@.%s", sel_getName(attributes->getter), cls, # PROPERTY); \ 67 | } \ 68 | \ 69 | if (!class_addMethod(cls, attributes->setter, imp_implementationWithBlock(setter), "v@:@")) { \ 70 | NSCAssert(NO, @"Could not add setter %s for property %@.%s", sel_getName(attributes->setter), cls, # PROPERTY); \ 71 | } \ 72 | \ 73 | free(attributes); \ 74 | } 75 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixed/Pods-ImageAndTextMixed-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## Masonry 5 | 6 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 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 | ## SDWebImage 27 | 28 | Copyright (c) 2016 Olivier Poitrey rs@dailymotion.com 29 | 30 | Permission is hereby granted, free of charge, to any person obtaining a copy 31 | of this software and associated documentation files (the "Software"), to deal 32 | in the Software without restriction, including without limitation the rights 33 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 34 | copies of the Software, and to permit persons to whom the Software is furnished 35 | to do so, subject to the following conditions: 36 | 37 | The above copyright notice and this permission notice shall be included in all 38 | copies or substantial portions of the Software. 39 | 40 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 41 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 42 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 43 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 44 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 45 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 46 | THE SOFTWARE. 47 | 48 | 49 | 50 | ## libextobjc 51 | 52 | **Copyright (c) 2012 - 2014 Justin Spahr-Summers** 53 | 54 | Permission is hereby granted, free of charge, to any person obtaining a copy of 55 | this software and associated documentation files (the "Software"), to deal in 56 | the Software without restriction, including without limitation the rights to 57 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 58 | the Software, and to permit persons to whom the Software is furnished to do so, 59 | subject to the following conditions: 60 | 61 | The above copyright notice and this permission notice shall be included in all 62 | copies or substantial portions of the Software. 63 | 64 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 65 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 66 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 67 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 68 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 69 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 70 | 71 | Generated by CocoaPods - https://cocoapods.org 72 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixed/Pods-ImageAndTextMixed-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 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" 63 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" 64 | fi 65 | } 66 | 67 | # Strip invalid architectures 68 | strip_invalid_archs() { 69 | binary="$1" 70 | # Get architectures for current file 71 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 72 | stripped="" 73 | for arch in $archs; do 74 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 75 | # Strip non-valid architectures in-place 76 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 77 | stripped="$stripped $arch" 78 | fi 79 | done 80 | if [[ "$stripped" ]]; then 81 | echo "Stripped $binary of architectures:$stripped" 82 | fi 83 | } 84 | 85 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedTests/Pods-ImageAndTextMixedTests-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 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" 63 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" 64 | fi 65 | } 66 | 67 | # Strip invalid architectures 68 | strip_invalid_archs() { 69 | binary="$1" 70 | # Get architectures for current file 71 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 72 | stripped="" 73 | for arch in $archs; do 74 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 75 | # Strip non-valid architectures in-place 76 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 77 | stripped="$stripped $arch" 78 | fi 79 | done 80 | if [[ "$stripped" ]]; then 81 | echo "Stripped $binary of architectures:$stripped" 82 | fi 83 | } 84 | 85 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedUITests/Pods-ImageAndTextMixedUITests-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 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" 63 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" 64 | fi 65 | } 66 | 67 | # Strip invalid architectures 68 | strip_invalid_archs() { 69 | binary="$1" 70 | # Get architectures for current file 71 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 72 | stripped="" 73 | for arch in $archs; do 74 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 75 | # Strip non-valid architectures in-place 76 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 77 | stripped="$stripped $arch" 78 | fi 79 | done 80 | if [[ "$stripped" ]]; then 81 | echo "Stripped $binary of architectures:$stripped" 82 | fi 83 | } 84 | 85 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+MultiFormat.m 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #import "UIImage+MultiFormat.h" 10 | #import "UIImage+GIF.h" 11 | #import "NSData+ImageContentType.h" 12 | #import 13 | 14 | #ifdef SD_WEBP 15 | #import "UIImage+WebP.h" 16 | #endif 17 | 18 | @implementation UIImage (MultiFormat) 19 | 20 | + (UIImage *)sd_imageWithData:(NSData *)data { 21 | if (!data) { 22 | return nil; 23 | } 24 | 25 | UIImage *image; 26 | NSString *imageContentType = [NSData sd_contentTypeForImageData:data]; 27 | if ([imageContentType isEqualToString:@"image/gif"]) { 28 | image = [UIImage sd_animatedGIFWithData:data]; 29 | } 30 | #ifdef SD_WEBP 31 | else if ([imageContentType isEqualToString:@"image/webp"]) 32 | { 33 | image = [UIImage sd_imageWithWebPData:data]; 34 | } 35 | #endif 36 | else { 37 | image = [[UIImage alloc] initWithData:data]; 38 | UIImageOrientation orientation = [self sd_imageOrientationFromImageData:data]; 39 | if (orientation != UIImageOrientationUp) { 40 | image = [UIImage imageWithCGImage:image.CGImage 41 | scale:image.scale 42 | orientation:orientation]; 43 | } 44 | } 45 | 46 | 47 | return image; 48 | } 49 | 50 | 51 | +(UIImageOrientation)sd_imageOrientationFromImageData:(NSData *)imageData { 52 | UIImageOrientation result = UIImageOrientationUp; 53 | CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL); 54 | if (imageSource) { 55 | CFDictionaryRef properties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, NULL); 56 | if (properties) { 57 | CFTypeRef val; 58 | int exifOrientation; 59 | val = CFDictionaryGetValue(properties, kCGImagePropertyOrientation); 60 | if (val) { 61 | CFNumberGetValue(val, kCFNumberIntType, &exifOrientation); 62 | result = [self sd_exifOrientationToiOSOrientation:exifOrientation]; 63 | } // else - if it's not set it remains at up 64 | CFRelease((CFTypeRef) properties); 65 | } else { 66 | //NSLog(@"NO PROPERTIES, FAIL"); 67 | } 68 | CFRelease(imageSource); 69 | } 70 | return result; 71 | } 72 | 73 | #pragma mark EXIF orientation tag converter 74 | // Convert an EXIF image orientation to an iOS one. 75 | // reference see here: http://sylvana.net/jpegcrop/exif_orientation.html 76 | + (UIImageOrientation) sd_exifOrientationToiOSOrientation:(int)exifOrientation { 77 | UIImageOrientation orientation = UIImageOrientationUp; 78 | switch (exifOrientation) { 79 | case 1: 80 | orientation = UIImageOrientationUp; 81 | break; 82 | 83 | case 3: 84 | orientation = UIImageOrientationDown; 85 | break; 86 | 87 | case 8: 88 | orientation = UIImageOrientationLeft; 89 | break; 90 | 91 | case 6: 92 | orientation = UIImageOrientationRight; 93 | break; 94 | 95 | case 2: 96 | orientation = UIImageOrientationUpMirrored; 97 | break; 98 | 99 | case 4: 100 | orientation = UIImageOrientationDownMirrored; 101 | break; 102 | 103 | case 5: 104 | orientation = UIImageOrientationLeftMirrored; 105 | break; 106 | 107 | case 7: 108 | orientation = UIImageOrientationRightMirrored; 109 | break; 110 | default: 111 | break; 112 | } 113 | return orientation; 114 | } 115 | 116 | 117 | 118 | @end 119 | -------------------------------------------------------------------------------- /Pods/libextobjc/README.md: -------------------------------------------------------------------------------- 1 | The Extended Objective-C library extends the dynamism of the Objective-C programming language to support additional patterns present in other programming languages (including those that are not necessarily object-oriented). 2 | 3 | libextobjc is meant to be very modular – most of its classes and modules can be used with no more than one or two dependencies. 4 | 5 | Please feel free to open issues for feature requests or ideas for language extensions (even if you have no idea how they'd work)! 6 | 7 | # Features 8 | 9 | libextobjc currently includes the following features: 10 | 11 | * **Safe categories**, using EXTSafeCategory, for adding methods to a class without overwriting anything already there (identifying conflicts for you). 12 | * **Concrete protocols**, using EXTConcreteProtocol, for providing default implementations of the methods in a protocol. 13 | * **Simpler and safer key paths**, using EXTKeyPathCoding, which automatically checks key paths at compile-time. 14 | * **Compile-time checking of selectors** to ensure that an object declares a given selector, using EXTSelectorChecking. 15 | * **Easier use of weak variables in blocks**, using `@weakify`, `@unsafeify`, and `@strongify` from the EXTScope module. 16 | * **Scope-based resource cleanup**, using `@onExit` in the EXTScope module, for automatically cleaning up manually-allocated memory, file handles, locks, etc., at the end of a scope. 17 | * **Algebraic data types** generated completely at compile-time, defined using EXTADT. 18 | * **Synthesized properties for categories**, using EXTSynthesize. 19 | * **Block-based coroutines**, using EXTCoroutine. 20 | * **EXTNil, which is like `NSNull`, but behaves much more closely to actual `nil`** (i.e., doesn't crash when sent unrecognized messages). 21 | * **Lots of extensions** and additional functionality built on top of ``, including extremely customizable method injection, reflection upon object properties, and various functions to extend class hierarchy checks and method lookups. 22 | 23 | The [experimental](https://github.com/jspahrsummers/libextobjc/tree/experimental) 24 | branch contains additional features that may be interesting, but are not 25 | considered stable or safe for production use. Check out the headers for more 26 | information. 27 | 28 | # Running tests 29 | 30 | To execute libextobjc's tests, first run `git submodule update --init --recursive` 31 | to bring in the [xcconfigs](https://github.com/jspahrsummers/xcconfigs) submodule, 32 | then open the project file and choose the desired test target. 33 | 34 | # Adding to your project 35 | 36 | If you want to add libextobjc as a dependency to an **application**, add the 37 | repository as a [submodule](http://git-scm.com/book/en/Git-Tools-Submodules), 38 | then include the source files you care about in your Xcode project. 39 | 40 | If you want to add libextobjc as a dependency to a **framework or library**, 41 | prefer [subtree merging](http://git-scm.com/book/en/Git-Tools-Subtree-Merging), 42 | which will allow you to rename symbols to avoid conflicts, and make any tweaks 43 | you need to for your library. 44 | 45 | To create a libextobjc subtree: 46 | 47 | ``` 48 | $ git remote add libextobjc https://github.com/jspahrsummers/libextobjc.git 49 | $ git fetch libextobjc 50 | $ git read-tree --prefix=External/ -u libextobjc/master 51 | $ git reset 52 | ``` 53 | 54 | Rename any symbols or change whatever you want, `git add` the specific files 55 | that you want in your library, and then add them to your Xcode project. 56 | 57 | To bring in upstream changes later: 58 | 59 | ``` 60 | $ git fetch -p libextobjc 61 | $ git merge -Xsubtree=External/ libextobjc/master 62 | $ git reset 63 | ``` 64 | 65 | Then, again, just add the changes you want. 66 | 67 | # License 68 | 69 | Released under the MIT License. See the 70 | [LICENSE](https://github.com/jspahrsummers/libextobjc/blob/master/LICENSE.md) 71 | file for more information. 72 | 73 | # Requirements 74 | 75 | libextobjc must be built with ARC enabled, and many of its macros require ARC in the calling files as well. MRR usage is not supported. 76 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageDecoder.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * Created by james on 9/28/11. 6 | * 7 | * For the full copyright and license information, please view the LICENSE 8 | * file that was distributed with this source code. 9 | */ 10 | 11 | #import "SDWebImageDecoder.h" 12 | 13 | @implementation UIImage (ForceDecode) 14 | 15 | + (UIImage *)decodedImageWithImage:(UIImage *)image { 16 | // while downloading huge amount of images 17 | // autorelease the bitmap context 18 | // and all vars to help system to free memory 19 | // when there are memory warning. 20 | // on iOS7, do not forget to call 21 | // [[SDImageCache sharedImageCache] clearMemory]; 22 | 23 | if (image == nil) { // Prevent "CGBitmapContextCreateImage: invalid context 0x0" error 24 | return nil; 25 | } 26 | 27 | @autoreleasepool{ 28 | // do not decode animated images 29 | if (image.images != nil) { 30 | return image; 31 | } 32 | 33 | CGImageRef imageRef = image.CGImage; 34 | 35 | CGImageAlphaInfo alpha = CGImageGetAlphaInfo(imageRef); 36 | BOOL anyAlpha = (alpha == kCGImageAlphaFirst || 37 | alpha == kCGImageAlphaLast || 38 | alpha == kCGImageAlphaPremultipliedFirst || 39 | alpha == kCGImageAlphaPremultipliedLast); 40 | if (anyAlpha) { 41 | return image; 42 | } 43 | 44 | // current 45 | CGColorSpaceModel imageColorSpaceModel = CGColorSpaceGetModel(CGImageGetColorSpace(imageRef)); 46 | CGColorSpaceRef colorspaceRef = CGImageGetColorSpace(imageRef); 47 | 48 | BOOL unsupportedColorSpace = (imageColorSpaceModel == kCGColorSpaceModelUnknown || 49 | imageColorSpaceModel == kCGColorSpaceModelMonochrome || 50 | imageColorSpaceModel == kCGColorSpaceModelCMYK || 51 | imageColorSpaceModel == kCGColorSpaceModelIndexed); 52 | if (unsupportedColorSpace) { 53 | colorspaceRef = CGColorSpaceCreateDeviceRGB(); 54 | } 55 | 56 | size_t width = CGImageGetWidth(imageRef); 57 | size_t height = CGImageGetHeight(imageRef); 58 | NSUInteger bytesPerPixel = 4; 59 | NSUInteger bytesPerRow = bytesPerPixel * width; 60 | NSUInteger bitsPerComponent = 8; 61 | 62 | 63 | // kCGImageAlphaNone is not supported in CGBitmapContextCreate. 64 | // Since the original image here has no alpha info, use kCGImageAlphaNoneSkipLast 65 | // to create bitmap graphics contexts without alpha info. 66 | CGContextRef context = CGBitmapContextCreate(NULL, 67 | width, 68 | height, 69 | bitsPerComponent, 70 | bytesPerRow, 71 | colorspaceRef, 72 | kCGBitmapByteOrderDefault|kCGImageAlphaNoneSkipLast); 73 | 74 | // Draw the image into the context and retrieve the new bitmap image without alpha 75 | CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef); 76 | CGImageRef imageRefWithoutAlpha = CGBitmapContextCreateImage(context); 77 | UIImage *imageWithoutAlpha = [UIImage imageWithCGImage:imageRefWithoutAlpha 78 | scale:image.scale 79 | orientation:image.imageOrientation]; 80 | 81 | if (unsupportedColorSpace) { 82 | CGColorSpaceRelease(colorspaceRef); 83 | } 84 | 85 | CGContextRelease(context); 86 | CGImageRelease(imageRefWithoutAlpha); 87 | 88 | return imageWithoutAlpha; 89 | } 90 | } 91 | 92 | @end 93 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+MASShorthandAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 22/07/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "View+MASAdditions.h" 10 | 11 | #ifdef MAS_SHORTHAND 12 | 13 | /** 14 | * Shorthand view additions without the 'mas_' prefixes, 15 | * only enabled if MAS_SHORTHAND is defined 16 | */ 17 | @interface MAS_VIEW (MASShorthandAdditions) 18 | 19 | @property (nonatomic, strong, readonly) MASViewAttribute *left; 20 | @property (nonatomic, strong, readonly) MASViewAttribute *top; 21 | @property (nonatomic, strong, readonly) MASViewAttribute *right; 22 | @property (nonatomic, strong, readonly) MASViewAttribute *bottom; 23 | @property (nonatomic, strong, readonly) MASViewAttribute *leading; 24 | @property (nonatomic, strong, readonly) MASViewAttribute *trailing; 25 | @property (nonatomic, strong, readonly) MASViewAttribute *width; 26 | @property (nonatomic, strong, readonly) MASViewAttribute *height; 27 | @property (nonatomic, strong, readonly) MASViewAttribute *centerX; 28 | @property (nonatomic, strong, readonly) MASViewAttribute *centerY; 29 | @property (nonatomic, strong, readonly) MASViewAttribute *baseline; 30 | @property (nonatomic, strong, readonly) MASViewAttribute *(^attribute)(NSLayoutAttribute attr); 31 | 32 | #if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) 33 | 34 | @property (nonatomic, strong, readonly) MASViewAttribute *firstBaseline; 35 | @property (nonatomic, strong, readonly) MASViewAttribute *lastBaseline; 36 | 37 | #endif 38 | 39 | #if TARGET_OS_IPHONE || TARGET_OS_TV 40 | 41 | @property (nonatomic, strong, readonly) MASViewAttribute *leftMargin; 42 | @property (nonatomic, strong, readonly) MASViewAttribute *rightMargin; 43 | @property (nonatomic, strong, readonly) MASViewAttribute *topMargin; 44 | @property (nonatomic, strong, readonly) MASViewAttribute *bottomMargin; 45 | @property (nonatomic, strong, readonly) MASViewAttribute *leadingMargin; 46 | @property (nonatomic, strong, readonly) MASViewAttribute *trailingMargin; 47 | @property (nonatomic, strong, readonly) MASViewAttribute *centerXWithinMargins; 48 | @property (nonatomic, strong, readonly) MASViewAttribute *centerYWithinMargins; 49 | 50 | #endif 51 | 52 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block; 53 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block; 54 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block; 55 | 56 | @end 57 | 58 | #define MAS_ATTR_FORWARD(attr) \ 59 | - (MASViewAttribute *)attr { \ 60 | return [self mas_##attr]; \ 61 | } 62 | 63 | @implementation MAS_VIEW (MASShorthandAdditions) 64 | 65 | MAS_ATTR_FORWARD(top); 66 | MAS_ATTR_FORWARD(left); 67 | MAS_ATTR_FORWARD(bottom); 68 | MAS_ATTR_FORWARD(right); 69 | MAS_ATTR_FORWARD(leading); 70 | MAS_ATTR_FORWARD(trailing); 71 | MAS_ATTR_FORWARD(width); 72 | MAS_ATTR_FORWARD(height); 73 | MAS_ATTR_FORWARD(centerX); 74 | MAS_ATTR_FORWARD(centerY); 75 | MAS_ATTR_FORWARD(baseline); 76 | 77 | #if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) 78 | 79 | MAS_ATTR_FORWARD(firstBaseline); 80 | MAS_ATTR_FORWARD(lastBaseline); 81 | 82 | #endif 83 | 84 | #if TARGET_OS_IPHONE || TARGET_OS_TV 85 | 86 | MAS_ATTR_FORWARD(leftMargin); 87 | MAS_ATTR_FORWARD(rightMargin); 88 | MAS_ATTR_FORWARD(topMargin); 89 | MAS_ATTR_FORWARD(bottomMargin); 90 | MAS_ATTR_FORWARD(leadingMargin); 91 | MAS_ATTR_FORWARD(trailingMargin); 92 | MAS_ATTR_FORWARD(centerXWithinMargins); 93 | MAS_ATTR_FORWARD(centerYWithinMargins); 94 | 95 | #endif 96 | 97 | - (MASViewAttribute *(^)(NSLayoutAttribute))attribute { 98 | return [self mas_attribute]; 99 | } 100 | 101 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block { 102 | return [self mas_makeConstraints:block]; 103 | } 104 | 105 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block { 106 | return [self mas_updateConstraints:block]; 107 | } 108 | 109 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block { 110 | return [self mas_remakeConstraints:block]; 111 | } 112 | 113 | @end 114 | 115 | #endif 116 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageManager.h" 11 | 12 | @class SDWebImagePrefetcher; 13 | 14 | @protocol SDWebImagePrefetcherDelegate 15 | 16 | @optional 17 | 18 | /** 19 | * Called when an image was prefetched. 20 | * 21 | * @param imagePrefetcher The current image prefetcher 22 | * @param imageURL The image url that was prefetched 23 | * @param finishedCount The total number of images that were prefetched (successful or not) 24 | * @param totalCount The total number of images that were to be prefetched 25 | */ 26 | - (void)imagePrefetcher:(SDWebImagePrefetcher *)imagePrefetcher didPrefetchURL:(NSURL *)imageURL finishedCount:(NSUInteger)finishedCount totalCount:(NSUInteger)totalCount; 27 | 28 | /** 29 | * Called when all images are prefetched. 30 | * @param imagePrefetcher The current image prefetcher 31 | * @param totalCount The total number of images that were prefetched (whether successful or not) 32 | * @param skippedCount The total number of images that were skipped 33 | */ 34 | - (void)imagePrefetcher:(SDWebImagePrefetcher *)imagePrefetcher didFinishWithTotalCount:(NSUInteger)totalCount skippedCount:(NSUInteger)skippedCount; 35 | 36 | @end 37 | 38 | typedef void(^SDWebImagePrefetcherProgressBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls); 39 | typedef void(^SDWebImagePrefetcherCompletionBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls); 40 | 41 | /** 42 | * Prefetch some URLs in the cache for future use. Images are downloaded in low priority. 43 | */ 44 | @interface SDWebImagePrefetcher : NSObject 45 | 46 | /** 47 | * The web image manager 48 | */ 49 | @property (strong, nonatomic, readonly) SDWebImageManager *manager; 50 | 51 | /** 52 | * Maximum number of URLs to prefetch at the same time. Defaults to 3. 53 | */ 54 | @property (nonatomic, assign) NSUInteger maxConcurrentDownloads; 55 | 56 | /** 57 | * SDWebImageOptions for prefetcher. Defaults to SDWebImageLowPriority. 58 | */ 59 | @property (nonatomic, assign) SDWebImageOptions options; 60 | 61 | /** 62 | * Queue options for Prefetcher. Defaults to Main Queue. 63 | */ 64 | @property (nonatomic, assign) dispatch_queue_t prefetcherQueue; 65 | 66 | @property (weak, nonatomic) id delegate; 67 | 68 | /** 69 | * Return the global image prefetcher instance. 70 | */ 71 | + (SDWebImagePrefetcher *)sharedImagePrefetcher; 72 | 73 | /** 74 | * Allows you to instantiate a prefetcher with any arbitrary image manager. 75 | */ 76 | - (id)initWithImageManager:(SDWebImageManager *)manager; 77 | 78 | /** 79 | * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching, 80 | * currently one image is downloaded at a time, 81 | * and skips images for failed downloads and proceed to the next image in the list 82 | * 83 | * @param urls list of URLs to prefetch 84 | */ 85 | - (void)prefetchURLs:(NSArray *)urls; 86 | 87 | /** 88 | * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching, 89 | * currently one image is downloaded at a time, 90 | * and skips images for failed downloads and proceed to the next image in the list 91 | * 92 | * @param urls list of URLs to prefetch 93 | * @param progressBlock block to be called when progress updates; 94 | * first parameter is the number of completed (successful or not) requests, 95 | * second parameter is the total number of images originally requested to be prefetched 96 | * @param completionBlock block to be called when prefetching is completed 97 | * first param is the number of completed (successful or not) requests, 98 | * second parameter is the number of skipped requests 99 | */ 100 | - (void)prefetchURLs:(NSArray *)urls progress:(SDWebImagePrefetcherProgressBlock)progressBlock completed:(SDWebImagePrefetcherCompletionBlock)completionBlock; 101 | 102 | /** 103 | * Remove and cancel queued list 104 | */ 105 | - (void)cancelPrefetching; 106 | 107 | 108 | @end 109 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+MASAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | /** 14 | * Provides constraint maker block 15 | * and convience methods for creating MASViewAttribute which are view + NSLayoutAttribute pairs 16 | */ 17 | @interface MAS_VIEW (MASAdditions) 18 | 19 | /** 20 | * following properties return a new MASViewAttribute with current view and appropriate NSLayoutAttribute 21 | */ 22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_left; 23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_top; 24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_right; 25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottom; 26 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_leading; 27 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_trailing; 28 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_width; 29 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_height; 30 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerX; 31 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerY; 32 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_baseline; 33 | @property (nonatomic, strong, readonly) MASViewAttribute *(^mas_attribute)(NSLayoutAttribute attr); 34 | 35 | #if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) 36 | 37 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_firstBaseline; 38 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_lastBaseline; 39 | 40 | #endif 41 | 42 | #if TARGET_OS_IPHONE || TARGET_OS_TV 43 | 44 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_leftMargin; 45 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_rightMargin; 46 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topMargin; 47 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomMargin; 48 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_leadingMargin; 49 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_trailingMargin; 50 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerXWithinMargins; 51 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerYWithinMargins; 52 | 53 | #endif 54 | 55 | /** 56 | * a key to associate with this view 57 | */ 58 | @property (nonatomic, strong) id mas_key; 59 | 60 | /** 61 | * Finds the closest common superview between this view and another view 62 | * 63 | * @param view other view 64 | * 65 | * @return returns nil if common superview could not be found 66 | */ 67 | - (instancetype)mas_closestCommonSuperview:(MAS_VIEW *)view; 68 | 69 | /** 70 | * Creates a MASConstraintMaker with the callee view. 71 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing 72 | * 73 | * @param block scope within which you can build up the constraints which you wish to apply to the view. 74 | * 75 | * @return Array of created MASConstraints 76 | */ 77 | - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block; 78 | 79 | /** 80 | * Creates a MASConstraintMaker with the callee view. 81 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing. 82 | * If an existing constraint exists then it will be updated instead. 83 | * 84 | * @param block scope within which you can build up the constraints which you wish to apply to the view. 85 | * 86 | * @return Array of created/updated MASConstraints 87 | */ 88 | - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block; 89 | 90 | /** 91 | * Creates a MASConstraintMaker with the callee view. 92 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing. 93 | * All constraints previously installed for the view will be removed. 94 | * 95 | * @param block scope within which you can build up the constraints which you wish to apply to the view. 96 | * 97 | * @return Array of created/updated MASConstraints 98 | */ 99 | - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block; 100 | 101 | @end 102 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTConcreteProtocol.m: -------------------------------------------------------------------------------- 1 | // 2 | // EXTConcreteProtocol.m 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2010-11-10. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "EXTConcreteProtocol.h" 11 | #import "EXTRuntimeExtensions.h" 12 | #import 13 | #import 14 | 15 | static void ext_injectConcreteProtocol (Protocol *protocol, Class containerClass, Class class) { 16 | // get the full list of instance methods implemented by the concrete 17 | // protocol 18 | unsigned imethodCount = 0; 19 | Method *imethodList = class_copyMethodList(containerClass, &imethodCount); 20 | 21 | // get the full list of class methods implemented by the concrete 22 | // protocol 23 | unsigned cmethodCount = 0; 24 | Method *cmethodList = class_copyMethodList(object_getClass(containerClass), &cmethodCount); 25 | 26 | // get the metaclass of this class (the object on which class 27 | // methods are implemented) 28 | Class metaclass = object_getClass(class); 29 | 30 | // inject all instance methods in the concrete protocol 31 | for (unsigned methodIndex = 0;methodIndex < imethodCount;++methodIndex) { 32 | Method method = imethodList[methodIndex]; 33 | SEL selector = method_getName(method); 34 | 35 | // first, check to see if such an instance method already exists 36 | // (on this class or on a superclass) 37 | if (class_getInstanceMethod(class, selector)) { 38 | // it does exist, so don't overwrite it 39 | continue; 40 | } 41 | 42 | // add this instance method to the class in question 43 | IMP imp = method_getImplementation(method); 44 | const char *types = method_getTypeEncoding(method); 45 | if (!class_addMethod(class, selector, imp, types)) { 46 | fprintf(stderr, "ERROR: Could not implement instance method -%s from concrete protocol %s on class %s\n", 47 | sel_getName(selector), protocol_getName(protocol), class_getName(class)); 48 | } 49 | } 50 | 51 | // inject all class methods in the concrete protocol 52 | for (unsigned methodIndex = 0;methodIndex < cmethodCount;++methodIndex) { 53 | Method method = cmethodList[methodIndex]; 54 | SEL selector = method_getName(method); 55 | 56 | // +initialize is a special case that should never be copied 57 | // into a class, as it performs initialization for the concrete 58 | // protocol 59 | if (selector == @selector(initialize)) { 60 | // so just continue looking through the rest of the methods 61 | continue; 62 | } 63 | 64 | // first, check to see if a class method already exists (on this 65 | // class or on a superclass) 66 | // 67 | // since 'class' is considered to be an instance of 'metaclass', 68 | // this is actually checking for class methods (despite the 69 | // function name) 70 | if (class_getInstanceMethod(metaclass, selector)) { 71 | // it does exist, so don't overwrite it 72 | continue; 73 | } 74 | 75 | // add this class method to the metaclass in question 76 | IMP imp = method_getImplementation(method); 77 | const char *types = method_getTypeEncoding(method); 78 | if (!class_addMethod(metaclass, selector, imp, types)) { 79 | fprintf(stderr, "ERROR: Could not implement class method +%s from concrete protocol %s on class %s\n", 80 | sel_getName(selector), protocol_getName(protocol), class_getName(class)); 81 | } 82 | } 83 | 84 | // free the instance method list 85 | free(imethodList); imethodList = NULL; 86 | 87 | // free the class method list 88 | free(cmethodList); cmethodList = NULL; 89 | 90 | // use [containerClass class] and discard the result to call +initialize 91 | // on containerClass if it hasn't been called yet 92 | // 93 | // this is to allow the concrete protocol to perform custom initialization 94 | (void)[containerClass class]; 95 | } 96 | 97 | BOOL ext_addConcreteProtocol (Protocol *protocol, Class containerClass) { 98 | return ext_loadSpecialProtocol(protocol, ^(Class destinationClass){ 99 | ext_injectConcreteProtocol(protocol, containerClass, destinationClass); 100 | }); 101 | } 102 | 103 | void ext_loadConcreteProtocol (Protocol *protocol) { 104 | ext_specialProtocolReadyForInjection(protocol); 105 | } 106 | 107 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTScope.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTScope.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2011-05-04. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import "metamacros.h" 11 | 12 | /** 13 | * \@onExit defines some code to be executed when the current scope exits. The 14 | * code must be enclosed in braces and terminated with a semicolon, and will be 15 | * executed regardless of how the scope is exited, including from exceptions, 16 | * \c goto, \c return, \c break, and \c continue. 17 | * 18 | * Provided code will go into a block to be executed later. Keep this in mind as 19 | * it pertains to memory management, restrictions on assignment, etc. Because 20 | * the code is used within a block, \c return is a legal (though perhaps 21 | * confusing) way to exit the cleanup block early. 22 | * 23 | * Multiple \@onExit statements in the same scope are executed in reverse 24 | * lexical order. This helps when pairing resource acquisition with \@onExit 25 | * statements, as it guarantees teardown in the opposite order of acquisition. 26 | * 27 | * @note This statement cannot be used within scopes defined without braces 28 | * (like a one line \c if). In practice, this is not an issue, since \@onExit is 29 | * a useless construct in such a case anyways. 30 | */ 31 | #define onExit \ 32 | ext_keywordify \ 33 | __strong ext_cleanupBlock_t metamacro_concat(ext_exitBlock_, __LINE__) __attribute__((cleanup(ext_executeCleanupBlock), unused)) = ^ 34 | 35 | /** 36 | * Creates \c __weak shadow variables for each of the variables provided as 37 | * arguments, which can later be made strong again with #strongify. 38 | * 39 | * This is typically used to weakly reference variables in a block, but then 40 | * ensure that the variables stay alive during the actual execution of the block 41 | * (if they were live upon entry). 42 | * 43 | * See #strongify for an example of usage. 44 | */ 45 | #define weakify(...) \ 46 | ext_keywordify \ 47 | metamacro_foreach_cxt(ext_weakify_,, __weak, __VA_ARGS__) 48 | 49 | /** 50 | * Like #weakify, but uses \c __unsafe_unretained instead, for targets or 51 | * classes that do not support weak references. 52 | */ 53 | #define unsafeify(...) \ 54 | ext_keywordify \ 55 | metamacro_foreach_cxt(ext_weakify_,, __unsafe_unretained, __VA_ARGS__) 56 | 57 | /** 58 | * Strongly references each of the variables provided as arguments, which must 59 | * have previously been passed to #weakify. 60 | * 61 | * The strong references created will shadow the original variable names, such 62 | * that the original names can be used without issue (and a significantly 63 | * reduced risk of retain cycles) in the current scope. 64 | * 65 | * @code 66 | 67 | id foo = [[NSObject alloc] init]; 68 | id bar = [[NSObject alloc] init]; 69 | 70 | @weakify(foo, bar); 71 | 72 | // this block will not keep 'foo' or 'bar' alive 73 | BOOL (^matchesFooOrBar)(id) = ^ BOOL (id obj){ 74 | // but now, upon entry, 'foo' and 'bar' will stay alive until the block has 75 | // finished executing 76 | @strongify(foo, bar); 77 | 78 | return [foo isEqual:obj] || [bar isEqual:obj]; 79 | }; 80 | 81 | * @endcode 82 | */ 83 | #define strongify(...) \ 84 | ext_keywordify \ 85 | _Pragma("clang diagnostic push") \ 86 | _Pragma("clang diagnostic ignored \"-Wshadow\"") \ 87 | metamacro_foreach(ext_strongify_,, __VA_ARGS__) \ 88 | _Pragma("clang diagnostic pop") 89 | 90 | /*** implementation details follow ***/ 91 | typedef void (^ext_cleanupBlock_t)(); 92 | 93 | void ext_executeCleanupBlock (__strong ext_cleanupBlock_t *block); 94 | 95 | #define ext_weakify_(INDEX, CONTEXT, VAR) \ 96 | CONTEXT __typeof__(VAR) metamacro_concat(VAR, _weak_) = (VAR); 97 | 98 | #define ext_strongify_(INDEX, VAR) \ 99 | __strong __typeof__(VAR) VAR = metamacro_concat(VAR, _weak_); 100 | 101 | // Details about the choice of backing keyword: 102 | // 103 | // The use of @try/@catch/@finally can cause the compiler to suppress 104 | // return-type warnings. 105 | // The use of @autoreleasepool {} is not optimized away by the compiler, 106 | // resulting in superfluous creation of autorelease pools. 107 | // 108 | // Since neither option is perfect, and with no other alternatives, the 109 | // compromise is to use @autorelease in DEBUG builds to maintain compiler 110 | // analysis, and to use @try/@catch otherwise to avoid insertion of unnecessary 111 | // autorelease pools. 112 | #if DEBUG 113 | #define ext_keywordify autoreleasepool {} 114 | #else 115 | #define ext_keywordify try {} @catch (...) {} 116 | #endif 117 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTSafeCategory.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTSafeCategory.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2010-11-13. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | #import "metamacros.h" 12 | 13 | /** 14 | * \@safecategory defines the implementation of a safe category named \a CATEGORY on \a CLASS. 15 | * A safe category will only add methods to \a CLASS if a method by the same 16 | * name does not already exist (\e not including superclasses). If \c DEBUG is 17 | * defined and \c NDEBUG is not defined, any method conflicts will abort the 18 | * application at startup; otherwise, any method conflicts are simply logged, 19 | * and no overwriting occurs. 20 | * 21 | * This macro should be used in implementation files. Normal \@interface blocks 22 | * can be used in header files to declare safe categories, as long as the name 23 | * given in parentheses matches \a CATEGORY. 24 | * 25 | * To perform tasks when a safe category is loaded, use the \c +load method, 26 | * which functions identically to \c +load within a regular category. Any \c 27 | * +load method will be executed exactly once, and is not added to \a CLASS. \a 28 | * CLASS is guaranteed to have been loaded by the time \c +load executes. 29 | * 30 | * @note Depending on the protection level for the instance variables of \a 31 | * CLASS, a safe category may not be able to access them, even if a regular 32 | * category could. In practice, accessing instance variables in a category is 33 | * almost always a bad idea. 34 | * 35 | * @warning Protocol categories and safe categories interact in indeterminate 36 | * ways. If \a CLASS conforms to a protocol which has an EXTProtocolCategory, 37 | * and both the protocol category and the safe category implement a method by 38 | * the same name, the safe category may succeed sometimes and fail others. 39 | * 40 | * @bug Due to an implementation detail, methods invoked against \c super will 41 | * actually be invoked against \c self. 42 | */ 43 | #define safecategory(CLASS, CATEGORY) \ 44 | /* 45 | * create a class used to contain all the methods used in this category – by 46 | * doing this, we can control and fine-tune the method injection process 47 | */ \ 48 | interface CLASS ## _ ## CATEGORY ## _MethodContainer : CLASS {} \ 49 | @end \ 50 | \ 51 | @implementation CLASS ## _ ## CATEGORY ## _MethodContainer \ 52 | /* 53 | * using the "constructor" function attribute, we can ensure that this 54 | * function is executed only AFTER all the Objective-C runtime setup (i.e., 55 | * after all +load methods have been executed) 56 | */ \ 57 | __attribute__((constructor)) \ 58 | static void ext_ ## CLASS ## _ ## CATEGORY ## _inject (void) { \ 59 | /* 60 | * use this injection point to load the methods into the target class 61 | * this is guaranteed to execute after any regular categories have 62 | * loaded already (though the interaction with EXTProtocolCategory is 63 | * undefined) 64 | */ \ 65 | const char *className_ = metamacro_stringify(CLASS ## _ ## CATEGORY ## _MethodContainer); \ 66 | \ 67 | /* 68 | * get this class, and the class that is the target of injection 69 | */ \ 70 | Class methodContainer_ = objc_getClass(className_); \ 71 | Class targetClass_ = class_getSuperclass(methodContainer_); \ 72 | \ 73 | /* 74 | * if this method returns NO, we assume that one or more of the category 75 | * methods already existed on the target class, and therefore error out 76 | * (using ext_safeCategoryFailed) 77 | */ \ 78 | if (!ext_loadSafeCategory(methodContainer_, targetClass_)) {\ 79 | ext_safeCategoryFailed(CLASS, CATEGORY); \ 80 | } \ 81 | } 82 | 83 | /*** implementation details follow ***/ 84 | BOOL ext_loadSafeCategory (Class methodContainer, Class targetClass); 85 | 86 | // if this is a debug build... 87 | #if defined(DEBUG) && !defined(NDEBUG) 88 | // abort if a safe category fails to load 89 | #define ext_safeCategoryFailed(CLASS, CATEGORY) \ 90 | do { \ 91 | fprintf(stderr, "ERROR: Failed to fully load safe category %s (%s)\n", metamacro_stringify(CLASS), metamacro_stringify(CATEGORY)); \ 92 | abort(); \ 93 | } while (0) 94 | #else 95 | // otherwise, just print an error message 96 | #define ext_safeCategoryFailed(CLASS, CATEGORY) \ 97 | fprintf(stderr, "ERROR: Failed to fully load safe category %s (%s)\n", metamacro_stringify(CLASS), metamacro_stringify(CATEGORY)) 98 | #endif 99 | 100 | -------------------------------------------------------------------------------- /Pods/libextobjc/extobjc/EXTConcreteProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXTConcreteProtocol.h 3 | // extobjc 4 | // 5 | // Created by Justin Spahr-Summers on 2010-11-09. 6 | // Copyright (C) 2012 Justin Spahr-Summers. 7 | // Released under the MIT license. 8 | // 9 | 10 | #import 11 | #import 12 | #import "metamacros.h" 13 | 14 | /** 15 | * Used to list methods with concrete implementations within a \@protocol 16 | * definition. 17 | * 18 | * Semantically, this is equivalent to using \@optional, but is recommended for 19 | * documentation reasons. Although concrete protocol methods are optional in the 20 | * sense that conforming objects don't need to implement them, they are, 21 | * however, always guaranteed to be present. 22 | */ 23 | #define concrete \ 24 | optional 25 | 26 | /** 27 | * Defines a "concrete protocol," which can provide default implementations of 28 | * methods within protocol \a NAME. A \@protocol block should exist in a header 29 | * file, and a corresponding \@concreteprotocol block in an implementation file. 30 | * Any object that declares itself to conform to protocol \a NAME will receive 31 | * its method implementations \e only if no method by the same name already 32 | * exists. 33 | * 34 | * @code 35 | 36 | // MyProtocol.h 37 | @protocol MyProtocol 38 | @required 39 | - (void)someRequiredMethod; 40 | 41 | @optional 42 | - (void)someOptionalMethod; 43 | 44 | @concrete 45 | - (BOOL)isConcrete; 46 | 47 | @end 48 | 49 | // MyProtocol.m 50 | @concreteprotocol(MyProtocol) 51 | 52 | - (BOOL)isConcrete { 53 | return YES; 54 | } 55 | 56 | // this will not actually get added to conforming classes, since they are 57 | // required to have their own implementation 58 | - (void)someRequiredMethod {} 59 | 60 | @end 61 | 62 | * @endcode 63 | * 64 | * If a concrete protocol \c X conforms to another concrete protocol \c Y, any 65 | * concrete implementations in \c X will be prioritized over those in \c Y. In 66 | * other words, if both protocols provide a default implementation for a method, 67 | * the one from \c X (the most descendant) is the one that will be loaded into 68 | * any class that conforms to \c X. Classes that conform to \c Y will naturally 69 | * only use the implementations from \c Y. 70 | * 71 | * To perform tasks when a concrete protocol is loaded, use the \c +initialize 72 | * method. This method in a concrete protocol is treated similarly to \c +load 73 | * in categories – it will be executed at most once per concrete protocol, and 74 | * is not added to any classes which receive the concrete protocol's methods. 75 | * The protocol's methods will have been added to all conforming classes at the 76 | * time that \c +initialize is invoked. If no class conforms to the concrete 77 | * protocol, \c +initialize may never be called. 78 | * 79 | * @note You cannot define instance variables in a concrete protocol. 80 | * 81 | * @warning You should not invoke methods against \c super in the implementation 82 | * of a concrete protocol, as the superclass may not be the type you expect (and 83 | * may not even inherit from \c NSObject). 84 | */ 85 | #define concreteprotocol(NAME) \ 86 | /* 87 | * create a class used to contain all the methods used in this protocol 88 | */ \ 89 | interface NAME ## _ProtocolMethodContainer : NSObject < NAME > {} \ 90 | @end \ 91 | \ 92 | @implementation NAME ## _ProtocolMethodContainer \ 93 | /* 94 | * when this class is loaded into the runtime, add the concrete protocol 95 | * into the list we have of them 96 | */ \ 97 | + (void)load { \ 98 | /* 99 | * passes the actual protocol as the first parameter, then this class as 100 | * the second 101 | */ \ 102 | if (!ext_addConcreteProtocol(objc_getProtocol(metamacro_stringify(NAME)), self)) \ 103 | fprintf(stderr, "ERROR: Could not load concrete protocol %s\n", metamacro_stringify(NAME)); \ 104 | } \ 105 | \ 106 | /* 107 | * using the "constructor" function attribute, we can ensure that this 108 | * function is executed only AFTER all the Objective-C runtime setup (i.e., 109 | * after all +load methods have been executed) 110 | */ \ 111 | __attribute__((constructor)) \ 112 | static void ext_ ## NAME ## _inject (void) { \ 113 | /* 114 | * use this injection point to mark this concrete protocol as ready for 115 | * loading 116 | */ \ 117 | ext_loadConcreteProtocol(objc_getProtocol(metamacro_stringify(NAME))); \ 118 | } 119 | 120 | /*** implementation details follow ***/ 121 | BOOL ext_addConcreteProtocol (Protocol *protocol, Class methodContainer); 122 | void ext_loadConcreteProtocol (Protocol *protocol); 123 | 124 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageDownloader.h" 11 | #import "SDWebImageOperation.h" 12 | 13 | extern NSString *const SDWebImageDownloadStartNotification; 14 | extern NSString *const SDWebImageDownloadReceiveResponseNotification; 15 | extern NSString *const SDWebImageDownloadStopNotification; 16 | extern NSString *const SDWebImageDownloadFinishNotification; 17 | 18 | @interface SDWebImageDownloaderOperation : NSOperation 19 | 20 | /** 21 | * The request used by the operation's task. 22 | */ 23 | @property (strong, nonatomic, readonly) NSURLRequest *request; 24 | 25 | /** 26 | * The operation's task 27 | */ 28 | @property (strong, nonatomic, readonly) NSURLSessionTask *dataTask; 29 | 30 | 31 | @property (assign, nonatomic) BOOL shouldDecompressImages; 32 | 33 | /** 34 | * Was used to determine whether the URL connection should consult the credential storage for authenticating the connection. 35 | * @deprecated Not used for a couple of versions 36 | */ 37 | @property (nonatomic, assign) BOOL shouldUseCredentialStorage __deprecated_msg("Property deprecated. Does nothing. Kept only for backwards compatibility"); 38 | 39 | /** 40 | * The credential used for authentication challenges in `-connection:didReceiveAuthenticationChallenge:`. 41 | * 42 | * This will be overridden by any shared credentials that exist for the username or password of the request URL, if present. 43 | */ 44 | @property (nonatomic, strong) NSURLCredential *credential; 45 | 46 | /** 47 | * The SDWebImageDownloaderOptions for the receiver. 48 | */ 49 | @property (assign, nonatomic, readonly) SDWebImageDownloaderOptions options; 50 | 51 | /** 52 | * The expected size of data. 53 | */ 54 | @property (assign, nonatomic) NSInteger expectedSize; 55 | 56 | /** 57 | * The response returned by the operation's connection. 58 | */ 59 | @property (strong, nonatomic) NSURLResponse *response; 60 | 61 | /** 62 | * Initializes a `SDWebImageDownloaderOperation` object 63 | * 64 | * @see SDWebImageDownloaderOperation 65 | * 66 | * @param request the URL request 67 | * @param session the URL session in which this operation will run 68 | * @param options downloader options 69 | * @param progressBlock the block executed when a new chunk of data arrives. 70 | * @note the progress block is executed on a background queue 71 | * @param completedBlock the block executed when the download is done. 72 | * @note the completed block is executed on the main queue for success. If errors are found, there is a chance the block will be executed on a background queue 73 | * @param cancelBlock the block executed if the download (operation) is cancelled 74 | * 75 | * @return the initialized instance 76 | */ 77 | - (id)initWithRequest:(NSURLRequest *)request 78 | inSession:(NSURLSession *)session 79 | options:(SDWebImageDownloaderOptions)options 80 | progress:(SDWebImageDownloaderProgressBlock)progressBlock 81 | completed:(SDWebImageDownloaderCompletedBlock)completedBlock 82 | cancelled:(SDWebImageNoParamsBlock)cancelBlock; 83 | 84 | /** 85 | * Initializes a `SDWebImageDownloaderOperation` object 86 | * 87 | * @see SDWebImageDownloaderOperation 88 | * 89 | * @param request the URL request 90 | * @param options downloader options 91 | * @param progressBlock the block executed when a new chunk of data arrives. 92 | * @note the progress block is executed on a background queue 93 | * @param completedBlock the block executed when the download is done. 94 | * @note the completed block is executed on the main queue for success. If errors are found, there is a chance the block will be executed on a background queue 95 | * @param cancelBlock the block executed if the download (operation) is cancelled 96 | * 97 | * @return the initialized instance. The operation will run in a separate session created for this operation 98 | */ 99 | - (id)initWithRequest:(NSURLRequest *)request 100 | options:(SDWebImageDownloaderOptions)options 101 | progress:(SDWebImageDownloaderProgressBlock)progressBlock 102 | completed:(SDWebImageDownloaderCompletedBlock)completedBlock 103 | cancelled:(SDWebImageNoParamsBlock)cancelBlock 104 | __deprecated_msg("Method deprecated. Use `initWithRequest:inSession:options:progress:completed:cancelled`"); 105 | 106 | @end 107 | -------------------------------------------------------------------------------- /ImageAndTextMixed.xcodeproj/xcuserdata/syc.xcuserdatad/xcschemes/ImageAndTextMixed.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 43 | 49 | 50 | 51 | 52 | 53 | 59 | 60 | 61 | 62 | 63 | 64 | 74 | 76 | 82 | 83 | 84 | 85 | 86 | 87 | 93 | 95 | 101 | 102 | 103 | 104 | 106 | 107 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixed/Pods-ImageAndTextMixed-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) 2011-2012 Masonry Team - https://github.com/Masonry 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 | License 37 | MIT 38 | Title 39 | Masonry 40 | Type 41 | PSGroupSpecifier 42 | 43 | 44 | FooterText 45 | Copyright (c) 2016 Olivier Poitrey rs@dailymotion.com 46 | 47 | Permission is hereby granted, free of charge, to any person obtaining a copy 48 | of this software and associated documentation files (the "Software"), to deal 49 | in the Software without restriction, including without limitation the rights 50 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 51 | copies of the Software, and to permit persons to whom the Software is furnished 52 | to do so, subject to the following conditions: 53 | 54 | The above copyright notice and this permission notice shall be included in all 55 | copies or substantial portions of the Software. 56 | 57 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 58 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 59 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 60 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 61 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 62 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 63 | THE SOFTWARE. 64 | 65 | 66 | License 67 | MIT 68 | Title 69 | SDWebImage 70 | Type 71 | PSGroupSpecifier 72 | 73 | 74 | FooterText 75 | **Copyright (c) 2012 - 2014 Justin Spahr-Summers** 76 | 77 | Permission is hereby granted, free of charge, to any person obtaining a copy of 78 | this software and associated documentation files (the "Software"), to deal in 79 | the Software without restriction, including without limitation the rights to 80 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 81 | the Software, and to permit persons to whom the Software is furnished to do so, 82 | subject to the following conditions: 83 | 84 | The above copyright notice and this permission notice shall be included in all 85 | copies or substantial portions of the Software. 86 | 87 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 88 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 89 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 90 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 91 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 92 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 93 | 94 | License 95 | MIT 96 | Title 97 | libextobjc 98 | Type 99 | PSGroupSpecifier 100 | 101 | 102 | FooterText 103 | Generated by CocoaPods - https://cocoapods.org 104 | Title 105 | 106 | Type 107 | PSGroupSpecifier 108 | 109 | 110 | StringsTable 111 | Acknowledgements 112 | Title 113 | Acknowledgements 114 | 115 | 116 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixed/Pods-ImageAndTextMixed-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 | *) 22 | TARGET_DEVICE_ARGS="--target-device mac" 23 | ;; 24 | esac 25 | 26 | install_resource() 27 | { 28 | if [[ "$1" = /* ]] ; then 29 | RESOURCE_PATH="$1" 30 | else 31 | RESOURCE_PATH="${PODS_ROOT}/$1" 32 | fi 33 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 34 | cat << EOM 35 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 36 | EOM 37 | exit 1 38 | fi 39 | case $RESOURCE_PATH in 40 | *.storyboard) 41 | 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}" 42 | 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} 43 | ;; 44 | *.xib) 45 | 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}" 46 | 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} 47 | ;; 48 | *.framework) 49 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 50 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 51 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 52 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 53 | ;; 54 | *.xcdatamodel) 55 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 56 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 57 | ;; 58 | *.xcdatamodeld) 59 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 60 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 61 | ;; 62 | *.xcmappingmodel) 63 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 64 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 65 | ;; 66 | *.xcassets) 67 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 68 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 69 | ;; 70 | *) 71 | echo "$RESOURCE_PATH" 72 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 73 | ;; 74 | esac 75 | } 76 | 77 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 78 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 79 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 80 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 81 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 82 | fi 83 | rm -f "$RESOURCES_TO_COPY" 84 | 85 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 86 | then 87 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 88 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 89 | while read line; do 90 | if [[ $line != "${PODS_ROOT}*" ]]; then 91 | XCASSET_FILES+=("$line") 92 | fi 93 | done <<<"$OTHER_XCASSETS" 94 | 95 | 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}" 96 | fi 97 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedTests/Pods-ImageAndTextMixedTests-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 | *) 22 | TARGET_DEVICE_ARGS="--target-device mac" 23 | ;; 24 | esac 25 | 26 | install_resource() 27 | { 28 | if [[ "$1" = /* ]] ; then 29 | RESOURCE_PATH="$1" 30 | else 31 | RESOURCE_PATH="${PODS_ROOT}/$1" 32 | fi 33 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 34 | cat << EOM 35 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 36 | EOM 37 | exit 1 38 | fi 39 | case $RESOURCE_PATH in 40 | *.storyboard) 41 | 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}" 42 | 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} 43 | ;; 44 | *.xib) 45 | 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}" 46 | 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} 47 | ;; 48 | *.framework) 49 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 50 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 51 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 52 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 53 | ;; 54 | *.xcdatamodel) 55 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 56 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 57 | ;; 58 | *.xcdatamodeld) 59 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 60 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 61 | ;; 62 | *.xcmappingmodel) 63 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 64 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 65 | ;; 66 | *.xcassets) 67 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 68 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 69 | ;; 70 | *) 71 | echo "$RESOURCE_PATH" 72 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 73 | ;; 74 | esac 75 | } 76 | 77 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 78 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 79 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 80 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 81 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 82 | fi 83 | rm -f "$RESOURCES_TO_COPY" 84 | 85 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 86 | then 87 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 88 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 89 | while read line; do 90 | if [[ $line != "${PODS_ROOT}*" ]]; then 91 | XCASSET_FILES+=("$line") 92 | fi 93 | done <<<"$OTHER_XCASSETS" 94 | 95 | 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}" 96 | fi 97 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ImageAndTextMixedUITests/Pods-ImageAndTextMixedUITests-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 | *) 22 | TARGET_DEVICE_ARGS="--target-device mac" 23 | ;; 24 | esac 25 | 26 | install_resource() 27 | { 28 | if [[ "$1" = /* ]] ; then 29 | RESOURCE_PATH="$1" 30 | else 31 | RESOURCE_PATH="${PODS_ROOT}/$1" 32 | fi 33 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 34 | cat << EOM 35 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 36 | EOM 37 | exit 1 38 | fi 39 | case $RESOURCE_PATH in 40 | *.storyboard) 41 | 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}" 42 | 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} 43 | ;; 44 | *.xib) 45 | 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}" 46 | 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} 47 | ;; 48 | *.framework) 49 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 50 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 51 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 52 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 53 | ;; 54 | *.xcdatamodel) 55 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 56 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 57 | ;; 58 | *.xcdatamodeld) 59 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 60 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 61 | ;; 62 | *.xcmappingmodel) 63 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 64 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 65 | ;; 66 | *.xcassets) 67 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 68 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 69 | ;; 70 | *) 71 | echo "$RESOURCE_PATH" 72 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 73 | ;; 74 | esac 75 | } 76 | 77 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 78 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 79 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 80 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 81 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 82 | fi 83 | rm -f "$RESOURCES_TO_COPY" 84 | 85 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 86 | then 87 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 88 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 89 | while read line; do 90 | if [[ $line != "${PODS_ROOT}*" ]]; then 91 | XCASSET_FILES+=("$line") 92 | fi 93 | done <<<"$OTHER_XCASSETS" 94 | 95 | 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}" 96 | fi 97 | --------------------------------------------------------------------------------