├── ASDKDemo.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcuserdata │ └── Dee.xcuserdatad │ └── xcschemes │ ├── ASDKDemo.xcscheme │ └── xcschememanagement.plist ├── ASDKDemo.xcworkspace ├── contents.xcworkspacedata └── xcuserdata │ └── Dee.xcuserdatad │ ├── IDEFindNavigatorScopes.plist │ └── xcdebugger │ └── Breakpoints_v2.xcbkptlist ├── ASDKDemo ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ ├── dis_more.imageset │ │ ├── Contents.json │ │ ├── dis_more@2x.png │ │ └── dis_more@3x.png │ ├── home_report.imageset │ │ ├── Contents.json │ │ ├── home_report@2x.png │ │ └── home_report@3x.png │ └── mask_smallscreen.imageset │ │ ├── Contents.json │ │ ├── mask_smallscreen@2x.png │ │ └── mask_smallscreen@3x.png ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Controller │ ├── HomeController.h │ ├── HomeController.m │ ├── MusterController.h │ ├── MusterController.m │ ├── VideoController.h │ └── VideoController.m ├── Foundation │ ├── ASCategory │ │ ├── ASButtonNode+DE.h │ │ ├── ASButtonNode+DE.m │ │ ├── ASCategory.h │ │ ├── ASNetworkImageNode+DE.h │ │ ├── ASNetworkImageNode+DE.m │ │ ├── ASTableNode+DE.h │ │ ├── ASTableNode+DE.m │ │ ├── ASTextNode+DE.h │ │ ├── ASTextNode+DE.m │ │ ├── NSAttributedString+DE.h │ │ ├── NSAttributedString+DE.m │ │ ├── NSString+DE.h │ │ ├── NSString+DE.m │ │ ├── UIImage+DE.h │ │ └── UIImage+DE.m │ ├── Category │ │ ├── NSDate │ │ │ ├── NSData+Base64.h │ │ │ ├── NSData+Base64.m │ │ │ ├── NSData+Encrypt.h │ │ │ ├── NSData+Encrypt.m │ │ │ ├── NSDate+Compare.h │ │ │ └── NSDate+Compare.m │ │ ├── NSString │ │ │ ├── NSString+Base64.h │ │ │ ├── NSString+Base64.m │ │ │ ├── NSString+Encrypt.h │ │ │ ├── NSString+Encrypt.m │ │ │ ├── NSString+MD5.h │ │ │ ├── NSString+MD5.m │ │ │ ├── NSString+Pinyin.h │ │ │ ├── NSString+Pinyin.m │ │ │ ├── NSString+Size.h │ │ │ └── NSString+Size.m │ │ ├── NSURL │ │ │ ├── NSDictionary+Params.h │ │ │ ├── NSDictionary+Params.m │ │ │ ├── NSURL+Parameters.h │ │ │ └── NSURL+Parameters.m │ │ ├── UIBarButtonItem │ │ │ ├── UIBarButtonItem+Item.h │ │ │ └── UIBarButtonItem+Item.m │ │ ├── UIColor │ │ │ ├── UIColor+Hex.h │ │ │ └── UIColor+Hex.m │ │ ├── UIImage │ │ │ ├── UIImage+Clip.h │ │ │ ├── UIImage+Clip.m │ │ │ ├── UIImage+Color.h │ │ │ ├── UIImage+Color.m │ │ │ ├── UIImage+Size.h │ │ │ ├── UIImage+Size.m │ │ │ ├── UIImage+Snap.h │ │ │ ├── UIImage+Snap.m │ │ │ ├── UIImage+TYLaunchImage.h │ │ │ └── UIImage+TYLaunchImage.m │ │ ├── UITabBarController │ │ │ ├── UITabBarController+AddChildVC.h │ │ │ └── UITabBarController+AddChildVC.m │ │ └── UIView │ │ │ ├── UIView+Frame.h │ │ │ ├── UIView+Frame.m │ │ │ ├── UIView+Nib.h │ │ │ ├── UIView+Nib.m │ │ │ ├── UIView+ViewController.h │ │ │ └── UIView+ViewController.m │ └── Header │ │ ├── Define_Basic.h │ │ └── Function_Basic.h ├── Info.plist ├── Model │ ├── VideoModel.h │ └── VideoModel.m ├── Tools │ ├── Factories.h │ └── Factories.m ├── View │ ├── Muster │ │ ├── CellNode │ │ │ ├── MusterCellNode.h │ │ │ └── MusterCellNode.m │ │ ├── MusterOneNode.h │ │ ├── MusterOneNode.m │ │ ├── MusterTopNode.h │ │ ├── MusterTopNode.m │ │ ├── MusterTwoNode.h │ │ └── MusterTwoNode.m │ └── Video │ │ ├── UserNode.h │ │ ├── UserNode.m │ │ ├── VideoCellNode.h │ │ └── VideoCellNode.m ├── main.m └── short_video.json ├── AppDelegate.h ├── AppDelegate.m ├── Podfile ├── Podfile.lock ├── Pods ├── Manifest.lock ├── PINCache │ ├── LICENSE.txt │ ├── README.md │ └── Source │ │ ├── PINCache.h │ │ ├── PINCache.m │ │ ├── PINCacheMacros.h │ │ ├── PINCacheObjectSubscripting.h │ │ ├── PINCaching.h │ │ ├── PINDiskCache.h │ │ ├── PINDiskCache.m │ │ ├── PINMemoryCache.h │ │ └── PINMemoryCache.m ├── PINOperation │ ├── LICENSE.txt │ ├── README.md │ └── Source │ │ ├── PINOperation.h │ │ ├── PINOperationGroup.h │ │ ├── PINOperationGroup.m │ │ ├── PINOperationMacros.h │ │ ├── PINOperationQueue.h │ │ ├── PINOperationQueue.m │ │ └── PINOperationTypes.h ├── PINRemoteImage │ ├── LICENSE │ ├── README.md │ └── Source │ │ └── Classes │ │ ├── AnimatedImages │ │ ├── PINAnimatedImage.h │ │ ├── PINAnimatedImage.m │ │ ├── PINCachedAnimatedImage.h │ │ ├── PINCachedAnimatedImage.m │ │ ├── PINGIFAnimatedImage.h │ │ ├── PINGIFAnimatedImage.m │ │ ├── PINMemMapAnimatedImage.h │ │ ├── PINMemMapAnimatedImage.m │ │ ├── PINWebPAnimatedImage.h │ │ └── PINWebPAnimatedImage.m │ │ ├── Categories │ │ ├── NSData+ImageDetectors.h │ │ ├── NSData+ImageDetectors.m │ │ ├── PINImage+DecodedImage.h │ │ ├── PINImage+DecodedImage.m │ │ ├── PINImage+ScaledImage.h │ │ ├── PINImage+ScaledImage.m │ │ ├── PINImage+WebP.h │ │ ├── PINImage+WebP.m │ │ └── PINRemoteImageTask+Subclassing.h │ │ ├── ImageCategories │ │ ├── PINButton+PINRemoteImage.h │ │ ├── PINButton+PINRemoteImage.m │ │ ├── PINImageView+PINRemoteImage.h │ │ └── PINImageView+PINRemoteImage.m │ │ ├── PINAlternateRepresentationProvider.h │ │ ├── PINAlternateRepresentationProvider.m │ │ ├── PINCache │ │ ├── PINCache+PINRemoteImageCaching.h │ │ └── PINCache+PINRemoteImageCaching.m │ │ ├── PINGIFAnimatedImageManager.h │ │ ├── PINGIFAnimatedImageManager.m │ │ ├── PINProgressiveImage.h │ │ ├── PINProgressiveImage.m │ │ ├── PINRemoteImage.h │ │ ├── PINRemoteImageBasicCache.h │ │ ├── PINRemoteImageBasicCache.m │ │ ├── PINRemoteImageCaching.h │ │ ├── PINRemoteImageCallbacks.h │ │ ├── PINRemoteImageCallbacks.m │ │ ├── PINRemoteImageCategoryManager.h │ │ ├── PINRemoteImageCategoryManager.m │ │ ├── PINRemoteImageDownloadQueue.h │ │ ├── PINRemoteImageDownloadQueue.m │ │ ├── PINRemoteImageDownloadTask.h │ │ ├── PINRemoteImageDownloadTask.m │ │ ├── PINRemoteImageMacros.h │ │ ├── PINRemoteImageManager+Private.h │ │ ├── PINRemoteImageManager.h │ │ ├── PINRemoteImageManager.m │ │ ├── PINRemoteImageManagerResult.h │ │ ├── PINRemoteImageManagerResult.m │ │ ├── PINRemoteImageMemoryContainer.h │ │ ├── PINRemoteImageMemoryContainer.m │ │ ├── PINRemoteImageProcessorTask.h │ │ ├── PINRemoteImageProcessorTask.m │ │ ├── PINRemoteImageTask.h │ │ ├── PINRemoteImageTask.m │ │ ├── PINRemoteLock.h │ │ ├── PINRemoteLock.m │ │ ├── PINRequestRetryStrategy.h │ │ ├── PINRequestRetryStrategy.m │ │ ├── PINResume.h │ │ ├── PINResume.m │ │ ├── PINSpeedRecorder.h │ │ ├── PINSpeedRecorder.m │ │ ├── PINURLSessionManager.h │ │ └── PINURLSessionManager.m ├── Pods.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ └── Dee.xcuserdatad │ │ └── xcschemes │ │ ├── PINCache.xcscheme │ │ ├── PINOperation.xcscheme │ │ ├── PINRemoteImage.xcscheme │ │ ├── Pods-ASDKDemo.xcscheme │ │ ├── Texture.xcscheme │ │ ├── YYModel.xcscheme │ │ └── xcschememanagement.plist ├── Target Support Files │ ├── PINCache │ │ ├── Info.plist │ │ ├── PINCache-dummy.m │ │ ├── PINCache-prefix.pch │ │ ├── PINCache-umbrella.h │ │ ├── PINCache.modulemap │ │ └── PINCache.xcconfig │ ├── PINOperation │ │ ├── Info.plist │ │ ├── PINOperation-dummy.m │ │ ├── PINOperation-prefix.pch │ │ ├── PINOperation-umbrella.h │ │ ├── PINOperation.modulemap │ │ └── PINOperation.xcconfig │ ├── PINRemoteImage │ │ ├── Info.plist │ │ ├── PINRemoteImage-dummy.m │ │ ├── PINRemoteImage-prefix.pch │ │ ├── PINRemoteImage-umbrella.h │ │ ├── PINRemoteImage.modulemap │ │ └── PINRemoteImage.xcconfig │ ├── Pods-ASDKDemo │ │ ├── Info.plist │ │ ├── Pods-ASDKDemo-acknowledgements.markdown │ │ ├── Pods-ASDKDemo-acknowledgements.plist │ │ ├── Pods-ASDKDemo-dummy.m │ │ ├── Pods-ASDKDemo-frameworks.sh │ │ ├── Pods-ASDKDemo-resources.sh │ │ ├── Pods-ASDKDemo-umbrella.h │ │ ├── Pods-ASDKDemo.debug.xcconfig │ │ ├── Pods-ASDKDemo.modulemap │ │ └── Pods-ASDKDemo.release.xcconfig │ ├── Texture │ │ ├── Info.plist │ │ ├── Texture-dummy.m │ │ ├── Texture-prefix.pch │ │ ├── Texture-umbrella.h │ │ ├── Texture.modulemap │ │ └── Texture.xcconfig │ └── YYModel │ │ ├── Info.plist │ │ ├── YYModel-dummy.m │ │ ├── YYModel-prefix.pch │ │ ├── YYModel-umbrella.h │ │ ├── YYModel.modulemap │ │ └── YYModel.xcconfig ├── Texture │ ├── LICENSE │ ├── README.md │ └── Source │ │ ├── ASBlockTypes.h │ │ ├── ASButtonNode.h │ │ ├── ASButtonNode.mm │ │ ├── ASCellNode.h │ │ ├── ASCellNode.mm │ │ ├── ASCollectionNode+Beta.h │ │ ├── ASCollectionNode.h │ │ ├── ASCollectionNode.mm │ │ ├── ASCollectionView.h │ │ ├── ASCollectionView.mm │ │ ├── ASCollectionViewLayoutFacilitatorProtocol.h │ │ ├── ASCollectionViewProtocols.h │ │ ├── ASContextTransitioning.h │ │ ├── ASControlNode+Subclasses.h │ │ ├── ASControlNode.h │ │ ├── ASControlNode.mm │ │ ├── ASDisplayNode+Beta.h │ │ ├── ASDisplayNode+Convenience.h │ │ ├── ASDisplayNode+Convenience.m │ │ ├── ASDisplayNode+Layout.mm │ │ ├── ASDisplayNode+Subclasses.h │ │ ├── ASDisplayNode+Yoga.mm │ │ ├── ASDisplayNode.h │ │ ├── ASDisplayNode.mm │ │ ├── ASDisplayNodeExtras.h │ │ ├── ASDisplayNodeExtras.mm │ │ ├── ASEditableTextNode.h │ │ ├── ASEditableTextNode.mm │ │ ├── ASImageNode+AnimatedImage.mm │ │ ├── ASImageNode.h │ │ ├── ASImageNode.mm │ │ ├── ASMapNode.h │ │ ├── ASMapNode.mm │ │ ├── ASMultiplexImageNode.h │ │ ├── ASMultiplexImageNode.mm │ │ ├── ASNavigationController.h │ │ ├── ASNavigationController.m │ │ ├── ASNetworkImageNode.h │ │ ├── ASNetworkImageNode.mm │ │ ├── ASNodeController+Beta.h │ │ ├── ASNodeController+Beta.m │ │ ├── ASPagerFlowLayout.h │ │ ├── ASPagerFlowLayout.m │ │ ├── ASPagerNode+Beta.h │ │ ├── ASPagerNode.h │ │ ├── ASPagerNode.m │ │ ├── ASRangeManagingNode.h │ │ ├── ASRunLoopQueue.h │ │ ├── ASRunLoopQueue.mm │ │ ├── ASScrollNode.h │ │ ├── ASScrollNode.mm │ │ ├── ASSectionController.h │ │ ├── ASSupplementaryNodeSource.h │ │ ├── ASTabBarController.h │ │ ├── ASTabBarController.m │ │ ├── ASTableNode+Beta.h │ │ ├── ASTableNode.h │ │ ├── ASTableNode.mm │ │ ├── ASTableView.h │ │ ├── ASTableView.mm │ │ ├── ASTableViewInternal.h │ │ ├── ASTableViewProtocols.h │ │ ├── ASTextNode+Beta.h │ │ ├── ASTextNode.h │ │ ├── ASTextNode.mm │ │ ├── ASTextNode2.h │ │ ├── ASTextNode2.mm │ │ ├── ASVideoNode.h │ │ ├── ASVideoNode.mm │ │ ├── ASVideoPlayerNode.h │ │ ├── ASVideoPlayerNode.mm │ │ ├── ASViewController.h │ │ ├── ASViewController.mm │ │ ├── ASVisibilityProtocols.h │ │ ├── ASVisibilityProtocols.m │ │ ├── AsyncDisplayKit+IGListKitMethods.h │ │ ├── AsyncDisplayKit+IGListKitMethods.m │ │ ├── AsyncDisplayKit.h │ │ ├── Base │ │ ├── ASAssert.h │ │ ├── ASAssert.m │ │ ├── ASAvailability.h │ │ ├── ASBaseDefines.h │ │ ├── ASDisplayNode+Ancestry.h │ │ ├── ASDisplayNode+Ancestry.m │ │ ├── ASEqualityHelpers.h │ │ ├── ASLog.h │ │ ├── ASLog.m │ │ └── ASSignpost.h │ │ ├── Debug │ │ ├── AsyncDisplayKit+Debug.h │ │ ├── AsyncDisplayKit+Debug.m │ │ ├── AsyncDisplayKit+Tips.h │ │ └── AsyncDisplayKit+Tips.m │ │ ├── Details │ │ ├── ASAbstractLayoutController.h │ │ ├── ASAbstractLayoutController.mm │ │ ├── ASBasicImageDownloader.h │ │ ├── ASBasicImageDownloader.mm │ │ ├── ASBatchContext.h │ │ ├── ASBatchContext.mm │ │ ├── ASBatchFetchingDelegate.h │ │ ├── ASCollectionElement.h │ │ ├── ASCollectionElement.mm │ │ ├── ASCollectionFlowLayoutDelegate.h │ │ ├── ASCollectionFlowLayoutDelegate.m │ │ ├── ASCollectionGalleryLayoutDelegate.h │ │ ├── ASCollectionGalleryLayoutDelegate.mm │ │ ├── ASCollectionInternal.h │ │ ├── ASCollectionInternal.m │ │ ├── ASCollectionLayoutContext.h │ │ ├── ASCollectionLayoutContext.m │ │ ├── ASCollectionLayoutDelegate.h │ │ ├── ASCollectionLayoutState.h │ │ ├── ASCollectionLayoutState.mm │ │ ├── ASCollectionViewLayoutController.h │ │ ├── ASCollectionViewLayoutController.m │ │ ├── ASCollectionViewLayoutInspector.h │ │ ├── ASCollectionViewLayoutInspector.m │ │ ├── ASDataController.h │ │ ├── ASDataController.mm │ │ ├── ASDelegateProxy.h │ │ ├── ASDelegateProxy.m │ │ ├── ASElementMap.h │ │ ├── ASElementMap.m │ │ ├── ASEventLog.h │ │ ├── ASEventLog.mm │ │ ├── ASHashing.h │ │ ├── ASHashing.m │ │ ├── ASHighlightOverlayLayer.h │ │ ├── ASHighlightOverlayLayer.mm │ │ ├── ASImageContainerProtocolCategories.h │ │ ├── ASImageContainerProtocolCategories.m │ │ ├── ASImageProtocols.h │ │ ├── ASIntegerMap.h │ │ ├── ASIntegerMap.mm │ │ ├── ASLayoutController.h │ │ ├── ASLayoutRangeType.h │ │ ├── ASMainSerialQueue.h │ │ ├── ASMainSerialQueue.mm │ │ ├── ASMutableAttributedStringBuilder.h │ │ ├── ASMutableAttributedStringBuilder.m │ │ ├── ASObjectDescriptionHelpers.h │ │ ├── ASObjectDescriptionHelpers.m │ │ ├── ASPINRemoteImageDownloader.h │ │ ├── ASPINRemoteImageDownloader.m │ │ ├── ASPageTable.h │ │ ├── ASPageTable.m │ │ ├── ASPhotosFrameworkImageRequest.h │ │ ├── ASPhotosFrameworkImageRequest.m │ │ ├── ASRangeController.h │ │ ├── ASRangeController.mm │ │ ├── ASRangeControllerUpdateRangeProtocol+Beta.h │ │ ├── ASScrollDirection.h │ │ ├── ASScrollDirection.m │ │ ├── ASSectionContext.h │ │ ├── ASTableLayoutController.h │ │ ├── ASTableLayoutController.m │ │ ├── ASThread.h │ │ ├── ASTraceEvent.h │ │ ├── ASTraceEvent.m │ │ ├── ASTraitCollection.h │ │ ├── ASTraitCollection.m │ │ ├── ASWeakProxy.h │ │ ├── ASWeakProxy.m │ │ ├── ASWeakSet.h │ │ ├── ASWeakSet.m │ │ ├── CoreGraphics+ASConvenience.h │ │ ├── CoreGraphics+ASConvenience.m │ │ ├── NSArray+Diffing.h │ │ ├── NSArray+Diffing.m │ │ ├── NSIndexSet+ASHelpers.h │ │ ├── NSIndexSet+ASHelpers.m │ │ ├── NSMutableAttributedString+TextKitAdditions.h │ │ ├── NSMutableAttributedString+TextKitAdditions.m │ │ ├── Transactions │ │ │ ├── _ASAsyncTransaction.h │ │ │ ├── _ASAsyncTransaction.mm │ │ │ ├── _ASAsyncTransactionContainer+Private.h │ │ │ ├── _ASAsyncTransactionContainer.h │ │ │ ├── _ASAsyncTransactionContainer.m │ │ │ ├── _ASAsyncTransactionGroup.h │ │ │ └── _ASAsyncTransactionGroup.m │ │ ├── UICollectionViewLayout+ASConvenience.h │ │ ├── UICollectionViewLayout+ASConvenience.m │ │ ├── UIView+ASConvenience.h │ │ ├── _ASCollectionReusableView.h │ │ ├── _ASCollectionReusableView.m │ │ ├── _ASCollectionViewCell.h │ │ ├── _ASCollectionViewCell.m │ │ ├── _ASDisplayLayer.h │ │ ├── _ASDisplayLayer.mm │ │ ├── _ASDisplayView.h │ │ ├── _ASDisplayView.mm │ │ ├── _ASDisplayViewAccessiblity.h │ │ └── _ASDisplayViewAccessiblity.mm │ │ ├── IGListAdapter+AsyncDisplayKit.h │ │ ├── IGListAdapter+AsyncDisplayKit.m │ │ ├── Layout │ │ ├── ASAbsoluteLayoutElement.h │ │ ├── ASAbsoluteLayoutSpec.h │ │ ├── ASAbsoluteLayoutSpec.mm │ │ ├── ASAsciiArtBoxCreator.h │ │ ├── ASAsciiArtBoxCreator.m │ │ ├── ASBackgroundLayoutSpec.h │ │ ├── ASBackgroundLayoutSpec.mm │ │ ├── ASCenterLayoutSpec.h │ │ ├── ASCenterLayoutSpec.mm │ │ ├── ASDimension.h │ │ ├── ASDimension.mm │ │ ├── ASDimensionInternal.h │ │ ├── ASDimensionInternal.mm │ │ ├── ASInsetLayoutSpec.h │ │ ├── ASInsetLayoutSpec.mm │ │ ├── ASLayout.h │ │ ├── ASLayout.mm │ │ ├── ASLayoutElement.h │ │ ├── ASLayoutElement.mm │ │ ├── ASLayoutElementExtensibility.h │ │ ├── ASLayoutElementPrivate.h │ │ ├── ASLayoutSpec+Subclasses.h │ │ ├── ASLayoutSpec+Subclasses.mm │ │ ├── ASLayoutSpec.h │ │ ├── ASLayoutSpec.mm │ │ ├── ASOverlayLayoutSpec.h │ │ ├── ASOverlayLayoutSpec.mm │ │ ├── ASRatioLayoutSpec.h │ │ ├── ASRatioLayoutSpec.mm │ │ ├── ASRelativeLayoutSpec.h │ │ ├── ASRelativeLayoutSpec.mm │ │ ├── ASStackLayoutDefines.h │ │ ├── ASStackLayoutElement.h │ │ ├── ASStackLayoutSpec.h │ │ ├── ASStackLayoutSpec.mm │ │ ├── ASYogaLayoutSpec.h │ │ ├── ASYogaLayoutSpec.mm │ │ ├── ASYogaUtilities.h │ │ └── ASYogaUtilities.mm │ │ ├── Private │ │ ├── ASBasicImageDownloaderInternal.h │ │ ├── ASBatchFetching.h │ │ ├── ASBatchFetching.m │ │ ├── ASCellNode+Internal.h │ │ ├── ASCollectionLayout.h │ │ ├── ASCollectionLayout.mm │ │ ├── ASCollectionLayoutCache.h │ │ ├── ASCollectionLayoutCache.mm │ │ ├── ASCollectionLayoutContext+Private.h │ │ ├── ASCollectionLayoutDefines.h │ │ ├── ASCollectionLayoutDefines.m │ │ ├── ASCollectionLayoutState+Private.h │ │ ├── ASCollectionView+Undeprecated.h │ │ ├── ASCollectionViewFlowLayoutInspector.h │ │ ├── ASCollectionViewFlowLayoutInspector.m │ │ ├── ASControlTargetAction.h │ │ ├── ASControlTargetAction.m │ │ ├── ASDefaultPlayButton.h │ │ ├── ASDefaultPlayButton.m │ │ ├── ASDefaultPlaybackButton.h │ │ ├── ASDefaultPlaybackButton.m │ │ ├── ASDispatch.h │ │ ├── ASDispatch.m │ │ ├── ASDisplayNode+AsyncDisplay.mm │ │ ├── ASDisplayNode+DebugTiming.h │ │ ├── ASDisplayNode+DebugTiming.mm │ │ ├── ASDisplayNode+FrameworkPrivate.h │ │ ├── ASDisplayNode+FrameworkSubclasses.h │ │ ├── ASDisplayNode+UIViewBridge.mm │ │ ├── ASDisplayNodeInternal.h │ │ ├── ASDisplayNodeLayout.h │ │ ├── ASDisplayNodeLayout.mm │ │ ├── ASDisplayNodeTipState.h │ │ ├── ASDisplayNodeTipState.m │ │ ├── ASIGListAdapterBasedDataSource.h │ │ ├── ASIGListAdapterBasedDataSource.m │ │ ├── ASImageNode+AnimatedImagePrivate.h │ │ ├── ASImageNode+CGExtras.h │ │ ├── ASImageNode+CGExtras.m │ │ ├── ASImageNode+Private.h │ │ ├── ASInternalHelpers.h │ │ ├── ASInternalHelpers.m │ │ ├── ASLayerBackingTipProvider.h │ │ ├── ASLayerBackingTipProvider.m │ │ ├── ASLayoutTransition.h │ │ ├── ASLayoutTransition.mm │ │ ├── ASMutableElementMap.h │ │ ├── ASMutableElementMap.m │ │ ├── ASPendingStateController.h │ │ ├── ASPendingStateController.mm │ │ ├── ASRectTable.h │ │ ├── ASRectTable.m │ │ ├── ASResponderChainEnumerator.h │ │ ├── ASResponderChainEnumerator.m │ │ ├── ASSection.h │ │ ├── ASSection.m │ │ ├── ASTableView+Undeprecated.h │ │ ├── ASTip.h │ │ ├── ASTip.m │ │ ├── ASTipNode.h │ │ ├── ASTipNode.m │ │ ├── ASTipProvider.h │ │ ├── ASTipProvider.m │ │ ├── ASTipsController.h │ │ ├── ASTipsController.m │ │ ├── ASTipsWindow.h │ │ ├── ASTipsWindow.m │ │ ├── ASTwoDimensionalArrayUtils.h │ │ ├── ASTwoDimensionalArrayUtils.m │ │ ├── ASWeakMap.h │ │ ├── ASWeakMap.m │ │ ├── Layout │ │ │ ├── ASLayoutElementStylePrivate.h │ │ │ ├── ASLayoutSpecPrivate.h │ │ │ ├── ASLayoutSpecUtilities.h │ │ │ ├── ASStackLayoutSpecUtilities.h │ │ │ ├── ASStackPositionedLayout.h │ │ │ ├── ASStackPositionedLayout.mm │ │ │ ├── ASStackUnpositionedLayout.h │ │ │ └── ASStackUnpositionedLayout.mm │ │ ├── TextExperiment │ │ │ ├── Component │ │ │ │ ├── ASTextDebugOption.h │ │ │ │ ├── ASTextDebugOption.m │ │ │ │ ├── ASTextInput.h │ │ │ │ ├── ASTextInput.m │ │ │ │ ├── ASTextLayout.h │ │ │ │ ├── ASTextLayout.m │ │ │ │ ├── ASTextLine.h │ │ │ │ └── ASTextLine.m │ │ │ ├── String │ │ │ │ ├── ASTextAttribute.h │ │ │ │ ├── ASTextAttribute.m │ │ │ │ ├── ASTextRunDelegate.h │ │ │ │ └── ASTextRunDelegate.m │ │ │ └── Utility │ │ │ │ ├── ASTextUtilities.h │ │ │ │ ├── ASTextUtilities.m │ │ │ │ ├── NSAttributedString+ASText.h │ │ │ │ ├── NSAttributedString+ASText.m │ │ │ │ ├── NSParagraphStyle+ASText.h │ │ │ │ └── NSParagraphStyle+ASText.m │ │ ├── _ASCollectionGalleryLayoutInfo.h │ │ ├── _ASCollectionGalleryLayoutInfo.m │ │ ├── _ASCollectionGalleryLayoutItem.h │ │ ├── _ASCollectionGalleryLayoutItem.mm │ │ ├── _ASCoreAnimationExtras.h │ │ ├── _ASCoreAnimationExtras.mm │ │ ├── _ASHierarchyChangeSet.h │ │ ├── _ASHierarchyChangeSet.mm │ │ ├── _ASPendingState.h │ │ ├── _ASPendingState.mm │ │ └── _ASScopeTimer.h │ │ ├── TextKit │ │ ├── ASLayoutManager.h │ │ ├── ASLayoutManager.m │ │ ├── ASTextKitAttributes.h │ │ ├── ASTextKitAttributes.mm │ │ ├── ASTextKitComponents.h │ │ ├── ASTextKitComponents.mm │ │ ├── ASTextKitContext.h │ │ ├── ASTextKitContext.mm │ │ ├── ASTextKitCoreTextAdditions.h │ │ ├── ASTextKitCoreTextAdditions.m │ │ ├── ASTextKitEntityAttribute.h │ │ ├── ASTextKitEntityAttribute.m │ │ ├── ASTextKitFontSizeAdjuster.h │ │ ├── ASTextKitFontSizeAdjuster.mm │ │ ├── ASTextKitRenderer+Positioning.h │ │ ├── ASTextKitRenderer+Positioning.mm │ │ ├── ASTextKitRenderer+TextChecking.h │ │ ├── ASTextKitRenderer+TextChecking.mm │ │ ├── ASTextKitRenderer.h │ │ ├── ASTextKitRenderer.mm │ │ ├── ASTextKitShadower.h │ │ ├── ASTextKitShadower.mm │ │ ├── ASTextKitTailTruncater.h │ │ ├── ASTextKitTailTruncater.mm │ │ ├── ASTextKitTruncating.h │ │ ├── ASTextNodeTypes.h │ │ ├── ASTextNodeWordKerner.h │ │ └── ASTextNodeWordKerner.m │ │ ├── UIImage+ASConvenience.h │ │ ├── UIImage+ASConvenience.m │ │ ├── UIResponder+AsyncDisplayKit.h │ │ ├── UIResponder+AsyncDisplayKit.m │ │ ├── _ASTransitionContext.h │ │ ├── _ASTransitionContext.m │ │ └── tvOS │ │ ├── ASControlNode+tvOS.h │ │ ├── ASControlNode+tvOS.m │ │ ├── ASImageNode+tvOS.h │ │ └── ASImageNode+tvOS.m └── YYModel │ ├── LICENSE │ ├── README.md │ └── YYModel │ ├── NSObject+YYModel.h │ ├── NSObject+YYModel.m │ ├── YYClassInfo.h │ ├── YYClassInfo.m │ └── YYModel.h ├── PrefixHeader.pch └── README.md /ASDKDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ASDKDemo.xcodeproj/xcuserdata/Dee.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | ASDKDemo.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 93E6DC7B1F41A35D00E3DAF0 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ASDKDemo.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ASDKDemo.xcworkspace/xcuserdata/Dee.xcuserdatad/IDEFindNavigatorScopes.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ASDKDemo.xcworkspace/xcuserdata/Dee.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /ASDKDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /ASDKDemo/Assets.xcassets/dis_more.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dis_more@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "dis_more@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /ASDKDemo/Assets.xcassets/dis_more.imageset/dis_more@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversun/ASDK-Demo/977c149e8ff137d7bc55684f686dc485ab0e511f/ASDKDemo/Assets.xcassets/dis_more.imageset/dis_more@2x.png -------------------------------------------------------------------------------- /ASDKDemo/Assets.xcassets/dis_more.imageset/dis_more@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversun/ASDK-Demo/977c149e8ff137d7bc55684f686dc485ab0e511f/ASDKDemo/Assets.xcassets/dis_more.imageset/dis_more@3x.png -------------------------------------------------------------------------------- /ASDKDemo/Assets.xcassets/home_report.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_report@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "home_report@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /ASDKDemo/Assets.xcassets/home_report.imageset/home_report@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversun/ASDK-Demo/977c149e8ff137d7bc55684f686dc485ab0e511f/ASDKDemo/Assets.xcassets/home_report.imageset/home_report@2x.png -------------------------------------------------------------------------------- /ASDKDemo/Assets.xcassets/home_report.imageset/home_report@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversun/ASDK-Demo/977c149e8ff137d7bc55684f686dc485ab0e511f/ASDKDemo/Assets.xcassets/home_report.imageset/home_report@3x.png -------------------------------------------------------------------------------- /ASDKDemo/Assets.xcassets/mask_smallscreen.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mask_smallscreen@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mask_smallscreen@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /ASDKDemo/Assets.xcassets/mask_smallscreen.imageset/mask_smallscreen@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversun/ASDK-Demo/977c149e8ff137d7bc55684f686dc485ab0e511f/ASDKDemo/Assets.xcassets/mask_smallscreen.imageset/mask_smallscreen@2x.png -------------------------------------------------------------------------------- /ASDKDemo/Assets.xcassets/mask_smallscreen.imageset/mask_smallscreen@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/conversun/ASDK-Demo/977c149e8ff137d7bc55684f686dc485ab0e511f/ASDKDemo/Assets.xcassets/mask_smallscreen.imageset/mask_smallscreen@3x.png -------------------------------------------------------------------------------- /ASDKDemo/Controller/HomeController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HomeController.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2018/1/31. 6 | // Copyright © 2018年 Dee. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface HomeController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ASDKDemo/Controller/HomeController.m: -------------------------------------------------------------------------------- 1 | // 2 | // HomeController.m 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2018/1/31. 6 | // Copyright © 2018年 Dee. All rights reserved. 7 | // 8 | 9 | #import "HomeController.h" 10 | #import "VideoController.h" 11 | #import "MusterController.h" 12 | 13 | @interface HomeController () 14 | 15 | @end 16 | 17 | @implementation HomeController 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | [self.navigationController.navigationBar setHidden:YES]; 22 | 23 | } 24 | 25 | - (IBAction)videoEvent:(UIButton *)sender { 26 | [self.navigationController pushViewController:[VideoController new] animated:YES]; 27 | 28 | } 29 | 30 | - (IBAction)musterEvent:(UIButton *)sender { 31 | [self.navigationController pushViewController:[MusterController new] animated:YES]; 32 | 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /ASDKDemo/Controller/MusterController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MusterController.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2018/1/31. 6 | // Copyright © 2018年 Dee. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MusterController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ASDKDemo/Controller/VideoController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/8/14. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface VideoController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/ASButtonNode+DE.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASButtonNode+DE.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/12/25. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ASButtonNode (DE) 12 | 13 | + (ASButtonNode *)createWithImage:(UIImage *)img; 14 | + (ASButtonNode *)createWithText:(NSString *)text Font:(UIFont *)font Color:(UIColor *)color; 15 | + (ASButtonNode *)createWithText:(NSString *)text Font:(UIFont *)font Color:(UIColor *)color Image:(UIImage *)img Spacing:(CGFloat)spacing; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/ASButtonNode+DE.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASButtonNode+DE.m 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/12/25. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import "ASButtonNode+DE.h" 10 | 11 | @implementation ASButtonNode (DE) 12 | 13 | + (ASButtonNode *)createWithImage:(UIImage *)img{ 14 | return [self createWithText:nil Font:nil Color:nil Image:img Spacing:0]; 15 | 16 | } 17 | 18 | + (ASButtonNode *)createWithText:(NSString *)text Font:(UIFont *)font Color:(UIColor *)color{ 19 | return [self createWithText:text Font:font Color:color Image:nil Spacing:0]; 20 | 21 | } 22 | 23 | + (ASButtonNode *)createWithText:(NSString *)text Font:(UIFont *)font Color:(UIColor *)color Image:(UIImage *)img Spacing:(CGFloat)spacing{ 24 | 25 | ASButtonNode *buttonNode = [[ASButtonNode alloc]init]; 26 | 27 | if (text.length) { 28 | [buttonNode setTitle:text withFont:font withColor:color forState:UIControlStateNormal]; 29 | 30 | } 31 | 32 | if (img) { 33 | [buttonNode setImage:img forState:UIControlStateNormal]; 34 | [buttonNode setContentSpacing:spacing]; 35 | 36 | } 37 | return buttonNode; 38 | 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/ASCategory.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASCategory.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/12/25. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #ifndef ASCategory_h 10 | #define ASCategory_h 11 | 12 | #import "ASTextNode+DE.h" 13 | #import "ASNetworkImageNode+DE.h" 14 | #import "NSAttributedString+DE.h" 15 | #import "ASButtonNode+DE.h" 16 | #import "UIImage+DE.h" 17 | #import "ASTableNode+DE.h" 18 | 19 | #endif /* ASCategory_h */ 20 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/ASNetworkImageNode+DE.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASNetworkImageNode+DE.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/12/25. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ASNetworkImageNode (DE) 12 | 13 | + (ASNetworkImageNode *)createWithURLStr:(NSString *)urlStr; 14 | 15 | /** 16 | 增加圆角 8 和遮罩 mask_smallscreen 17 | 18 | @return asimagenode_modification_block_t 19 | */ 20 | - (asimagenode_modification_block_t )imageMaskScreenBlock; 21 | 22 | /** 23 | 图片下载后自定义处理 24 | 25 | @param corner 圆角 26 | @return asimagenode_modification_block_t 27 | */ 28 | - (asimagenode_modification_block_t )imageModBlockWithCorner:(CGFloat )corner; 29 | 30 | /** 31 | 图片下载后自定义处理 32 | 33 | @param corner 圆角 34 | @param maskImage 遮罩图 35 | @return asimagenode_modification_block_t 36 | */ 37 | - (asimagenode_modification_block_t )imageModBlockWithCorner:(CGFloat )corner MaskImage:(UIImage *)maskImage; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/ASTableNode+DE.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTableNode+DE.h 3 | // LiveShow 4 | // 5 | // Created by Dee on 2018/1/9. 6 | // Copyright © 2018年 NiceFilm. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ASTableNode (DE) 12 | 13 | 14 | /** 15 | 插入 Row 16 | 17 | @param start 开始位置 18 | @param count 新数量 19 | */ 20 | - (void)insertRowWithStart:(NSInteger)start NewCount:(NSInteger)count; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/ASTableNode+DE.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASTableNode+DE.m 3 | // LiveShow 4 | // 5 | // Created by Dee on 2018/1/9. 6 | // Copyright © 2018年 NiceFilm. All rights reserved. 7 | // 8 | 9 | #import "ASTableNode+DE.h" 10 | 11 | @implementation ASTableNode (DE) 12 | 13 | /// 插入 Row 14 | - (void)insertRowWithStart:(NSInteger)start NewCount:(NSInteger)count{ 15 | NSInteger section = 0; 16 | NSMutableArray *indexPaths = [NSMutableArray array]; 17 | for (NSUInteger row = start; row < count; row++) { 18 | NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:section]; 19 | [indexPaths addObject:path]; 20 | 21 | } 22 | [self insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]; 23 | 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/ASTextNode+DE.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTextNode+DE.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/12/25. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ASTextNode (DE) 12 | 13 | + (ASTextNode *)createWithAttr:(NSAttributedString *)attr; 14 | + (ASTextNode *)createWithAttr:(NSAttributedString *)attr LineCount:(NSInteger)lineCount; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/ASTextNode+DE.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASTextNode+DE.m 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/12/25. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import "ASTextNode+DE.h" 10 | 11 | @implementation ASTextNode (DE) 12 | 13 | + (ASTextNode *)createWithAttr:(NSAttributedString *)attr{ 14 | return [self createWithAttr:attr LineCount:0]; 15 | 16 | } 17 | 18 | + (ASTextNode *)createWithAttr:(NSAttributedString *)attr LineCount:(NSInteger)lineCount{ 19 | ASTextNode *textNode = [ASTextNode new]; 20 | textNode.attributedText = attr; 21 | textNode.placeholderEnabled = YES; 22 | textNode.placeholderFadeDuration = 0.2; 23 | textNode.placeholderColor = [UIColor colorWithWhite:0.777 alpha:1.0]; 24 | textNode.maximumNumberOfLines = lineCount; 25 | textNode.truncationMode = NSLineBreakByTruncatingTail; 26 | return textNode; 27 | 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/NSAttributedString+DE.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSAttributedString+DE.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/12/25. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface NSAttributedString (DE) 13 | 14 | + (NSAttributedString *)getAttributedWithText:(NSString *)text Font:(UIFont *)font TextColor:(UIColor *)textColor Alignmant:(NSTextAlignment)alignment; 15 | + (NSAttributedString *)createWithText:(NSString *)text Font:(UIFont *)font Color:(UIColor *)color; 16 | + (NSAttributedString *)createWithText:(NSString *)text Font:(UIFont *)font Color:(UIColor *)color Alignmant:(NSTextAlignment)alignment; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/NSString+DE.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+DE.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/12/25. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (DE) 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/NSString+DE.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+DE.m 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/12/25. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import "NSString+DE.h" 10 | 11 | @implementation NSString (DE) 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/UIImage+DE.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+DE.h 3 | // LiveShow 4 | // 5 | // Created by Dee on 2018/1/2. 6 | // Copyright © 2018年 NiceFilm. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (DE) 12 | 13 | /** 14 | 图片裁剪圆角 15 | 16 | @param radius 圆角 17 | @param size 图片大小, 未计算 ScreenScale 18 | @return UIImage 19 | */ 20 | - (UIImage *)makeCornerRadius:(CGFloat)radius Size:(CGSize)size; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/ASCategory/UIImage+DE.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+DE.m 3 | // LiveShow 4 | // 5 | // Created by Dee on 2018/1/2. 6 | // Copyright © 2018年 NiceFilm. All rights reserved. 7 | // 8 | 9 | #import "UIImage+DE.h" 10 | 11 | @implementation UIImage (DE) 12 | 13 | - (UIImage *)makeCornerRadius:(CGFloat)radius Size:(CGSize)size{ 14 | UIGraphicsBeginImageContext(size); 15 | UIBezierPath *path = [UIBezierPath 16 | bezierPathWithRoundedRect:CGRectMake(0, 0, size.width, size.height) 17 | cornerRadius:radius * [UIScreen mainScreen].scale]; 18 | [path addClip]; 19 | [self drawInRect:CGRectMake(0, 0, size.width, size.height)]; 20 | UIImage *refinedImg = UIGraphicsGetImageFromCurrentImageContext(); 21 | UIGraphicsEndImageContext(); 22 | return refinedImg; 23 | 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSDate/NSData+Base64.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Base64.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/22. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (Base64) 12 | 13 | + (NSData *)dataWithBase64EncodedString:(NSString *)string; 14 | - (NSString *)base64EncodedStringWithWrapWidth:(NSUInteger)wrapWidth; 15 | - (NSString *)base64EncodedString; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSDate/NSData+Encrypt.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Encrypt.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/22. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (Encrypt) 12 | 13 | /** 14 | * 利用AES加密数据 15 | * 16 | * @param key key 17 | * @param iv iv description 18 | * 19 | * @return data 20 | */ 21 | - (NSData *)encryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv; 22 | /** 23 | * @brief 利用AES解密据 24 | * 25 | * @param key key 26 | * @param iv iv 27 | * 28 | * @return 解密后数据 29 | */ 30 | - (NSData *)decryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSDate/NSDate+Compare.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+TY_Compare.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/9. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDate (TY_Compare) 12 | 13 | 14 | /** 15 | * 计算指定时间与当前的时间差 16 | * 17 | * @param compareDate 某一指定时间 18 | * 19 | * @return 多少(秒or分or天or月or年)+前(比如,3天前、10分钟前) 20 | */ 21 | +(NSString *) compareCurrentTime:(NSDate*) compareDate; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSDate/NSDate+Compare.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+TY_Compare.m 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/9. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "NSDate+Compare.h" 10 | 11 | @implementation NSDate (TY_Compare) 12 | 13 | +(NSString *) compareCurrentTime:(NSDate*) compareDate 14 | { 15 | NSTimeInterval timeInterval = [compareDate timeIntervalSinceNow]; 16 | timeInterval = -timeInterval; 17 | int temp = 0; 18 | NSString *result; 19 | if (timeInterval < 60) { 20 | result = [NSString stringWithFormat:@"刚刚"]; 21 | } 22 | else if((temp = timeInterval/60) <60){ 23 | result = [NSString stringWithFormat:@"%d分钟前",temp]; 24 | } 25 | 26 | else if((temp = temp/60) <24){ 27 | result = [NSString stringWithFormat:@"%d小时前",temp]; 28 | } 29 | 30 | else if((temp = temp/24) <30){ 31 | result = [NSString stringWithFormat:@"%d天前",temp]; 32 | } 33 | 34 | else if((temp = temp/30) <12){ 35 | result = [NSString stringWithFormat:@"%d月前",temp]; 36 | } 37 | else{ 38 | temp = temp/12; 39 | result = [NSString stringWithFormat:@"%d年前",temp]; 40 | } 41 | 42 | return result; 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSString/NSString+Base64.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Base64.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/22. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (Base64) 12 | 13 | + (NSString *)stringWithBase64EncodedString:(NSString *)string; 14 | - (NSString *)base64EncodedStringWithWrapWidth:(NSUInteger)wrapWidth; 15 | - (NSString *)base64EncodedString; 16 | - (NSString *)base64DecodedString; 17 | - (NSData *)base64DecodedData; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSString/NSString+Base64.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Base64.m 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/22. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "NSString+Base64.h" 10 | #import "NSData+Base64.h" 11 | 12 | @implementation NSString (Base64) 13 | 14 | + (NSString *)stringWithBase64EncodedString:(NSString *)string 15 | { 16 | NSData *data = [NSData dataWithBase64EncodedString:string]; 17 | if (data) 18 | { 19 | return [[self alloc] initWithData:data encoding:NSUTF8StringEncoding]; 20 | } 21 | return nil; 22 | } 23 | 24 | - (NSString *)base64EncodedStringWithWrapWidth:(NSUInteger)wrapWidth 25 | { 26 | NSData *data = [self dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; 27 | return [data base64EncodedStringWithWrapWidth:wrapWidth]; 28 | } 29 | 30 | - (NSString *)base64EncodedString 31 | { 32 | NSData *data = [self dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; 33 | return [data base64EncodedString]; 34 | } 35 | 36 | - (NSString *)base64DecodedString 37 | { 38 | return [NSString stringWithBase64EncodedString:self]; 39 | } 40 | 41 | - (NSData *)base64DecodedData 42 | { 43 | return [NSData dataWithBase64EncodedString:self]; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSString/NSString+Encrypt.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Encrypt.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/22. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (Encrypt) 12 | 13 | - (NSString*)encryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv; 14 | - (NSString*)decryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSString/NSString+Encrypt.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Encrypt.m 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/22. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "NSString+Encrypt.h" 10 | #import "NSData+Encrypt.h" 11 | #import "NSData+Base64.h" 12 | 13 | @implementation NSString (Encrypt) 14 | 15 | -(NSString*)encryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv { 16 | NSData *encrypted = [[self dataUsingEncoding:NSUTF8StringEncoding] encryptedWithAESUsingKey:key andIV:iv]; 17 | NSString *encryptedString = [encrypted base64EncodedString]; 18 | 19 | return encryptedString; 20 | } 21 | 22 | - (NSString*)decryptedWithAESUsingKey:(NSString*)key andIV:(NSData*)iv { 23 | NSData *decrypted = [[NSData dataWithBase64EncodedString:self] decryptedWithAESUsingKey:key andIV:iv]; 24 | NSString *decryptedString = [[NSString alloc] initWithData:decrypted encoding:NSUTF8StringEncoding]; 25 | 26 | return decryptedString; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSString/NSString+MD5.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+TY_MD5.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/23. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (TY_MD5) 12 | 13 | + (NSString *)md5:(NSString *)str; 14 | 15 | - (NSString *)md5String; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSString/NSString+MD5.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+TY_MD5.m 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/23. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "NSString+MD5.h" 10 | #import 11 | 12 | @implementation NSString (TY_MD5) 13 | 14 | + (NSString *)md5:(NSString *)str 15 | { 16 | const char *cStr = [str UTF8String]; 17 | if (cStr == NULL) { 18 | cStr = ""; 19 | } 20 | unsigned char result[CC_MD5_DIGEST_LENGTH]; 21 | CC_MD5( cStr, (CC_LONG)strlen(cStr), result ); 22 | return [NSString stringWithFormat: 23 | @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", 24 | result[0], result[1], result[2], result[3], 25 | result[4], result[5], result[6], result[7], 26 | result[8], result[9], result[10], result[11], 27 | result[12], result[13], result[14], result[15] 28 | ]; 29 | } 30 | 31 | - (NSString *)md5String 32 | { 33 | return [[self class] md5:self]; 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSString/NSString+Pinyin.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Pinyin.h 3 | // Snowball 4 | // 5 | // Created by croath on 11/11/13. 6 | // Copyright (c) 2013 Snowball. All rights reserved. 7 | // 8 | // https://github.com/croath/NSString-Pinyin 9 | // the Chinese Pinyin string of the nsstring 10 | 11 | #import 12 | 13 | @interface NSString (Pinyin) 14 | 15 | - (NSString*)pinyinWithPhoneticSymbol; 16 | - (NSString*)pinyin; 17 | - (NSArray*)pinyinArray; 18 | - (NSString*)pinyinWithoutBlank; 19 | - (NSArray*)pinyinInitialsArray; 20 | - (NSString*)pinyinInitialsString; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSString/NSString+Size.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+TY_Size.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/8. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (TY_Size) 12 | 13 | /** 14 | * 计算文本大小 15 | * 16 | * @param font 字体 17 | * @param size 约束大小 18 | */ 19 | - (CGSize)boundingSizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSString/NSString+Size.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+TY_Size.m 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/8. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "NSString+Size.h" 10 | 11 | @implementation NSString (TY_Size) 12 | 13 | - (CGSize)boundingSizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size 14 | { 15 | CGSize textSize = CGSizeZero; 16 | 17 | #if (__IPHONE_OS_VERSION_MIN_REQUIRED && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0) 18 | 19 | if (![self respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) { 20 | // below ios7 21 | textSize = [self sizeWithFont:font 22 | constrainedToSize:size 23 | lineBreakMode:NSLineBreakByWordWrapping]; 24 | } 25 | else 26 | 27 | #endif 28 | 29 | { 30 | //iOS 7 31 | CGRect frame = [self boundingRectWithSize:size options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{ NSFontAttributeName:font } context:nil]; 32 | textSize = CGSizeMake(frame.size.width, frame.size.height + 1); 33 | } 34 | 35 | return textSize; 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSURL/NSDictionary+Params.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Base64.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/22. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (ty_Parameters) 12 | 13 | - (NSString*)parametersString; 14 | - (NSString*)orderedParametersString; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSURL/NSDictionary+Params.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Base64.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/22. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "NSDictionary+Params.h" 10 | 11 | @implementation NSDictionary (ty_Parameters) 12 | 13 | - (NSString*)buildParametersString:(BOOL)ordered { 14 | NSMutableArray* pairs = [NSMutableArray array]; 15 | 16 | NSArray* keys = [self allKeys]; 17 | if (ordered) { 18 | keys = [keys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 19 | } 20 | for (NSString* key in keys) { 21 | if(![[self objectForKey:key] isKindOfClass:[NSString class]]) { 22 | continue; 23 | } 24 | 25 | CFStringRef rv = CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge CFStringRef) [self objectForKey:key], NULL, CFSTR("=,!$&'()*+;@?\n\"<>#\t :/"), kCFStringEncodingUTF8); 26 | NSString *copyed = [NSString stringWithString:(__bridge NSString *)rv]; 27 | CFRelease(rv); 28 | [pairs addObject:[NSString stringWithFormat:@"%@=%@", key, copyed]]; 29 | } 30 | return [pairs componentsJoinedByString:@"&"]; 31 | } 32 | 33 | - (NSString*)orderedParametersString { 34 | return [self buildParametersString:YES]; 35 | } 36 | 37 | - (NSString*)parametersString { 38 | return [self buildParametersString:NO]; 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/NSURL/NSURL+Parameters.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+Base64.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/22. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSURL (ty_Parameters) 12 | 13 | @property (nonatomic, strong) NSDictionary *parameters; 14 | 15 | - (NSURL*)URLByAppendingParametersString:(NSString*)parametersString; 16 | - (NSURL*)URLByAppendingParameters:(NSDictionary*)parameters; 17 | 18 | 19 | - (NSString *)parameterForKey:(NSString *)key; 20 | - (id)objectForKeyedSubscript:(id)key NS_AVAILABLE(10_8, 6_0); 21 | @end 22 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIBarButtonItem/UIBarButtonItem+Item.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBarButtonItem+TY_Item.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/9. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBarButtonItem (TY_Item) 12 | 13 | + (UIBarButtonItem *)itemWithImageName:(NSString *)imageName target:(id)target action:(SEL)action; 14 | 15 | + (UIBarButtonItem *)itemWithImageName:(NSString *)imageName highlightImageName:(NSString *)highlightImageName target:(id)target action:(SEL)action; 16 | 17 | + (UIBarButtonItem *)itemWithImageName:(NSString *)imageName highlightImageName:(NSString *)highlightImageName selectedImageName:(NSString *)selectedImageName target:(id)target action:(SEL)action; 18 | 19 | + (NSArray *)itemWithImageName:(NSString *)imageName offsetX:(CGFloat)offsetX target:(id)target action:(SEL)action; 20 | 21 | + (NSArray *)itemWithImageName:(NSString *)imageName highlightImageName:(NSString *)highlightImageName offsetX:(CGFloat)offsetX target:(id)target action:(SEL)action; 22 | 23 | + (NSArray *)itemWithImageName:(NSString *)imageName highlightImageName:(NSString *)highlightImageName selectedImageName:(NSString *)selectedImageName offsetX:(CGFloat)offsetX target:(id)target action:(SEL)action; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIColor/UIColor+Hex.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+Hex.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/23. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIColor (Hex) 12 | 13 | + (UIColor *)colorWithHex:(NSUInteger)hexColor; 14 | 15 | + (UIColor *)colorWithHex:(NSUInteger)hexColor alpha:(CGFloat)alpha; 16 | 17 | + (UIColor *)colorWithHexString:(NSString *)color; 18 | 19 | + (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIImage/UIImage+Clip.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+TY_Clip.h 3 | // ITHome 4 | // 5 | // Created by tanyang on 15/12/7. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (TY_Clip) 12 | 13 | /** 14 | * 生成相应圆角image 15 | * 16 | * @param radius 圆角度 17 | */ 18 | - (UIImage *)imageWithCornerRadius:(CGFloat)radius; 19 | 20 | /** 21 | * 根据遮罩图生成相应image 22 | * 23 | * @param maskImage 遮罩图 24 | */ 25 | - (UIImage *)imageWithMask:(UIImage *)maskImage; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIImage/UIImage+Color.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+TY_Color.h 3 | // ITHome 4 | // 5 | // Created by tanyang on 15/12/7. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (TY_Color) 12 | 13 | /** 14 | * 用color生成image 15 | * 16 | * @param color 颜色 17 | */ 18 | + (UIImage *)imageWithColor:(UIColor *)color; 19 | 20 | + (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size; 21 | /** 22 | * 改变image透明度 23 | * 24 | * @param alpha 透明度 25 | */ 26 | - (UIImage *)imageWithAlpha:(CGFloat)alpha; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIImage/UIImage+Color.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+TY_Color.m 3 | // ITHome 4 | // 5 | // Created by tanyang on 15/12/7. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "UIImage+Color.h" 10 | 11 | @implementation UIImage (TY_Color) 12 | 13 | // 用color生成image 14 | + (UIImage *)imageWithColor:(UIColor *)color { 15 | return [self imageWithColor:color size:CGSizeMake(1.0, 1.0)]; 16 | } 17 | 18 | + (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size 19 | { 20 | CGRect rect = (CGRect){CGPointZero,size}; 21 | UIGraphicsBeginImageContext(rect.size); 22 | CGContextRef context = UIGraphicsGetCurrentContext(); 23 | 24 | CGContextSetFillColorWithColor(context, [color CGColor]); 25 | CGContextFillRect(context, rect); 26 | 27 | UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 28 | UIGraphicsEndImageContext(); 29 | 30 | return image; 31 | } 32 | 33 | - (UIImage *)imageWithAlpha:(CGFloat)alpha 34 | { 35 | //create drawing context 36 | UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0f); 37 | 38 | //draw with alpha 39 | [self drawAtPoint:CGPointZero blendMode:kCGBlendModeNormal alpha:alpha]; 40 | 41 | //capture resultant image 42 | UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 43 | UIGraphicsEndImageContext(); 44 | 45 | //return image 46 | return image; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIImage/UIImage+Size.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+TY_Size.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/9. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (TY_Size) 12 | 13 | /** 14 | * 生成按0.5,0.5位置拉伸image 15 | * 16 | * @param name 图片名 17 | * 18 | * @return 支持拉伸后的image 19 | */ 20 | + (UIImage *)resizedImageWithName:(NSString *)name; 21 | 22 | /** 23 | * 生成按left,top位置拉伸image 24 | * 25 | * @param name 图片名 26 | * @param left 左边比例 27 | * @param top 上边比例 28 | * 29 | * @return 支持拉伸后的image 30 | */ 31 | + (UIImage *)resizedImageWithName:(NSString *)name left:(CGFloat)left top:(CGFloat)top; 32 | 33 | - (UIImage *)imageCroppedToRect:(CGRect)rect; 34 | 35 | - (UIImage *)imageScaledToSize:(CGSize)size; 36 | 37 | - (UIImage *)imageScaledToFitSize:(CGSize)size; 38 | 39 | - (UIImage *)imageScaledToFillSize:(CGSize)size; 40 | 41 | - (UIImage *)imageCroppedAndScaledToSize:(CGSize)size 42 | contentMode:(UIViewContentMode)contentMode 43 | padToFit:(BOOL)padToFit; 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIImage/UIImage+Snap.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+TY_Snap.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/8. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (TY_Snap) 12 | 13 | /** 14 | * view截屏(快照) 15 | * 16 | * @param view 截屏的view 17 | */ 18 | + (UIImage *)snapshotWithView:(UIView *)view; 19 | 20 | /** 21 | * view截屏(快照) 22 | * 23 | * @param view 截屏的view 24 | * @param snapSize 截屏大小 25 | */ 26 | + (UIImage *)snapshotWithView:(UIView *)view size:(CGSize)snapSize; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIImage/UIImage+Snap.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+TY_Snap.m 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/8. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "UIImage+Snap.h" 10 | 11 | @implementation UIImage (TY_Snap) 12 | 13 | + (UIImage *)snapshotWithView:(UIView *)view 14 | { 15 | return [self snapshotWithView:view size:view.bounds.size]; 16 | } 17 | 18 | + (UIImage *)snapshotWithView:(UIView *)view size:(CGSize)snapSize 19 | { 20 | UIGraphicsBeginImageContextWithOptions(snapSize, NO, 0); 21 | [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]; 22 | UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 23 | UIGraphicsEndImageContext(); 24 | 25 | return image; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIImage/UIImage+TYLaunchImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+TYLaunchImage.h 3 | // TYLaunchAnimationDemo 4 | // 5 | // Created by tanyang on 15/12/3. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (TYLaunchImage) 12 | 13 | + (NSString *)ty_getLaunchImageName; 14 | 15 | + (UIImage *)ty_getLaunchImage; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIImage/UIImage+TYLaunchImage.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+TYLaunchImage.m 3 | // TYLaunchAnimationDemo 4 | // 5 | // Created by tanyang on 15/12/3. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "UIImage+TYLaunchImage.h" 10 | 11 | //current window 12 | #define tyCurrentWindow [[UIApplication sharedApplication].windows firstObject] 13 | 14 | @implementation UIImage (TYLaunchImage) 15 | 16 | // 引用自stackflow 17 | + (NSString *)ty_getLaunchImageName 18 | { 19 | NSString *viewOrientation = @"Portrait"; 20 | if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) { 21 | viewOrientation = @"Landscape"; 22 | } 23 | NSString *launchImageName = nil; 24 | NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"]; 25 | CGSize viewSize = tyCurrentWindow.bounds.size; 26 | for (NSDictionary* dict in imagesDict) 27 | { 28 | CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]); 29 | 30 | if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]]) 31 | { 32 | launchImageName = dict[@"UILaunchImageName"]; 33 | } 34 | } 35 | return launchImageName; 36 | } 37 | 38 | + (UIImage *)ty_getLaunchImage 39 | { 40 | return [UIImage imageNamed:[self ty_getLaunchImageName]]; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UITabBarController/UITabBarController+AddChildVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITabBarController+TY_AddChildVC.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/7. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITabBarController (TY_AddChildVC) 12 | 13 | /** 14 | * 添加一个子控制器 15 | * 16 | * @param childVc 子控制器 17 | * @param title 标题 18 | * @param image 图片 19 | * @param selectedImage 选中的图片 20 | * @param imageInsets 图片位移 21 | * @param titlePosition 标题位移 22 | * @param navControllerClass 包装子控制器的导航控制器 23 | */ 24 | - (void)addChildViewController:(UIViewController *)childVc title:(NSString *)title image:(NSString *)image selectedImage:(NSString *)selectedImage imageInsets:(UIEdgeInsets)imageInsets titlePosition:(UIOffset)titlePosition navControllerClass:(Class)navControllerClass; 25 | 26 | /** 27 | * 设置自控制器 28 | * 29 | * @param childVc 子控制器 30 | * @param title 标题 31 | * @param image 图片 32 | * @param selectedImage 选中的图片 33 | * @param imageInsets 图片位移 34 | * @param titlePosition 标题位移 35 | */ 36 | - (void)configureChildViewController:(UIViewController *)childVc title:(NSString *)title image:(NSString *)image selectedImage:(NSString *)selectedImage imageInsets:(UIEdgeInsets)imageInsets titlePosition:(UIOffset)titlePosition; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIView/UIView+Frame.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+TY_Frame.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/15. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (TY_Frame) 12 | 13 | @property(nonatomic, assign) CGPoint origin;// 原点 14 | 15 | @property(nonatomic, assign) CGFloat left;//左 16 | @property(nonatomic, assign) CGFloat top;//上 17 | 18 | @property(nonatomic, assign) CGFloat right;//右 19 | @property(nonatomic, assign) CGFloat bottom;//下 20 | 21 | @property(nonatomic, assign) CGFloat width;//宽度 22 | @property(nonatomic, assign) CGFloat height;//高度 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIView/UIView+Nib.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+TY_Nib.h 3 | // ITHome 4 | // 5 | // Created by tanyang on 15/12/7. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (TY_Nib) 12 | 13 | /** 14 | * 加载nib 15 | */ 16 | + (UINib *)loadNib; 17 | 18 | /** 19 | * 加载nib 20 | * 21 | * @param nibName nib名字 22 | */ 23 | + (UINib *)loadNibNamed:(NSString*)nibName; 24 | 25 | /** 26 | * 加载nib 27 | * 28 | * @param nibName nib名字 29 | * @param bundle nib文件包(目录) 30 | */ 31 | + (UINib *)loadNibNamed:(NSString*)nibName bundle:(NSBundle *)bundle; 32 | 33 | 34 | /** 35 | * 加载nib生成view 36 | */ 37 | + (instancetype)loadInstanceFromNib; 38 | 39 | /** 40 | * 加载nib生成view 41 | * 42 | * @param nibName nib名字 43 | */ 44 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName; 45 | 46 | /** 47 | * 加载nib生成view 48 | * 49 | * @param nibName nib名字 50 | * @param owner nib文件的File's Owner 51 | */ 52 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName owner:(id)owner; 53 | 54 | /** 55 | * 加载nib生成view 56 | * 57 | * @param nibName nib名字 58 | * @param owner nib文件的File's Owner 59 | * @param bundle nib文件包(目录) 60 | */ 61 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName owner:(id)owner bundle:(NSBundle *)bundle; 62 | 63 | @end 64 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIView/UIView+Nib.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+TY_Nib.m 3 | // ITHome 4 | // 5 | // Created by tanyang on 15/12/7. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "UIView+Nib.h" 10 | 11 | @implementation UIView (TY_Nib) 12 | 13 | + (UINib *)loadNib 14 | { 15 | return [self loadNibNamed:NSStringFromClass([self class])]; 16 | } 17 | 18 | + (UINib *)loadNibNamed:(NSString*)nibName 19 | { 20 | return [self loadNibNamed:nibName bundle:[NSBundle mainBundle]]; 21 | } 22 | 23 | + (UINib *)loadNibNamed:(NSString*)nibName bundle:(NSBundle *)bundle 24 | { 25 | return [UINib nibWithNibName:nibName bundle:bundle]; 26 | } 27 | 28 | 29 | 30 | + (instancetype)loadInstanceFromNib 31 | { 32 | return [self loadInstanceFromNibWithName:NSStringFromClass([self class])]; 33 | } 34 | 35 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName 36 | { 37 | return [self loadInstanceFromNibWithName:nibName owner:nil]; 38 | } 39 | 40 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName owner:(id)owner 41 | { 42 | return [self loadInstanceFromNibWithName:nibName owner:owner bundle:[NSBundle mainBundle]]; 43 | } 44 | 45 | + (instancetype)loadInstanceFromNibWithName:(NSString *)nibName owner:(id)owner bundle:(NSBundle *)bundle 46 | { 47 | UIView *result = nil; 48 | NSArray* elements = [bundle loadNibNamed:nibName owner:owner options:nil]; 49 | for (id object in elements) 50 | { 51 | if ([object isKindOfClass:[self class]]) 52 | { 53 | result = object; 54 | break; 55 | } 56 | } 57 | return result; 58 | } 59 | 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIView/UIView+ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+ViewController.h 3 | // LovePlayNews 4 | // 5 | // Created by tanyang on 16/8/20. 6 | // Copyright © 2016年 tany. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (ty_ViewController) 12 | 13 | - (UIViewController *)viewController; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Category/UIView/UIView+ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+ViewController.m 3 | // LovePlayNews 4 | // 5 | // Created by tanyang on 16/8/20. 6 | // Copyright © 2016年 tany. All rights reserved. 7 | // 8 | 9 | #import "UIView+ViewController.h" 10 | 11 | @implementation UIView (ty_ViewController) 12 | 13 | - (UIViewController *)viewController 14 | { 15 | for (UIView* next = [self superview]; next; next = 16 | next.superview) { 17 | UIResponder* nextResponder = [next nextResponder]; 18 | if ([nextResponder isKindOfClass:[UIViewController 19 | class]]) { 20 | return (UIViewController*)nextResponder; 21 | } 22 | } 23 | return nil; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /ASDKDemo/Foundation/Header/Function_Basic.h: -------------------------------------------------------------------------------- 1 | // 2 | // Function_Basic.h 3 | // TYFoundationDemo 4 | // 5 | // Created by tanyang on 15/12/23. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #ifndef Function_Basic_h 10 | #define Function_Basic_h 11 | 12 | #ifdef __OBJC__ 13 | #import 14 | 15 | #endif 16 | 17 | //系统版本 18 | NS_INLINE float device_version() 19 | { 20 | return [[[UIDevice currentDevice] systemVersion] floatValue]; 21 | } 22 | 23 | // 延迟执行 24 | NS_INLINE void dispatch_delay_async(NSTimeInterval delay, dispatch_block_t block) 25 | { 26 | dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)); 27 | dispatch_after(popTime, dispatch_get_main_queue(),block); 28 | } 29 | 30 | // 主线程执行 31 | NS_INLINE void dispatch_main_async(dispatch_block_t block) { 32 | if ([NSThread isMainThread]) { 33 | block(); 34 | } else { 35 | dispatch_async(dispatch_get_main_queue(), block); 36 | } 37 | } 38 | 39 | #endif /* Function_Basic_h */ 40 | -------------------------------------------------------------------------------- /ASDKDemo/Model/VideoModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // VideoModel.m 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/12/4. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import "VideoModel.h" 10 | 11 | @implementation User_info 12 | 13 | @end 14 | @implementation Publish_files 15 | 16 | @end 17 | @implementation VideoModel 18 | 19 | @end 20 | 21 | -------------------------------------------------------------------------------- /ASDKDemo/View/Muster/CellNode/MusterCellNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NFHomeFilmsCellNode.h 3 | // LiveShow 4 | // 5 | // Created by Dee on 2018/1/2. 6 | // Copyright © 2018年 NiceFilm. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MusterCellNode : ASCellNode 12 | 13 | - (instancetype)initWithCount:(NSInteger)count; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ASDKDemo/View/Muster/MusterOneNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // MusterOneNode.h 3 | // LiveShow 4 | // 5 | // Created by Dee on 2018/1/2. 6 | // Copyright © 2018年 NiceFilm. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MusterOneNode : ASDisplayNode 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ASDKDemo/View/Muster/MusterTopNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // MusterTopNode.h 3 | // LiveShow 4 | // 5 | // Created by Dee on 2018/1/2. 6 | // Copyright © 2018年 NiceFilm. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MusterTopNode : ASDisplayNode 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ASDKDemo/View/Muster/MusterTwoNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // MusterTwoNode.h 3 | // LiveShow 4 | // 5 | // Created by Dee on 2018/1/2. 6 | // Copyright © 2018年 NiceFilm. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MusterTwoNode : ASDisplayNode 12 | 13 | - (instancetype)initWithCount:(NSInteger)count; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ASDKDemo/View/Video/UserNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // userNode.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/12/25. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "VideoModel.h" 11 | #import "UIColor+Hex.h" 12 | 13 | @interface UserNode : ASDisplayNode 14 | 15 | - (instancetype)initWithModel:(User_info *)model; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /ASDKDemo/View/Video/VideoCellNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // VideoCellNode.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/8/17. 6 | // Copyright © 2017年 Dee. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "VideoModel.h" 11 | #import "Factories.h" 12 | #import "UIImage+Color.h" 13 | 14 | @interface VideoCellNode : ASCellNode 15 | 16 | -(instancetype)initWithModel:(VideoModel *)video; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /ASDKDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/8/14. 6 | // Copyright © 2017年 Dee. 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 | -------------------------------------------------------------------------------- /AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2017/8/14. 6 | // Copyright © 2017年 Dee. 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 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | platform :ios, '9.0' 3 | 4 | target 'ASDKDemo' do 5 | inhibit_all_warnings! 6 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks 7 | use_frameworks! 8 | pod 'Texture' 9 | pod 'YYModel' 10 | # pod 'JPFPSStatus' 11 | # pod 'QMUIKit/UIKitExtensions' 12 | # pod 'AFNetworking' 13 | 14 | end 15 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - PINCache (3.0.1-beta.6): 3 | - PINCache/Arc-exception-safe (= 3.0.1-beta.6) 4 | - PINCache/Core (= 3.0.1-beta.6) 5 | - PINCache/Arc-exception-safe (3.0.1-beta.6): 6 | - PINCache/Core 7 | - PINCache/Core (3.0.1-beta.6): 8 | - PINOperation (~> 1.1.0) 9 | - PINOperation (1.1) 10 | - PINRemoteImage/Core (3.0.0-beta.13): 11 | - PINOperation 12 | - PINRemoteImage/iOS (3.0.0-beta.13): 13 | - PINRemoteImage/Core 14 | - PINRemoteImage/PINCache (3.0.0-beta.13): 15 | - PINCache (= 3.0.1-beta.6) 16 | - PINRemoteImage/Core 17 | - Texture (2.6): 18 | - Texture/PINRemoteImage (= 2.6) 19 | - Texture/Core (2.6) 20 | - Texture/PINRemoteImage (2.6): 21 | - PINRemoteImage/iOS (= 3.0.0-beta.13) 22 | - PINRemoteImage/PINCache 23 | - Texture/Core 24 | - YYModel (1.0.4) 25 | 26 | DEPENDENCIES: 27 | - Texture 28 | - YYModel 29 | 30 | SPEC CHECKSUMS: 31 | PINCache: d195fdba255283f7e9900a55e3cced377f431f9b 32 | PINOperation: 7f042fa6df5b606deb4bd5997654cf7033d5be1d 33 | PINRemoteImage: d6d51c5d2adda55f1ce30c96e850b6c4ebd2856a 34 | Texture: 7249074582daf75e524e59df5428b66b8e8db0e4 35 | YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30 36 | 37 | PODFILE CHECKSUM: 318c95f777a045ee2186a220f94361faf4fec65f 38 | 39 | COCOAPODS: 1.3.1 40 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - PINCache (3.0.1-beta.6): 3 | - PINCache/Arc-exception-safe (= 3.0.1-beta.6) 4 | - PINCache/Core (= 3.0.1-beta.6) 5 | - PINCache/Arc-exception-safe (3.0.1-beta.6): 6 | - PINCache/Core 7 | - PINCache/Core (3.0.1-beta.6): 8 | - PINOperation (~> 1.1.0) 9 | - PINOperation (1.1) 10 | - PINRemoteImage/Core (3.0.0-beta.13): 11 | - PINOperation 12 | - PINRemoteImage/iOS (3.0.0-beta.13): 13 | - PINRemoteImage/Core 14 | - PINRemoteImage/PINCache (3.0.0-beta.13): 15 | - PINCache (= 3.0.1-beta.6) 16 | - PINRemoteImage/Core 17 | - Texture (2.6): 18 | - Texture/PINRemoteImage (= 2.6) 19 | - Texture/Core (2.6) 20 | - Texture/PINRemoteImage (2.6): 21 | - PINRemoteImage/iOS (= 3.0.0-beta.13) 22 | - PINRemoteImage/PINCache 23 | - Texture/Core 24 | - YYModel (1.0.4) 25 | 26 | DEPENDENCIES: 27 | - Texture 28 | - YYModel 29 | 30 | SPEC CHECKSUMS: 31 | PINCache: d195fdba255283f7e9900a55e3cced377f431f9b 32 | PINOperation: 7f042fa6df5b606deb4bd5997654cf7033d5be1d 33 | PINRemoteImage: d6d51c5d2adda55f1ce30c96e850b6c4ebd2856a 34 | Texture: 7249074582daf75e524e59df5428b66b8e8db0e4 35 | YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30 36 | 37 | PODFILE CHECKSUM: 318c95f777a045ee2186a220f94361faf4fec65f 38 | 39 | COCOAPODS: 1.3.1 40 | -------------------------------------------------------------------------------- /Pods/PINCache/Source/PINCacheMacros.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINCacheMacros.h 3 | // PINCache 4 | // 5 | // Created by Adlai Holler on 1/31/17. 6 | // Copyright © 2017 Pinterest. All rights reserved. 7 | // 8 | 9 | #ifndef PIN_SUBCLASSING_RESTRICTED 10 | #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted) 11 | #define PIN_SUBCLASSING_RESTRICTED __attribute__((objc_subclassing_restricted)) 12 | #else 13 | #define PIN_SUBCLASSING_RESTRICTED 14 | #endif // #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted) 15 | #endif // #ifndef PIN_SUBCLASSING_RESTRICTED 16 | 17 | #ifndef PIN_NOESCAPE 18 | #if defined(__has_attribute) && __has_attribute(noescape) 19 | #define PIN_NOESCAPE __attribute__((noescape)) 20 | #else 21 | #define PIN_NOESCAPE 22 | #endif // #if defined(__has_attribute) && __has_attribute(noescape) 23 | #endif // #ifndef PIN_NOESCAPE 24 | -------------------------------------------------------------------------------- /Pods/PINCache/Source/PINCacheObjectSubscripting.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINCacheObjectSubscripting.h 3 | // PINCache 4 | // 5 | // Created by Rocir Marcos Leite Santiago on 4/2/16. 6 | // Copyright © 2016 Pinterest. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @protocol PINCacheObjectSubscripting 14 | 15 | @required 16 | 17 | /** 18 | This method enables using literals on the receiving object, such as `id object = cache[@"key"];`. 19 | 20 | @param key The key associated with the object. 21 | @result The object for the specified key. 22 | */ 23 | - (nullable id)objectForKeyedSubscript:(NSString *)key; 24 | 25 | /** 26 | This method enables using literals on the receiving object, such as `cache[@"key"] = object;`. 27 | 28 | @param object An object to be assigned for the key. Pass `nil` to remove the existing object for this key. 29 | @param key A key to associate with the object. This string will be copied. 30 | */ 31 | - (void)setObject:(nullable id)object forKeyedSubscript:(NSString *)key; 32 | 33 | @end 34 | 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /Pods/PINOperation/Source/PINOperation.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINOperation.h 3 | // PINOperation 4 | // 5 | // Created by Adlai Holler on 1/10/17. 6 | // Copyright © 2017 Pinterest. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | #import 13 | -------------------------------------------------------------------------------- /Pods/PINOperation/Source/PINOperationGroup.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINOperationGroup.h 3 | // PINQueue 4 | // 5 | // Created by Garrett Moon on 10/8/16. 6 | // Copyright © 2016 Pinterest. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PINOperationTypes.h" 11 | #import "PINOperationMacros.h" 12 | 13 | @class PINOperationQueue; 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | @protocol PINGroupOperationReference; 18 | 19 | PINOP_SUBCLASSING_RESTRICTED 20 | @interface PINOperationGroup : NSObject 21 | 22 | - (instancetype)init NS_UNAVAILABLE; 23 | + (instancetype)asyncOperationGroupWithQueue:(PINOperationQueue *)operationQueue; 24 | 25 | - (nullable id )addOperation:(dispatch_block_t)operation; 26 | - (nullable id )addOperation:(dispatch_block_t)operation withPriority:(PINOperationQueuePriority)priority; 27 | - (void)start; 28 | - (void)cancel; 29 | - (void)setCompletion:(dispatch_block_t)completion; 30 | - (void)waitUntilComplete; 31 | 32 | @end 33 | 34 | @protocol PINGroupOperationReference 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /Pods/PINOperation/Source/PINOperationMacros.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINOperationMacros.h 3 | // PINOperation 4 | // 5 | // Created by Adlai Holler on 1/10/17. 6 | // Copyright © 2017 Pinterest. All rights reserved. 7 | // 8 | 9 | #ifndef PINOP_SUBCLASSING_RESTRICTED 10 | #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted) 11 | #define PINOP_SUBCLASSING_RESTRICTED __attribute__((objc_subclassing_restricted)) 12 | #else 13 | #define PINOP_SUBCLASSING_RESTRICTED 14 | #endif // #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted) 15 | #endif // #ifndef PINOP_SUBCLASSING_RESTRICTED 16 | -------------------------------------------------------------------------------- /Pods/PINOperation/Source/PINOperationTypes.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINOperationTypes.h 3 | // PINOperation 4 | // 5 | // Created by Adlai Holler on 1/10/17. 6 | // Copyright © 2017 Pinterest. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSUInteger, PINOperationQueuePriority) { 12 | PINOperationQueuePriorityLow, 13 | PINOperationQueuePriorityDefault, 14 | PINOperationQueuePriorityHigh, 15 | }; 16 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/AnimatedImages/PINGIFAnimatedImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINGIFAnimatedImage.h 3 | // PINRemoteImage 4 | // 5 | // Created by Garrett Moon on 9/17/17. 6 | // Copyright © 2017 Pinterest. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "PINAnimatedImage.h" 12 | 13 | @interface PINGIFAnimatedImage : PINAnimatedImage 14 | 15 | - (instancetype)init NS_UNAVAILABLE; 16 | - (instancetype)initWithAnimatedImageData:(NSData *)animatedImageData NS_DESIGNATED_INITIALIZER; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/AnimatedImages/PINWebPAnimatedImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINWebPAnimatedImage.h 3 | // PINRemoteImage 4 | // 5 | // Created by Garrett Moon on 9/14/17. 6 | // Copyright © 2017 Pinterest. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | #import "PINAnimatedImage.h" 13 | 14 | @interface PINWebPAnimatedImage : PINAnimatedImage 15 | 16 | - (instancetype)init NS_UNAVAILABLE; 17 | - (instancetype)initWithAnimatedImageData:(NSData *)animatedImageData NS_DESIGNATED_INITIALIZER; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/Categories/NSData+ImageDetectors.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+ImageDetectors.h 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 11/19/14. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (PINImageDetectors) 12 | 13 | - (BOOL)pin_isGIF; 14 | #if PIN_WEBP 15 | - (BOOL)pin_isWebP; 16 | - (BOOL)pin_isAnimatedWebP; 17 | #endif 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/Categories/NSData+ImageDetectors.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+ImageDetectors.m 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 11/19/14. 6 | // 7 | // 8 | 9 | #import "NSData+ImageDetectors.h" 10 | 11 | #if PIN_WEBP 12 | #import "webp/demux.h" 13 | #endif 14 | 15 | @implementation NSData (PINImageDetectors) 16 | 17 | - (BOOL)pin_isGIF 18 | { 19 | const NSInteger length = 3; 20 | Byte firstBytes[length]; 21 | if ([self length] >= length) { 22 | [self getBytes:&firstBytes length:length]; 23 | //G, I, F 24 | if (firstBytes[0] == 0x47 && firstBytes[1] == 0x49 && firstBytes[2] == 0x46) { 25 | return YES; 26 | } 27 | } 28 | return NO; 29 | } 30 | 31 | #if PIN_WEBP 32 | - (BOOL)pin_isWebP 33 | { 34 | const NSInteger length = 12; 35 | Byte firstBytes[length]; 36 | if ([self length] >= length) { 37 | [self getBytes:&firstBytes length:length]; 38 | //R, I, F, F, -, -, -, -, W, E, B, P 39 | if (firstBytes[0] == 0x52 && firstBytes[1] == 0x49 && firstBytes[2] == 0x46 && firstBytes[3] == 0x46 && firstBytes[8] == 0x57 && firstBytes[9] == 0x45 && firstBytes[10] == 0x42 && firstBytes[11] == 0x50) { 40 | return YES; 41 | } 42 | } 43 | return NO; 44 | } 45 | 46 | - (BOOL)pin_isAnimatedWebP 47 | { 48 | WebPBitstreamFeatures features; 49 | if (WebPGetFeatures([self bytes], [self length], &features) == VP8_STATUS_OK) { 50 | return features.has_animation; 51 | } 52 | 53 | return NO; 54 | } 55 | 56 | #endif 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/Categories/PINImage+DecodedImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+DecodedImage.h 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 11/19/14. 6 | // 7 | // 8 | 9 | #import 10 | 11 | #if PIN_TARGET_IOS 12 | #import 13 | #elif PIN_TARGET_MAC 14 | #import 15 | #endif 16 | 17 | #import "PINRemoteImageMacros.h" 18 | 19 | #if !PIN_TARGET_IOS 20 | @interface NSImage (PINiOSMapping) 21 | 22 | @property(nonatomic, readonly, nullable) CGImageRef CGImage; 23 | 24 | + (nullable NSImage *)imageWithData:(nonnull NSData *)imageData; 25 | + (nullable NSImage *)imageWithContentsOfFile:(nonnull NSString *)path; 26 | + (nonnull NSImage *)imageWithCGImage:(nonnull CGImageRef)imageRef; 27 | 28 | @end 29 | #endif 30 | 31 | NSData * __nullable PINImageJPEGRepresentation(PINImage * __nonnull image, CGFloat compressionQuality); 32 | NSData * __nullable PINImagePNGRepresentation(PINImage * __nonnull image); 33 | 34 | @interface PINImage (PINDecodedImage) 35 | 36 | + (nullable PINImage *)pin_decodedImageWithData:(nonnull NSData *)data; 37 | + (nullable PINImage *)pin_decodedImageWithData:(nonnull NSData *)data skipDecodeIfPossible:(BOOL)skipDecodeIfPossible; 38 | + (nullable PINImage *)pin_decodedImageWithCGImageRef:(nonnull CGImageRef)imageRef; 39 | #if PIN_TARGET_IOS 40 | + (nullable PINImage *)pin_decodedImageWithCGImageRef:(nonnull CGImageRef)imageRef orientation:(UIImageOrientation) orientation; 41 | #endif 42 | + (nullable CGImageRef)pin_decodedImageRefWithCGImageRef:(nonnull CGImageRef)imageRef; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/Categories/PINImage+ScaledImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+ScaledImage.h 3 | // Pods 4 | // 5 | // Created by Michael Schneider on 2/9/17. 6 | // 7 | // 8 | 9 | #import 10 | 11 | #if PIN_TARGET_IOS 12 | #import 13 | #elif PIN_TARGET_MAC 14 | #import 15 | #endif 16 | 17 | #import "PINRemoteImageMacros.h" 18 | 19 | @interface PINImage (PINScaledImage) 20 | 21 | - (PINImage *)pin_scaledImageForKey:(NSString *)key; 22 | + (PINImage *)pin_scaledImageForImage:(PINImage *)image withKey:(NSString *)key; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/Categories/PINImage+ScaledImage.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+ScaledImage.m 3 | // Pods 4 | // 5 | // Created by Michael Schneider on 2/9/17. 6 | // 7 | // 8 | 9 | #import "PINImage+ScaledImage.h" 10 | 11 | static inline PINImage *PINScaledImageForKey(NSString * __nullable key, PINImage * __nullable image) { 12 | if (image == nil) { 13 | return nil; 14 | } 15 | 16 | #if PIN_TARGET_IOS 17 | 18 | NSCAssert(image.CGImage != NULL, @"CGImage should not be NULL"); 19 | 20 | CGFloat scale = 1.0; 21 | if (key.length >= 8) { 22 | if ([key rangeOfString:@"_2x."].location != NSNotFound || 23 | [key rangeOfString:@"@2x."].location != NSNotFound) { 24 | scale = 2.0; 25 | } 26 | 27 | if ([key rangeOfString:@"_3x."].location != NSNotFound || 28 | [key rangeOfString:@"@3x."].location != NSNotFound) { 29 | scale = 3.0; 30 | } 31 | } 32 | 33 | if (scale != image.scale) { 34 | return [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; 35 | } 36 | 37 | return image; 38 | 39 | #elif PIN_TARGET_MAC 40 | return image; 41 | #endif 42 | } 43 | 44 | @implementation PINImage (ScaledImage) 45 | 46 | - (PINImage *)pin_scaledImageForKey:(NSString *)key 47 | { 48 | return PINScaledImageForKey(key, self); 49 | } 50 | 51 | + (PINImage *)pin_scaledImageForImage:(PINImage *)image withKey:(NSString *)key 52 | { 53 | return PINScaledImageForKey(key, image); 54 | } 55 | 56 | @end 57 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/Categories/PINImage+WebP.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+WebP.h 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 11/18/14. 6 | // 7 | // 8 | 9 | #if PIN_WEBP 10 | 11 | #if PIN_TARGET_IOS 12 | #import 13 | #elif PIN_TARGET_MAC 14 | #import 15 | #endif 16 | 17 | #import "PINRemoteImageMacros.h" 18 | 19 | @interface PINImage (PINWebP) 20 | 21 | + (PINImage *)pin_imageWithWebPData:(NSData *)webPData; 22 | 23 | @end 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/Categories/PINRemoteImageTask+Subclassing.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteImageTask+Subclassing.h 3 | // PINRemoteImage 4 | // 5 | // Created by Garrett Moon on 5/22/17. 6 | // Copyright © 2017 Pinterest. All rights reserved. 7 | // 8 | 9 | #import "PINRemoteImageTask.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface PINRemoteImageTask (Subclassing) 14 | 15 | - (NSMutableDictionary *)l_callbackBlocks; 16 | - (BOOL)l_cancelWithUUID:(NSUUID *)UUID; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/ImageCategories/PINButton+PINRemoteImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIButton+PINRemoteImage.h 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 8/18/14. 6 | // 7 | // 8 | 9 | #if PIN_TARGET_IOS 10 | #import 11 | #elif PIN_TARGET_MAC 12 | #import 13 | #endif 14 | 15 | #import "PINRemoteImageManager.h" 16 | #import "PINRemoteImageCategoryManager.h" 17 | 18 | @interface PINButton (PINRemoteImage) 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/ImageCategories/PINImageView+PINRemoteImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+PINRemoteImage.h 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 8/17/14. 6 | // 7 | // 8 | 9 | #if PIN_TARGET_IOS 10 | #import 11 | #elif PIN_TARGET_MAC 12 | #import 13 | #endif 14 | 15 | #import "PINRemoteImageManager.h" 16 | #import "PINRemoteImageCategoryManager.h" 17 | 18 | @interface PINImageView (PINRemoteImage) 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINAlternateRepresentationProvider.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINAlternateRepresentationProvider.h 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 3/17/16. 6 | // 7 | // 8 | 9 | #import 10 | 11 | #import "PINRemoteImageManager.h" 12 | 13 | @protocol PINRemoteImageManagerAlternateRepresentationProvider 14 | @required 15 | 16 | /** 17 | @discussion This method will be called with data off the wire or stored in the cache. Return an object to have it returned as the alternativeRepresentation object in the PINRemoteImageManagerResult. @warning this method can be called on the main thread, be careful of doing expensive work. 18 | */ 19 | - (id)alternateRepresentationWithData:(NSData *)data options:(PINRemoteImageManagerDownloadOptions)options; 20 | 21 | @end 22 | 23 | @interface PINAlternateRepresentationProvider : NSObject 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINAlternateRepresentationProvider.m: -------------------------------------------------------------------------------- 1 | // 2 | // PINAlternateRepresentationProvider.m 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 3/17/16. 6 | // 7 | // 8 | 9 | #import "PINAlternateRepresentationProvider.h" 10 | 11 | #import "NSData+ImageDetectors.h" 12 | #if USE_FLANIMATED_IMAGE 13 | #import 14 | #endif 15 | 16 | @implementation PINAlternateRepresentationProvider 17 | 18 | - (id)alternateRepresentationWithData:(NSData *)data options:(PINRemoteImageManagerDownloadOptions)options 19 | { 20 | #if USE_FLANIMATED_IMAGE 21 | if ([data pin_isGIF]) { 22 | return [FLAnimatedImage animatedImageWithGIFData:data]; 23 | } 24 | #endif 25 | return nil; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINCache/PINCache+PINRemoteImageCaching.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINCache+PINRemoteImageCaching.h 3 | // Pods 4 | // 5 | // Created by Aleksei Shevchenko on 7/28/16. 6 | // 7 | // 8 | 9 | #import 10 | 11 | #import "PINRemoteImageCaching.h" 12 | #import "PINRemoteImageManager.h" 13 | 14 | @interface PINCache (PINRemoteImageCaching) 15 | 16 | @end 17 | 18 | @interface PINRemoteImageManager (PINCache) 19 | 20 | @property (nonatomic, nullable, readonly) PINCache *pinCache; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRemoteImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteImage.h 3 | // 4 | // Created by Garrett Moon on 8/17/14. 5 | // 6 | // 7 | 8 | #import "PINRemoteImageMacros.h" 9 | 10 | #if USE_PINCACHE 11 | #import "PINCache+PINRemoteImageCaching.h" 12 | #endif 13 | 14 | #import "NSData+ImageDetectors.h" 15 | #import "PINAlternateRepresentationProvider.h" 16 | #import "PINCachedAnimatedImage.h" 17 | #import "PINGIFAnimatedImage.h" 18 | #import "PINWebPAnimatedImage.h" 19 | #import "PINRemoteImageManager.h" 20 | #import "PINRemoteImageCategoryManager.h" 21 | #import "PINRemoteImageManagerResult.h" 22 | #import "PINRemoteImageCaching.h" 23 | #import "PINProgressiveImage.h" 24 | #import "PINURLSessionManager.h" 25 | #import "PINRequestRetryStrategy.h" 26 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRemoteImageBasicCache.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteImageBasicCache.h 3 | // Pods 4 | // 5 | // Created by Aleksei Shevchenko on 7/28/16. 6 | // 7 | // 8 | 9 | #import 10 | #import "PINRemoteImageCaching.h" 11 | 12 | /** 13 | * Simplistic wrapper based on NSCache. 14 | * not persisting any data on disk 15 | */ 16 | @interface PINRemoteImageBasicCache : NSObject 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRemoteImageCallbacks.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteImageCallbacks.h 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 3/9/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | #import "PINRemoteImageManager.h" 12 | 13 | @interface PINRemoteImageCallbacks : NSObject 14 | 15 | @property (atomic, strong, nullable) PINRemoteImageManagerImageCompletion completionBlock; 16 | @property (atomic, strong, nullable) PINRemoteImageManagerImageCompletion progressImageBlock; 17 | @property (atomic, strong, nullable) PINRemoteImageManagerProgressDownload progressDownloadBlock; 18 | @property (assign, readonly) CFTimeInterval requestTime; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRemoteImageCallbacks.m: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteImageCallbacks.m 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 3/9/15. 6 | // 7 | // 8 | 9 | #import "PINRemoteImageCallbacks.h" 10 | 11 | @implementation PINRemoteImageCallbacks 12 | 13 | - (instancetype)init 14 | { 15 | if (self = [super init]) { 16 | _requestTime = CACurrentMediaTime(); 17 | } 18 | return self; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRemoteImageDownloadTask.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteImageDownloadTask.h 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 3/9/15. 6 | // 7 | // 8 | 9 | #import 10 | 11 | #import "PINRemoteImageManager+Private.h" 12 | #import "PINRemoteImageTask.h" 13 | #import "PINProgressiveImage.h" 14 | #import "PINResume.h" 15 | 16 | @interface PINRemoteImageDownloadTask : PINRemoteImageTask 17 | 18 | @property (nonatomic, strong, nullable) NSURL *URL; 19 | @property (nonatomic, copy, nullable) NSString *ifRange; 20 | @property (nonatomic, copy, readonly, nullable) NSData *data; 21 | 22 | @property (nonatomic, readonly) CFTimeInterval estimatedRemainingTime; 23 | 24 | - (void)scheduleDownloadWithRequest:(nonnull NSURLRequest *)request 25 | resume:(nullable PINResume *)resume 26 | skipRetry:(BOOL)skipRetry 27 | priority:(PINRemoteImageManagerPriority)priority 28 | completionHandler:(nonnull PINRemoteImageManagerDataCompletion)completionHandler; 29 | 30 | - (void)didReceiveData:(nonnull NSData *)data; 31 | - (void)didReceiveResponse:(nonnull NSURLResponse *)response; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRemoteImageManager+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteImageManager+Private.h 3 | // PINRemoteImage 4 | // 5 | // Created by Garrett Moon on 5/18/17. 6 | // Copyright © 2017 Pinterest. All rights reserved. 7 | // 8 | 9 | #ifndef PINRemoteImageManager_Private_h 10 | #define PINRemoteImageManager_Private_h 11 | 12 | #import "PINRemoteImageDownloadQueue.h" 13 | 14 | typedef void (^PINRemoteImageManagerDataCompletion)(NSData *data, NSURLResponse *response, NSError *error); 15 | 16 | @interface PINRemoteImageManager (private) 17 | 18 | @property (nonatomic, strong, readonly) dispatch_queue_t callbackQueue; 19 | @property (nonatomic, strong, readonly) PINOperationQueue *concurrentOperationQueue; 20 | @property (nonatomic, strong, readonly) PINRemoteImageDownloadQueue *urlSessionTaskQueue; 21 | @property (nonatomic, strong, readonly) PINURLSessionManager *sessionManager; 22 | 23 | @property (nonatomic, readonly) NSArray *progressThresholds; 24 | @property (nonatomic, readonly) NSTimeInterval estimatedRemainingTimeThreshold; 25 | @property (nonatomic, readonly) BOOL shouldBlurProgressive; 26 | @property (nonatomic, readonly) CGSize maxProgressiveRenderSize; 27 | 28 | @end 29 | 30 | #endif /* PINRemoteImageManager_Private_h */ 31 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRemoteImageMemoryContainer.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteImageMemoryContainer.h 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 3/17/16. 6 | // 7 | // 8 | 9 | #import 10 | 11 | #import "PINRemoteImageMacros.h" 12 | #import "PINRemoteLock.h" 13 | 14 | @class PINImage; 15 | 16 | @interface PINRemoteImageMemoryContainer : NSObject 17 | 18 | @property (nonatomic, strong) PINImage *image; 19 | @property (nonatomic, strong) NSData *data; 20 | @property (nonatomic, strong) PINRemoteLock *lock; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRemoteImageMemoryContainer.m: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteImageMemoryContainer.m 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 3/17/16. 6 | // 7 | // 8 | 9 | #import "PINRemoteImageMemoryContainer.h" 10 | 11 | @implementation PINRemoteImageMemoryContainer 12 | 13 | - (instancetype)init 14 | { 15 | if (self = [super init]) { 16 | _lock = [[PINRemoteLock alloc] initWithName:@"PINRemoteImageMemoryContainer" lockType:PINRemoteLockTypeNonRecursive]; 17 | } 18 | return self; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRemoteImageProcessorTask.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteImageProcessorTask.h 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 3/9/15. 6 | // 7 | // 8 | 9 | #import "PINRemoteImageTask.h" 10 | 11 | @interface PINRemoteImageProcessorTask : PINRemoteImageTask 12 | 13 | @property (nonatomic, strong, nullable) NSUUID *downloadTaskUUID; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRemoteImageProcessorTask.m: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteImageProcessorTask.m 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 3/9/15. 6 | // 7 | // 8 | 9 | #import "PINRemoteImageProcessorTask.h" 10 | 11 | @implementation PINRemoteImageProcessorTask 12 | 13 | @synthesize downloadTaskUUID = _downloadTaskUUID; 14 | 15 | - (BOOL)cancelWithUUID:(NSUUID *)UUID resume:(PINResume **)resume 16 | { 17 | BOOL noMoreCompletions = [super cancelWithUUID:UUID resume:resume]; 18 | [self.lock lockWithBlock:^{ 19 | if (noMoreCompletions && _downloadTaskUUID) { 20 | [self.manager cancelTaskWithUUID:_downloadTaskUUID]; 21 | _downloadTaskUUID = nil; 22 | } 23 | }]; 24 | return noMoreCompletions; 25 | } 26 | 27 | - (void)setDownloadTaskUUID:(NSUUID *)downloadTaskUUID 28 | { 29 | [self.lock lockWithBlock:^{ 30 | NSAssert(_downloadTaskUUID == nil, @"downloadTaskUUID should be nil"); 31 | _downloadTaskUUID = downloadTaskUUID; 32 | }]; 33 | } 34 | 35 | - (NSUUID *)downloadTaskUUID 36 | { 37 | __block NSUUID *downloadTaskUUID; 38 | [self.lock lockWithBlock:^{ 39 | downloadTaskUUID = _downloadTaskUUID; 40 | }]; 41 | return downloadTaskUUID; 42 | } 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRemoteLock.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINRemoteLock.h 3 | // Pods 4 | // 5 | // Created by Garrett Moon on 3/17/16. 6 | // 7 | // 8 | 9 | #import 10 | 11 | /** The type of lock, either recursive or non-recursive */ 12 | typedef NS_ENUM(NSUInteger, PINRemoteLockType) { 13 | /** A non-recursive version of the lock. The default. */ 14 | PINRemoteLockTypeNonRecursive = 0, 15 | /** A recursive version of the lock. More expensive. */ 16 | PINRemoteLockTypeRecursive, 17 | }; 18 | 19 | @interface PINRemoteLock : NSObject 20 | 21 | - (instancetype)initWithName:(NSString *)lockName lockType:(PINRemoteLockType)lockType NS_DESIGNATED_INITIALIZER; 22 | - (instancetype)initWithName:(NSString *)lockName; 23 | - (void)lockWithBlock:(dispatch_block_t)block; 24 | 25 | - (void)lock; 26 | - (void)unlock; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINRequestRetryStrategy.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINRequestRetryStrategy.h 3 | // Pods 4 | // 5 | // Created by Hovhannes Safaryan on 9/24/16. 6 | // 7 | // 8 | 9 | #import 10 | 11 | /* 12 | Decide whether request should be retried based on the error. 13 | **/ 14 | 15 | @protocol PINRequestRetryStrategy 16 | 17 | - (BOOL)shouldRetryWithError:(NSError *)error; 18 | - (int)nextDelay; 19 | - (void)incrementRetryCount; 20 | - (int)numberOfRetries; 21 | 22 | @end 23 | 24 | @interface PINRequestExponentialRetryStrategy : NSObject 25 | 26 | - (instancetype)initWithRetryMaxCount:(int)retryMaxCount delayBase:(int)delayBase; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Pods/PINRemoteImage/Source/Classes/PINResume.h: -------------------------------------------------------------------------------- 1 | // 2 | // PINResume.h 3 | // PINRemoteImage 4 | // 5 | // Created by Garrett Moon on 3/10/17. 6 | // Copyright © 2017 Pinterest. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface PINResume : NSObject 14 | 15 | - (id)init NS_UNAVAILABLE; 16 | + (PINResume *)resumeData:(NSData *)resumeData ifRange:(NSString *)ifRange totalBytes:(long long)totalBytes; 17 | 18 | @property (nonatomic, strong, readonly) NSData *resumeData; 19 | @property (nonatomic, copy, readonly) NSString *ifRange; 20 | @property (nonatomic, assign, readonly) long long totalBytes; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/Dee.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | PINCache.xcscheme 8 | 9 | isShown 10 | 11 | 12 | PINOperation.xcscheme 13 | 14 | isShown 15 | 16 | 17 | PINRemoteImage.xcscheme 18 | 19 | isShown 20 | 21 | 22 | Pods-ASDKDemo.xcscheme 23 | 24 | isShown 25 | 26 | 27 | Texture.xcscheme 28 | 29 | isShown 30 | 31 | 32 | YYModel.xcscheme 33 | 34 | isShown 35 | 36 | 37 | 38 | SuppressBuildableAutocreation 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINCache/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.0.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINCache/PINCache-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_PINCache : NSObject 3 | @end 4 | @implementation PodsDummy_PINCache 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINCache/PINCache-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #ifndef TARGET_OS_WATCH 14 | #define TARGET_OS_WATCH 0 15 | #endif 16 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINCache/PINCache-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "PINCache.h" 14 | #import "PINCacheMacros.h" 15 | #import "PINCacheObjectSubscripting.h" 16 | #import "PINCaching.h" 17 | #import "PINDiskCache.h" 18 | #import "PINMemoryCache.h" 19 | 20 | FOUNDATION_EXPORT double PINCacheVersionNumber; 21 | FOUNDATION_EXPORT const unsigned char PINCacheVersionString[]; 22 | 23 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINCache/PINCache.modulemap: -------------------------------------------------------------------------------- 1 | framework module PINCache { 2 | umbrella header "PINCache-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINCache/PINCache.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/PINCache 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/PINOperation" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "Foundation" -weak_framework "UIKit" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/PINCache 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINOperation/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINOperation/PINOperation-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_PINOperation : NSObject 3 | @end 4 | @implementation PodsDummy_PINOperation 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINOperation/PINOperation-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #ifndef TARGET_OS_WATCH 14 | #define TARGET_OS_WATCH 0 15 | #endif 16 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINOperation/PINOperation-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "PINOperation.h" 14 | #import "PINOperationGroup.h" 15 | #import "PINOperationMacros.h" 16 | #import "PINOperationQueue.h" 17 | #import "PINOperationTypes.h" 18 | 19 | FOUNDATION_EXPORT double PINOperationVersionNumber; 20 | FOUNDATION_EXPORT const unsigned char PINOperationVersionString[]; 21 | 22 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINOperation/PINOperation.modulemap: -------------------------------------------------------------------------------- 1 | framework module PINOperation { 2 | umbrella header "PINOperation-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINOperation/PINOperation.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/PINOperation 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "Foundation" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/PINOperation 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINRemoteImage/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINRemoteImage/PINRemoteImage-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_PINRemoteImage : NSObject 3 | @end 4 | @implementation PodsDummy_PINRemoteImage 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINRemoteImage/PINRemoteImage-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINRemoteImage/PINRemoteImage.modulemap: -------------------------------------------------------------------------------- 1 | framework module PINRemoteImage { 2 | umbrella header "PINRemoteImage-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/PINRemoteImage/PINRemoteImage.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/PINRemoteImage 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/PINCache" "$PODS_CONFIGURATION_BUILD_DIR/PINOperation" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_LDFLAGS = -framework "Accelerate" -framework "ImageIO" -framework "UIKit" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/PINRemoteImage 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ASDKDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ASDKDemo/Pods-ASDKDemo-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_ASDKDemo : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_ASDKDemo 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ASDKDemo/Pods-ASDKDemo-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_ASDKDemoVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_ASDKDemoVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ASDKDemo/Pods-ASDKDemo.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/PINCache" "$PODS_CONFIGURATION_BUILD_DIR/PINOperation" "$PODS_CONFIGURATION_BUILD_DIR/PINRemoteImage" "$PODS_CONFIGURATION_BUILD_DIR/Texture" "$PODS_CONFIGURATION_BUILD_DIR/YYModel" 2 | GCC_PRECOMPILE_PREFIX_HEADER = YES 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/PINCache/PINCache.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PINOperation/PINOperation.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PINRemoteImage/PINRemoteImage.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Texture/AsyncDisplayKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/YYModel/YYModel.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "AsyncDisplayKit" -framework "PINCache" -framework "PINOperation" -framework "PINRemoteImage" -framework "YYModel" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ASDKDemo/Pods-ASDKDemo.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_ASDKDemo { 2 | umbrella header "Pods-ASDKDemo-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ASDKDemo/Pods-ASDKDemo.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/PINCache" "$PODS_CONFIGURATION_BUILD_DIR/PINOperation" "$PODS_CONFIGURATION_BUILD_DIR/PINRemoteImage" "$PODS_CONFIGURATION_BUILD_DIR/Texture" "$PODS_CONFIGURATION_BUILD_DIR/YYModel" 2 | GCC_PRECOMPILE_PREFIX_HEADER = YES 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/PINCache/PINCache.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PINOperation/PINOperation.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PINRemoteImage/PINRemoteImage.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Texture/AsyncDisplayKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/YYModel/YYModel.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "AsyncDisplayKit" -framework "PINCache" -framework "PINOperation" -framework "PINRemoteImage" -framework "YYModel" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Texture/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.6.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Texture/Texture-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Texture : NSObject 3 | @end 4 | @implementation PodsDummy_Texture 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Texture/Texture-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Texture/Texture.modulemap: -------------------------------------------------------------------------------- 1 | framework module AsyncDisplayKit { 2 | umbrella header "Texture-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Texture/Texture.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_CXX_LANGUAGE_STANDARD = c++11 2 | CLANG_CXX_LIBRARY = libc++ 3 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Texture 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/PINCache" "$PODS_CONFIGURATION_BUILD_DIR/PINOperation" "$PODS_CONFIGURATION_BUILD_DIR/PINRemoteImage" 5 | GCC_PRECOMPILE_PREFIX_HEADER = YES 6 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 7 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 8 | OTHER_LDFLAGS = -l"c++" -weak_framework "AssetsLibrary" -weak_framework "MapKit" -weak_framework "Photos" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT} 12 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Texture 13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 14 | SKIP_INSTALL = YES 15 | -------------------------------------------------------------------------------- /Pods/Target Support Files/YYModel/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.4 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/YYModel/YYModel-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_YYModel : NSObject 3 | @end 4 | @implementation PodsDummy_YYModel 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/YYModel/YYModel-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/YYModel/YYModel-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "NSObject+YYModel.h" 14 | #import "YYClassInfo.h" 15 | #import "YYModel.h" 16 | 17 | FOUNDATION_EXPORT double YYModelVersionNumber; 18 | FOUNDATION_EXPORT const unsigned char YYModelVersionString[]; 19 | 20 | -------------------------------------------------------------------------------- /Pods/Target Support Files/YYModel/YYModel.modulemap: -------------------------------------------------------------------------------- 1 | framework module YYModel { 2 | umbrella header "YYModel-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/YYModel/YYModel.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/YYModel 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "CoreFoundation" -framework "Foundation" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYModel 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/Texture/Source/ASBlockTypes.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASBlockTypes.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | @class ASCellNode; 21 | 22 | /** 23 | * ASCellNode creation block. Used to lazily create the ASCellNode instance for a specified indexPath. 24 | */ 25 | typedef ASCellNode * _Nonnull(^ASCellNodeBlock)(void); 26 | 27 | // Type for the cancellation checker block passed into the async display blocks. YES means the operation has been cancelled, NO means continue. 28 | typedef BOOL(^asdisplaynode_iscancelled_block_t)(void); 29 | -------------------------------------------------------------------------------- /Pods/Texture/Source/ASDisplayNode+Convenience.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASDisplayNode+Convenience.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | @class UIViewController; 23 | 24 | @interface ASDisplayNode (Convenience) 25 | 26 | /** 27 | * @abstract Returns the view controller nearest to this node in the view hierarchy. 28 | * 29 | * @warning This property may only be accessed on the main thread. This property may 30 | * be @c nil until the node's view is actually hosted in the view hierarchy. 31 | */ 32 | @property (nonatomic, nullable, readonly) __kindof UIViewController *closestViewController; 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /Pods/Texture/Source/ASNavigationController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASNavigationController.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | #import 21 | 22 | NS_ASSUME_NONNULL_BEGIN 23 | 24 | /** 25 | * ASNavigationController 26 | * 27 | * @discussion ASNavigationController is a drop in replacement for UINavigationController 28 | * which improves memory efficiency by implementing the @c ASManagesChildVisibilityDepth protocol. 29 | * You can use ASNavigationController with regular UIViewControllers, as well as ASViewControllers. 30 | * It is safe to subclass or use even where AsyncDisplayKit is not adopted. 31 | * 32 | * @see ASManagesChildVisibilityDepth 33 | */ 34 | @interface ASNavigationController : UINavigationController 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /Pods/Texture/Source/ASPagerFlowLayout.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASPagerFlowLayout.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | @interface ASPagerFlowLayout : UICollectionViewFlowLayout 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /Pods/Texture/Source/ASPagerNode+Beta.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASPagerNode+Beta.h 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | 15 | @interface ASPagerNode (Beta) 16 | 17 | - (instancetype)initUsingAsyncCollectionLayout; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Texture/Source/ASRangeManagingNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASRangeManagingNode.h 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | #import 15 | 16 | @class ASCellNode; 17 | 18 | NS_ASSUME_NONNULL_BEGIN 19 | 20 | /** 21 | * Basically ASTableNode or ASCollectionNode. 22 | */ 23 | @protocol ASRangeManagingNode 24 | 25 | /** 26 | * Retrieve the index path for the given node, if it's a member of this container. 27 | * 28 | * @param node The node. 29 | * @return The index path, or nil if the node is not part of this container. 30 | */ 31 | - (nullable NSIndexPath *)indexPathForNode:(ASCellNode *)node; 32 | 33 | @end 34 | 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /Pods/Texture/Source/ASTabBarController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTabBarController.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | #import 21 | 22 | NS_ASSUME_NONNULL_BEGIN 23 | 24 | /** 25 | * ASTabBarController 26 | * 27 | * @discussion ASTabBarController is a drop in replacement for UITabBarController 28 | * which implements the memory efficiency improving @c ASManagesChildVisibilityDepth protocol. 29 | * 30 | * @see ASManagesChildVisibilityDepth 31 | */ 32 | @interface ASTabBarController : UITabBarController 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /Pods/Texture/Source/ASTableNode+Beta.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTableNode+Beta.h 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | 15 | @protocol ASBatchFetchingDelegate; 16 | 17 | NS_ASSUME_NONNULL_BEGIN 18 | 19 | @interface ASTableNode (Beta) 20 | 21 | @property (nonatomic, weak) id batchFetchingDelegate; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /Pods/Texture/Source/ASVisibilityProtocols.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASVisibilityProtocols.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | ASLayoutRangeMode ASLayoutRangeModeForVisibilityDepth(NSUInteger visibilityDepth) 21 | { 22 | if (visibilityDepth == 0) { 23 | return ASLayoutRangeModeFull; 24 | } else if (visibilityDepth == 1) { 25 | return ASLayoutRangeModeMinimum; 26 | } else if (visibilityDepth == 2) { 27 | return ASLayoutRangeModeVisibleOnly; 28 | } 29 | return ASLayoutRangeModeLowMemory; 30 | } 31 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Base/ASAssert.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASAssert.m 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | #import 15 | 16 | static pthread_key_t ASMainThreadAssertionsDisabledKey() 17 | { 18 | return ASPthreadStaticKey(NULL); 19 | } 20 | 21 | BOOL ASMainThreadAssertionsAreDisabled() { 22 | return (size_t)pthread_getspecific(ASMainThreadAssertionsDisabledKey()) > 0; 23 | } 24 | 25 | void ASPushMainThreadAssertionsDisabled() { 26 | pthread_key_t key = ASMainThreadAssertionsDisabledKey(); 27 | size_t oldValue = (size_t)pthread_getspecific(key); 28 | pthread_setspecific(key, (void *)(oldValue + 1)); 29 | } 30 | 31 | void ASPopMainThreadAssertionsDisabled() { 32 | pthread_key_t key = ASMainThreadAssertionsDisabledKey(); 33 | size_t oldValue = (size_t)pthread_getspecific(key); 34 | if (oldValue > 0) { 35 | pthread_setspecific(key, (void *)(oldValue - 1)); 36 | } else { 37 | ASDisplayNodeCFailAssert(@"Attempt to pop thread assertion-disabling without corresponding push."); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Base/ASEqualityHelpers.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASEqualityHelpers.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | /** 21 | @abstract Correctly equates two objects, including cases where both objects are nil. The latter is a case where `isEqual:` fails. 22 | @param obj The first object in the comparison. Can be nil. 23 | @param otherObj The second object in the comparison. Can be nil. 24 | @result YES if the objects are equal, including cases where both object are nil. 25 | */ 26 | ASDISPLAYNODE_INLINE BOOL ASObjectIsEqual(id obj, id otherObj) 27 | { 28 | return obj == otherObj || [obj isEqual:otherObj]; 29 | } 30 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASBatchFetchingDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASBatchFetchingDelegate.h 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | 15 | @protocol ASBatchFetchingDelegate 16 | 17 | /** 18 | * @abstract Determine if batch fetching should begin based on the remaining time. 19 | * If the delegate doesn't have enough information to confidently decide, it can take the given hint. 20 | * 21 | * @param remainingTime The amount of time left for user to reach the end of the scroll view's content. 22 | * 23 | * @param hint A hint for the delegate to fallback to. 24 | */ 25 | - (BOOL)shouldFetchBatchWithRemainingTime:(NSTimeInterval)remainingTime hint:(BOOL)hint; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASCollectionFlowLayoutDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASCollectionFlowLayoutDelegate.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | AS_SUBCLASSING_RESTRICTED 23 | 24 | /** 25 | * A thread-safe, high performant layout delegate that arranges items into a flow layout. 26 | * It uses a concurrent and multi-line ASStackLayoutSpec under the hood. Thus, per-child flex properties (i.e alignSelf, 27 | * flexShrink, flexGrow, etc - see @ASStackLayoutElement) can be set directly on cell nodes to be used 28 | * to calculate the final collection layout. 29 | */ 30 | @interface ASCollectionFlowLayoutDelegate : NSObject 31 | 32 | - (instancetype)initWithScrollableDirections:(ASScrollDirection)scrollableDirections NS_DESIGNATED_INITIALIZER; 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASCollectionInternal.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASCollectionInternal.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASCollectionLayoutContext.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASCollectionLayoutContext.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | #import 21 | 22 | @class ASElementMap; 23 | 24 | NS_ASSUME_NONNULL_BEGIN 25 | 26 | AS_SUBCLASSING_RESTRICTED 27 | @interface ASCollectionLayoutContext : NSObject 28 | 29 | @property (nonatomic, assign, readonly) CGSize viewportSize; 30 | @property (nonatomic, assign, readonly) CGPoint initialContentOffset; 31 | @property (nonatomic, assign, readonly) ASScrollDirection scrollableDirections; 32 | @property (nonatomic, weak, readonly) ASElementMap *elements; 33 | @property (nonatomic, strong, readonly, nullable) id additionalInfo; 34 | 35 | - (instancetype)init __unavailable; 36 | 37 | @end 38 | 39 | NS_ASSUME_NONNULL_END 40 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASCollectionViewLayoutController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASCollectionViewLayoutController.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | @class ASCollectionView; 23 | 24 | AS_SUBCLASSING_RESTRICTED 25 | @interface ASCollectionViewLayoutController : ASAbstractLayoutController 26 | 27 | - (instancetype)initWithCollectionView:(ASCollectionView *)collectionView; 28 | 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASEventLog.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASEventLog.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | #ifndef ASEVENTLOG_CAPACITY 22 | #define ASEVENTLOG_CAPACITY 5 23 | #endif 24 | 25 | #ifndef ASEVENTLOG_ENABLE 26 | #define ASEVENTLOG_ENABLE 0 27 | #endif 28 | 29 | NS_ASSUME_NONNULL_BEGIN 30 | 31 | AS_SUBCLASSING_RESTRICTED 32 | @interface ASEventLog : NSObject 33 | 34 | /** 35 | * Create a new event log. 36 | * 37 | * @param anObject The object whose events we are logging. This object is not retained. 38 | */ 39 | - (instancetype)initWithObject:(id)anObject; 40 | 41 | - (void)logEventWithBacktrace:(nullable NSArray *)backtrace format:(NSString *)format, ... NS_FORMAT_FUNCTION(2, 3); 42 | 43 | - (instancetype)init NS_UNAVAILABLE; 44 | 45 | @end 46 | 47 | NS_ASSUME_NONNULL_END 48 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASHashing.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASHashing.h 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | #import 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | ASDISPLAYNODE_EXTERN_C_BEGIN 18 | 19 | /** 20 | * When std::hash is unavailable, this function will hash a bucket o' bits real fast. 21 | * The hashing algorithm is copied from CoreFoundation's private function CFHashBytes. 22 | * https://opensource.apple.com/source/CF/CF-1153.18/CFUtilities.c.auto.html 23 | * 24 | * Simple example: 25 | * CGRect myRect = { ... }; 26 | * ASHashBytes(&myRect, sizeof(myRect)); 27 | * 28 | * Example: 29 | * struct { 30 | * NSUInteger imageHash; 31 | * CGSize size; 32 | * } data = { 33 | * _image.hash, 34 | * _bounds.size 35 | * }; 36 | * return ASHashBytes(&data, sizeof(data)); 37 | * 38 | * @warning: If a struct has padding, any fields that are intiailized in {} 39 | * will have garbage data for their padding, which will break this hash! Either 40 | * use `pragma clang diagnostic warning "-Wpadded"` around your struct definition 41 | * or manually initialize the fields of your struct (`myStruct.x = 7;` etc). 42 | */ 43 | NSUInteger ASHashBytes(void *bytes, size_t length); 44 | 45 | ASDISPLAYNODE_EXTERN_C_END 46 | NS_ASSUME_NONNULL_END 47 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASHashing.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASHashing.m 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | 15 | #define ELF_STEP(B) T1 = (H << 4) + B; T2 = T1 & 0xF0000000; if (T2) T1 ^= (T2 >> 24); T1 &= (~T2); H = T1; 16 | 17 | /** 18 | * The hashing algorithm copied from CoreFoundation CFHashBytes function. 19 | * https://opensource.apple.com/source/CF/CF-1153.18/CFUtilities.c.auto.html 20 | */ 21 | NSUInteger ASHashBytes(void *bytesarg, size_t length) { 22 | /* The ELF hash algorithm, used in the ELF object file format */ 23 | uint8_t *bytes = (uint8_t *)bytesarg; 24 | UInt32 H = 0, T1, T2; 25 | SInt32 rem = (SInt32)length; 26 | while (3 < rem) { 27 | ELF_STEP(bytes[length - rem]); 28 | ELF_STEP(bytes[length - rem + 1]); 29 | ELF_STEP(bytes[length - rem + 2]); 30 | ELF_STEP(bytes[length - rem + 3]); 31 | rem -= 4; 32 | } 33 | switch (rem) { 34 | case 3: ELF_STEP(bytes[length - 3]); 35 | case 2: ELF_STEP(bytes[length - 2]); 36 | case 1: ELF_STEP(bytes[length - 1]); 37 | case 0: ; 38 | } 39 | return H; 40 | } 41 | 42 | #undef ELF_STEP 43 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASImageContainerProtocolCategories.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASImageContainerProtocolCategories.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | @interface UIImage (ASImageContainerProtocol) 22 | 23 | @end 24 | 25 | @interface NSData (ASImageContainerProtocol) 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASImageContainerProtocolCategories.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASImageContainerProtocolCategories.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | @implementation UIImage (ASImageContainerProtocol) 21 | 22 | - (UIImage *)asdk_image 23 | { 24 | return self; 25 | } 26 | 27 | - (NSData *)asdk_animatedImageData 28 | { 29 | return nil; 30 | } 31 | 32 | @end 33 | 34 | @implementation NSData (ASImageContainerProtocol) 35 | 36 | - (UIImage *)asdk_image 37 | { 38 | return nil; 39 | } 40 | 41 | - (NSData *)asdk_animatedImageData 42 | { 43 | return self; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASMainSerialQueue.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASMainSerialQueue.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | AS_SUBCLASSING_RESTRICTED 22 | @interface ASMainSerialQueue : NSObject 23 | 24 | @property (nonatomic, readonly) NSUInteger numberOfScheduledBlocks; 25 | - (void)performBlockOnMainThread:(dispatch_block_t)block; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASRangeControllerUpdateRangeProtocol+Beta.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASRangeControllerUpdateRangeProtocol+Beta.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | @protocol ASRangeControllerUpdateRangeProtocol 22 | 23 | /** 24 | * Updates the current range mode of the range controller for at least the next range update 25 | * and, if the new mode is different from the previous mode, enqueues a range update. 26 | */ 27 | - (void)updateCurrentRangeWithMode:(ASLayoutRangeMode)rangeMode; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASSectionContext.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASSectionContext.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | @class ASCollectionView; 21 | 22 | @protocol ASSectionContext 23 | 24 | /** 25 | * Custom name of this section, for debugging only. 26 | */ 27 | @property (nonatomic, copy, nullable) NSString *sectionName; 28 | @property (nonatomic, weak, nullable) ASCollectionView *collectionView; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASTableLayoutController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTableLayoutController.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | @class UITableView; 24 | 25 | /** 26 | * A layout controller designed for use with UITableView. 27 | */ 28 | AS_SUBCLASSING_RESTRICTED 29 | @interface ASTableLayoutController : ASAbstractLayoutController 30 | 31 | @property (nonatomic, weak, readonly) UITableView *tableView; 32 | 33 | - (instancetype)initWithTableView:(UITableView *)tableView; 34 | 35 | @end 36 | 37 | NS_ASSUME_NONNULL_END 38 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASTraceEvent.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTraceEvent.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | AS_SUBCLASSING_RESTRICTED 24 | @interface ASTraceEvent : NSObject 25 | 26 | /** 27 | * This method is dealloc safe. 28 | */ 29 | - (instancetype)initWithBacktrace:(nullable NSArray *)backtrace 30 | format:(NSString *)format 31 | arguments:(va_list)arguments NS_FORMAT_FUNCTION(2,0); 32 | 33 | // Will be nil unless AS_SAVE_EVENT_BACKTRACES=1 (default=0) 34 | @property (nonatomic, nullable, readonly) NSArray *backtrace; 35 | @property (nonatomic, strong, readonly) NSString *message; 36 | @property (nonatomic, readonly) NSTimeInterval timestamp; 37 | 38 | @end 39 | 40 | NS_ASSUME_NONNULL_END 41 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/ASWeakProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASWeakProxy.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | AS_SUBCLASSING_RESTRICTED 22 | @interface ASWeakProxy : NSProxy 23 | 24 | /** 25 | * @return target The target which will be forwarded all messages sent to the weak proxy. 26 | */ 27 | @property (nonatomic, weak, readonly) id target; 28 | 29 | /** 30 | * An object which forwards messages to a target which it weakly references 31 | * 32 | * @discussion This class is useful for breaking retain cycles. You can pass this in place 33 | * of the target to something which creates a strong reference. All messages sent to the 34 | * proxy will be passed onto the target. 35 | * 36 | * @return an instance of ASWeakProxy 37 | */ 38 | + (instancetype)weakProxyWithTarget:(id)target; 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/CoreGraphics+ASConvenience.m: -------------------------------------------------------------------------------- 1 | // 2 | // CoreGraphics+ASConvenience.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/NSMutableAttributedString+TextKitAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSMutableAttributedString+TextKitAdditions.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | @interface NSMutableAttributedString (TextKitAdditions) 23 | 24 | - (void)attributeTextInRange:(NSRange)range withTextKitMinimumLineHeight:(CGFloat)minimumLineHeight; 25 | 26 | - (void)attributeTextInRange:(NSRange)range withTextKitMinimumLineHeight:(CGFloat)minimumLineHeight maximumLineHeight:(CGFloat)maximumLineHeight; 27 | 28 | - (void)attributeTextInRange:(NSRange)range withTextKitLineHeight:(CGFloat)lineHeight; 29 | 30 | - (void)attributeTextInRange:(NSRange)range withTextKitParagraphStyle:(NSParagraphStyle *)paragraphStyle; 31 | 32 | @end 33 | 34 | NS_ASSUME_NONNULL_END 35 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/Transactions/_ASAsyncTransactionContainer+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // _ASAsyncTransactionContainer+Private.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | @class _ASAsyncTransaction; 24 | 25 | @interface CALayer (ASAsyncTransactionContainerTransactions) 26 | @property (nonatomic, strong, nullable, setter=asyncdisplaykit_setAsyncLayerTransactions:) NSHashTable<_ASAsyncTransaction *> *asyncdisplaykit_asyncLayerTransactions; 27 | 28 | - (void)asyncdisplaykit_asyncTransactionContainerWillBeginTransaction:(_ASAsyncTransaction *)transaction; 29 | - (void)asyncdisplaykit_asyncTransactionContainerDidCompleteTransaction:(_ASAsyncTransaction *)transaction; 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/Transactions/_ASAsyncTransactionGroup.h: -------------------------------------------------------------------------------- 1 | // 2 | // _ASAsyncTransactionGroup.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | @class _ASAsyncTransaction; 23 | @protocol ASAsyncTransactionContainer; 24 | 25 | /// A group of transaction containers, for which the current transactions are committed together at the end of the next runloop tick. 26 | @interface _ASAsyncTransactionGroup : NSObject 27 | /// The main transaction group is scheduled to commit on every tick of the main runloop. 28 | + (_ASAsyncTransactionGroup *)mainTransactionGroup; 29 | + (void)commit; 30 | 31 | /// Add a transaction container to be committed. 32 | /// @see ASAsyncTransactionContainer 33 | - (void)addTransactionContainer:(id)container; 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/UICollectionViewLayout+ASConvenience.h: -------------------------------------------------------------------------------- 1 | // 2 | // UICollectionViewLayout+ASConvenience.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | @protocol ASCollectionViewLayoutInspecting; 21 | 22 | NS_ASSUME_NONNULL_BEGIN 23 | 24 | @interface UICollectionViewLayout (ASLayoutInspectorProviding) 25 | 26 | /** 27 | * You can override this method on your @c UICollectionViewLayout subclass to 28 | * return a layout inspector tailored to your layout. 29 | * 30 | * It's fine to return @c self. You must not return @c nil. 31 | */ 32 | - (id)asdk_layoutInspector; 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/UICollectionViewLayout+ASConvenience.m: -------------------------------------------------------------------------------- 1 | // 2 | // UICollectionViewLayout+ASConvenience.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | #import 21 | 22 | #import 23 | 24 | @implementation UICollectionViewLayout (ASLayoutInspectorProviding) 25 | 26 | - (id)asdk_layoutInspector 27 | { 28 | UICollectionViewFlowLayout *flow = ASDynamicCast(self, UICollectionViewFlowLayout); 29 | if (flow != nil) { 30 | return [[ASCollectionViewFlowLayoutInspector alloc] initWithFlowLayout:flow]; 31 | } else { 32 | return [[ASCollectionViewLayoutInspector alloc] init]; 33 | } 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/_ASCollectionReusableView.h: -------------------------------------------------------------------------------- 1 | // 2 | // _ASCollectionReusableView.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | @class ASCellNode, ASCollectionElement; 22 | 23 | NS_ASSUME_NONNULL_BEGIN 24 | 25 | AS_SUBCLASSING_RESTRICTED // Note: ASDynamicCastStrict is used on instances of this class based on this restriction. 26 | @interface _ASCollectionReusableView : UICollectionReusableView 27 | 28 | @property (nonatomic, strong, readonly, nullable) ASCellNode *node; 29 | @property (nonatomic, strong, nullable) ASCollectionElement *element; 30 | @property (nonatomic, strong, nullable) UICollectionViewLayoutAttributes *layoutAttributes; 31 | 32 | @end 33 | 34 | NS_ASSUME_NONNULL_END 35 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/_ASDisplayView.h: -------------------------------------------------------------------------------- 1 | // 2 | // _ASDisplayView.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | // This class is only for use by ASDisplayNode and should never be subclassed or used directly. 21 | // Note that the "node" property is added to UIView directly via a category in ASDisplayNode. 22 | 23 | @interface _ASDisplayView : UIView 24 | 25 | // These methods expose a way for ASDisplayNode touch events to let the view call super touch events 26 | // Some UIKit mechanisms, like UITableView and UICollectionView selection handling, require this to work 27 | - (void)__forwardTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; 28 | - (void)__forwardTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; 29 | - (void)__forwardTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; 30 | - (void)__forwardTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Details/_ASDisplayViewAccessiblity.h: -------------------------------------------------------------------------------- 1 | // 2 | // _ASDisplayViewAccessiblity.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | @interface _ASDisplayView (UIAccessibilityContainer) 22 | @property (copy, nonatomic) NSArray *accessibleElements; 23 | @end 24 | -------------------------------------------------------------------------------- /Pods/Texture/Source/IGListAdapter+AsyncDisplayKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // IGListAdapter+AsyncDisplayKit.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | #if AS_IG_LIST_KIT 21 | 22 | #import 23 | 24 | NS_ASSUME_NONNULL_BEGIN 25 | 26 | @class ASCollectionNode; 27 | 28 | @interface IGListAdapter (AsyncDisplayKit) 29 | 30 | /** 31 | * Connect this list adapter to the given collection node. 32 | * 33 | * @param collectionNode The collection node to drive with this list adapter. 34 | * 35 | * @note This method may only be called once per list adapter, 36 | * and it must be called on the main thread. -[UIViewController init] 37 | * is a good place to call it. This method does not retain the collection node. 38 | */ 39 | - (void)setASDKCollectionNode:(ASCollectionNode *)collectionNode; 40 | 41 | @end 42 | 43 | NS_ASSUME_NONNULL_END 44 | 45 | #endif // AS_IG_LIST_KIT 46 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Layout/ASAbsoluteLayoutElement.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASAbsoluteLayoutElement.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | /** 23 | * Layout options that can be defined for an ASLayoutElement being added to a ASAbsoluteLayoutSpec. 24 | */ 25 | @protocol ASAbsoluteLayoutElement 26 | 27 | /** 28 | * @abstract The position of this object within its parent spec. 29 | */ 30 | @property (nonatomic, assign) CGPoint layoutPosition; 31 | 32 | @end 33 | 34 | NS_ASSUME_NONNULL_END 35 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Layout/ASRatioLayoutSpec.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASRatioLayoutSpec.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | @protocol ASLayoutElement; 23 | 24 | /** 25 | Ratio layout spec 26 | For when the content should respect a certain inherent ratio but can be scaled (think photos or videos) 27 | The ratio passed is the ratio of height / width you expect 28 | 29 | For a ratio 0.5, the spec will have a flat rectangle shape 30 | _ _ _ _ 31 | | | 32 | |_ _ _ _| 33 | 34 | For a ratio 2.0, the spec will be twice as tall as it is wide 35 | _ _ 36 | | | 37 | | | 38 | | | 39 | |_ _| 40 | 41 | **/ 42 | @interface ASRatioLayoutSpec : ASLayoutSpec 43 | 44 | @property (nonatomic, assign) CGFloat ratio; 45 | 46 | + (instancetype)ratioLayoutSpecWithRatio:(CGFloat)ratio child:(id)child AS_WARN_UNUSED_RESULT; 47 | 48 | @end 49 | 50 | NS_ASSUME_NONNULL_END 51 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Layout/ASYogaLayoutSpec.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASYogaLayoutSpec.h 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | 15 | #if YOGA /* YOGA */ 16 | 17 | #import 18 | #import 19 | 20 | @interface ASYogaLayoutSpec : ASLayoutSpec 21 | @property (nonatomic, strong, nonnull) ASDisplayNode *rootNode; 22 | @end 23 | 24 | #endif /* YOGA */ 25 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASBasicImageDownloaderInternal.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASBasicImageDownloaderInternal.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | @interface ASBasicImageDownloaderContext : NSObject 19 | 20 | + (ASBasicImageDownloaderContext *)contextForURL:(NSURL *)URL; 21 | 22 | @property (nonatomic, strong, readonly) NSURL *URL; 23 | @property (nonatomic, weak) NSURLSessionTask *sessionTask; 24 | 25 | - (BOOL)isCancelled; 26 | - (void)cancel; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASCollectionLayoutCache.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASCollectionLayoutCache.h 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | #import 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | @class ASCollectionLayoutContext, ASCollectionLayoutState; 19 | 20 | /// A thread-safe cache for ASCollectionLayoutContext-ASCollectionLayoutState pairs 21 | AS_SUBCLASSING_RESTRICTED 22 | @interface ASCollectionLayoutCache : NSObject 23 | 24 | - (nullable ASCollectionLayoutState *)layoutForContext:(ASCollectionLayoutContext *)context; 25 | 26 | - (void)setLayout:(ASCollectionLayoutState *)layout forContext:(ASCollectionLayoutContext *)context; 27 | 28 | - (void)removeLayoutForContext:(ASCollectionLayoutContext *)context; 29 | 30 | - (void)removeAllLayouts; 31 | 32 | @end 33 | 34 | NS_ASSUME_NONNULL_END 35 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASCollectionLayoutDefines.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASCollectionLayoutDefines.h 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | 15 | #import 16 | #import 17 | #import 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | ASDISPLAYNODE_EXTERN_C_BEGIN 22 | 23 | FOUNDATION_EXPORT ASSizeRange ASSizeRangeForCollectionLayoutThatFitsViewportSize(CGSize viewportSize, ASScrollDirection scrollableDirections) AS_WARN_UNUSED_RESULT; 24 | 25 | ASDISPLAYNODE_EXTERN_C_END 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASCollectionLayoutDefines.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASCollectionLayoutDefines.m 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | 15 | extern ASSizeRange ASSizeRangeForCollectionLayoutThatFitsViewportSize(CGSize viewportSize, ASScrollDirection scrollableDirections) 16 | { 17 | ASSizeRange sizeRange = ASSizeRangeUnconstrained; 18 | if (ASScrollDirectionContainsVerticalDirection(scrollableDirections) == NO) { 19 | sizeRange.min.height = viewportSize.height; 20 | sizeRange.max.height = viewportSize.height; 21 | } 22 | if (ASScrollDirectionContainsHorizontalDirection(scrollableDirections) == NO) { 23 | sizeRange.min.width = viewportSize.width; 24 | sizeRange.max.width = viewportSize.width; 25 | } 26 | return sizeRange; 27 | } 28 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASCollectionLayoutState+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASCollectionLayoutState+Private.h 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | #import 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | @interface ASCollectionLayoutState (Private) 19 | 20 | /** 21 | * Remove and returns layout attributes for unmeasured elements that intersect the specified rect 22 | * 23 | * @discussion This method is atomic and thread-safe 24 | */ 25 | - (nullable ASPageToLayoutAttributesTable *)getAndRemoveUnmeasuredLayoutAttributesPageTableInRect:(CGRect)rect; 26 | 27 | @end 28 | 29 | NS_ASSUME_NONNULL_END 30 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASCollectionViewFlowLayoutInspector.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASCollectionViewFlowLayoutInspector.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | @class ASCollectionView; 23 | @class UICollectionViewFlowLayout; 24 | 25 | /** 26 | * A layout inspector implementation specific for the sizing behavior of UICollectionViewFlowLayouts 27 | */ 28 | AS_SUBCLASSING_RESTRICTED 29 | @interface ASCollectionViewFlowLayoutInspector : NSObject 30 | 31 | @property (nonatomic, weak, readonly) UICollectionViewFlowLayout *layout; 32 | 33 | - (instancetype)init NS_UNAVAILABLE; 34 | - (instancetype)initWithFlowLayout:(UICollectionViewFlowLayout *)flowLayout NS_DESIGNATED_INITIALIZER; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASControlTargetAction.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASControlTargetAction.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | /** 21 | @abstract ASControlTargetAction stores target action pairs registered for specific ASControlNodeEvent values. 22 | */ 23 | @interface ASControlTargetAction : NSObject 24 | 25 | /** 26 | The action to be called on the registered target. 27 | */ 28 | @property (nonatomic, readwrite, assign) SEL action; 29 | 30 | /** 31 | Event handler target. The specified action will be called on this object. 32 | */ 33 | @property (nonatomic, readwrite, weak) id target; 34 | 35 | /** 36 | Indicated whether this target was created without a target, so the action should travel up in the responder chain. 37 | */ 38 | @property (nonatomic, readonly) BOOL createdWithNoTarget; 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASDefaultPlayButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASDefaultPlayButton.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | @interface ASDefaultPlayButton : ASButtonNode 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASDefaultPlaybackButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASDefaultPlaybackButton.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | typedef NS_ENUM(NSInteger, ASDefaultPlaybackButtonType) { 21 | ASDefaultPlaybackButtonTypePlay, 22 | ASDefaultPlaybackButtonTypePause 23 | }; 24 | 25 | @interface ASDefaultPlaybackButton : ASControlNode 26 | @property (nonatomic, assign) ASDefaultPlaybackButtonType buttonType; 27 | @end 28 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASDisplayNode+DebugTiming.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASDisplayNode+DebugTiming.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | @interface ASDisplayNode (DebugTiming) 21 | 22 | @property (nonatomic, readonly) NSTimeInterval debugTimeToCreateView; 23 | @property (nonatomic, readonly) NSTimeInterval debugTimeToApplyPendingState; 24 | @property (nonatomic, readonly) NSTimeInterval debugTimeToAddSubnodeViews; 25 | @property (nonatomic, readonly) NSTimeInterval debugTimeForDidLoad; 26 | 27 | - (NSTimeInterval)debugAllCreationTime; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASDisplayNode+FrameworkSubclasses.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASDisplayNode+FrameworkSubclasses.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | // 19 | // The following methods are ONLY for use by _ASDisplayLayer, _ASDisplayView, and ASDisplayNode. 20 | // These methods must never be called or overridden by other classes. 21 | // 22 | 23 | #import 24 | #import 25 | 26 | // These are included because most internal subclasses need it. 27 | #import 28 | #import 29 | 30 | NS_ASSUME_NONNULL_BEGIN 31 | 32 | @interface ASDisplayNode () 33 | { 34 | // Protects access to _view, _layer, _pendingViewState, _subnodes, _supernode, and other properties which are accessed from multiple threads. 35 | @package 36 | ASDN::RecursiveMutex __instanceLock__; 37 | } 38 | @end 39 | 40 | NS_ASSUME_NONNULL_END 41 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASDisplayNodeLayout.mm: -------------------------------------------------------------------------------- 1 | // 2 | // ASDisplayNodeLayout.mm 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | BOOL ASDisplayNodeLayout::isValid(ASSizeRange theConstrainedSize, CGSize theParentSize, NSUInteger versionArg) 21 | { 22 | return version >= versionArg 23 | && layout != nil 24 | && CGSizeEqualToSize(parentSize, theParentSize) 25 | && ASSizeRangeEqualToSizeRange(constrainedSize, theConstrainedSize); 26 | } 27 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASDisplayNodeTipState.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASDisplayNodeTipState.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | @class ASDisplayNode, ASTipNode; 22 | 23 | NS_ASSUME_NONNULL_BEGIN 24 | 25 | AS_SUBCLASSING_RESTRICTED 26 | @interface ASDisplayNodeTipState : NSObject 27 | 28 | - (instancetype)initWithNode:(ASDisplayNode *)node NS_DESIGNATED_INITIALIZER; 29 | 30 | - (instancetype)init NS_UNAVAILABLE; 31 | 32 | /// Unsafe because once the node is deallocated, we will not be able to access the tip state. 33 | @property (nonatomic, unsafe_unretained, readonly) ASDisplayNode *node; 34 | 35 | /// Main-thread-only. 36 | @property (nonatomic, strong, nullable) ASTipNode *tipNode; 37 | 38 | @end 39 | 40 | NS_ASSUME_NONNULL_END 41 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASDisplayNodeTipState.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASDisplayNodeTipState.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import "ASDisplayNodeTipState.h" 19 | 20 | @interface ASDisplayNodeTipState () 21 | @end 22 | 23 | @implementation ASDisplayNodeTipState 24 | 25 | - (instancetype)initWithNode:(ASDisplayNode *)node 26 | { 27 | if (self = [super init]) { 28 | _node = node; 29 | } 30 | return self; 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASIGListAdapterBasedDataSource.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASIGListAdapterBasedDataSource.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | #if AS_IG_LIST_KIT 21 | 22 | #import 23 | #import 24 | #import 25 | 26 | NS_ASSUME_NONNULL_BEGIN 27 | 28 | AS_SUBCLASSING_RESTRICTED 29 | @interface ASIGListAdapterBasedDataSource : NSObject 30 | 31 | - (instancetype)initWithListAdapter:(IGListAdapter *)listAdapter; 32 | 33 | @end 34 | 35 | #endif 36 | 37 | NS_ASSUME_NONNULL_END 38 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASImageNode+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASImageNode+Private.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #pragma once 19 | 20 | @interface ASImageNode (Private) 21 | 22 | - (void)_locked_setImage:(UIImage *)image; 23 | - (UIImage *)_locked_Image; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASLayerBackingTipProvider.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASLayerBackingTipProvider.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import "ASTipProvider.h" 19 | #import 20 | 21 | #if AS_ENABLE_TIPS 22 | 23 | NS_ASSUME_NONNULL_BEGIN 24 | 25 | AS_SUBCLASSING_RESTRICTED 26 | @interface ASLayerBackingTipProvider : ASTipProvider 27 | 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END 31 | 32 | #endif // AS_ENABLE_TIPS 33 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASResponderChainEnumerator.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASResponderChainEnumerator.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | NS_ASSUME_NONNULL_BEGIN 22 | 23 | AS_SUBCLASSING_RESTRICTED 24 | @interface ASResponderChainEnumerator : NSEnumerator 25 | 26 | - (instancetype)initWithResponder:(UIResponder *)responder; 27 | 28 | @end 29 | 30 | @interface UIResponder (ASResponderChainEnumerator) 31 | 32 | - (ASResponderChainEnumerator *)asdk_responderChainEnumerator; 33 | 34 | @end 35 | 36 | 37 | NS_ASSUME_NONNULL_END 38 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASSection.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASSection.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | @implementation ASSection 22 | 23 | - (instancetype)initWithSectionID:(NSInteger)sectionID context:(id)context 24 | { 25 | self = [super init]; 26 | if (self) { 27 | _sectionID = sectionID; 28 | _context = context; 29 | } 30 | return self; 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASTip.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASTip.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import "ASTip.h" 19 | 20 | #if AS_ENABLE_TIPS 21 | 22 | #import 23 | 24 | @implementation ASTip 25 | 26 | - (instancetype)initWithNode:(ASDisplayNode *)node 27 | kind:(ASTipKind)kind 28 | format:(NSString *)format, ... 29 | { 30 | if (self = [super init]) { 31 | _node = node; 32 | _kind = kind; 33 | va_list args; 34 | va_start(args, format); 35 | _text = [[NSString alloc] initWithFormat:format arguments:args]; 36 | va_end(args); 37 | } 38 | return self; 39 | } 40 | 41 | @end 42 | 43 | #endif // AS_ENABLE_TIPS 44 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASTipNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTipNode.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | #if AS_ENABLE_TIPS 22 | 23 | @class ASTip; 24 | 25 | NS_ASSUME_NONNULL_BEGIN 26 | 27 | /** 28 | * ASTipNode will send these up the responder chain. 29 | */ 30 | @protocol ASTipNodeActions 31 | - (void)didTapTipNode:(id)sender; 32 | @end 33 | 34 | AS_SUBCLASSING_RESTRICTED 35 | @interface ASTipNode : ASControlNode 36 | 37 | - (instancetype)initWithTip:(ASTip *)tip NS_DESIGNATED_INITIALIZER; 38 | 39 | - (instancetype)init NS_UNAVAILABLE; 40 | 41 | @property (nonatomic, strong, readonly) ASTip *tip; 42 | 43 | @end 44 | 45 | NS_ASSUME_NONNULL_END 46 | 47 | #endif // AS_ENABLE_TIPS 48 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASTipNode.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASTipNode.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import "ASTipNode.h" 19 | 20 | #if AS_ENABLE_TIPS 21 | 22 | @implementation ASTipNode 23 | 24 | - (instancetype)initWithTip:(ASTip *)tip 25 | { 26 | if (self = [super init]) { 27 | self.backgroundColor = [UIColor colorWithRed:0 green:0.7 blue:0.2 alpha:0.3]; 28 | _tip = tip; 29 | [self addTarget:nil action:@selector(didTapTipNode:) forControlEvents:ASControlNodeEventTouchUpInside]; 30 | } 31 | return self; 32 | } 33 | 34 | @end 35 | 36 | #endif // AS_ENABLE_TIPS 37 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASTipProvider.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTipProvider.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | #if AS_ENABLE_TIPS 22 | 23 | @class ASDisplayNode, ASTip; 24 | 25 | NS_ASSUME_NONNULL_BEGIN 26 | 27 | /** 28 | * An abstract superclass for all tip providers. 29 | */ 30 | @interface ASTipProvider : NSObject 31 | 32 | /** 33 | * The provider looks at the node's current situation and 34 | * generates a tip, if any, to add to the node. 35 | * 36 | * Subclasses must override this. 37 | */ 38 | - (nullable ASTip *)tipForNode:(ASDisplayNode *)node; 39 | 40 | @end 41 | 42 | @interface ASTipProvider (Lookup) 43 | 44 | @property (class, nonatomic, copy, readonly) NSArray<__kindof ASTipProvider *> *all; 45 | 46 | @end 47 | 48 | NS_ASSUME_NONNULL_END 49 | 50 | #endif // AS_ENABLE_TIPS 51 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASTipProvider.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASTipProvider.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import "ASTipProvider.h" 19 | 20 | #if AS_ENABLE_TIPS 21 | 22 | #import 23 | 24 | // Concrete classes 25 | #import 26 | 27 | @implementation ASTipProvider 28 | 29 | - (ASTip *)tipForNode:(ASDisplayNode *)node 30 | { 31 | ASDisplayNodeFailAssert(@"Subclasses must override %@", NSStringFromSelector(_cmd)); 32 | return nil; 33 | } 34 | 35 | @end 36 | 37 | @implementation ASTipProvider (Lookup) 38 | 39 | + (NSArray *)all 40 | { 41 | static NSArray *providers; 42 | static dispatch_once_t onceToken; 43 | dispatch_once(&onceToken, ^{ 44 | providers = @[ [ASLayerBackingTipProvider new] ]; 45 | }); 46 | return providers; 47 | } 48 | 49 | @end 50 | 51 | #endif // AS_ENABLE_TIPS 52 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASTipsController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTipsController.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | #if AS_ENABLE_TIPS 22 | 23 | @class ASDisplayNode; 24 | 25 | NS_ASSUME_NONNULL_BEGIN 26 | 27 | AS_SUBCLASSING_RESTRICTED 28 | @interface ASTipsController : NSObject 29 | 30 | /** 31 | * The shared tip controller instance. 32 | */ 33 | @property (class, strong, readonly) ASTipsController *shared; 34 | 35 | #pragma mark - Node Event Hooks 36 | 37 | /** 38 | * Informs the controller that the sender did enter the visible range. 39 | * 40 | * The controller will run a pass with its tip providers, adding tips as needed. 41 | */ 42 | - (void)nodeDidAppear:(ASDisplayNode *)node; 43 | 44 | @end 45 | 46 | NS_ASSUME_NONNULL_END 47 | 48 | #endif // AS_ENABLE_TIPS 49 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/ASTipsWindow.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTipsWindow.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | #if AS_ENABLE_TIPS 22 | 23 | @class ASDisplayNode, ASDisplayNodeTipState; 24 | 25 | NS_ASSUME_NONNULL_BEGIN 26 | 27 | /** 28 | * A window that shows tips. This was originally meant to be a view controller 29 | * but UIKit will not manage view controllers in non-key windows correctly AT ALL 30 | * as of the time of this writing. 31 | */ 32 | AS_SUBCLASSING_RESTRICTED 33 | @interface ASTipsWindow : UIWindow 34 | 35 | /// The main application window that the tips are tracking. 36 | @property (nonatomic, weak) UIWindow *mainWindow; 37 | 38 | @property (nonatomic, copy, nullable) NSMapTable *nodeToTipStates; 39 | 40 | @end 41 | 42 | NS_ASSUME_NONNULL_END 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/Layout/ASLayoutElementStylePrivate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASLayoutElementStylePrivate.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #pragma once 19 | 20 | #import 21 | 22 | @interface ASLayoutElementStyle () 23 | 24 | /** 25 | * @abstract The object that acts as the delegate of the style. 26 | * 27 | * @discussion The delegate must adopt the ASLayoutElementStyleDelegate protocol. The delegate is not retained. 28 | */ 29 | @property (nullable, nonatomic, weak) id delegate; 30 | 31 | /** 32 | * @abstract A size constraint that should apply to this ASLayoutElement. 33 | */ 34 | @property (nonatomic, assign, readonly) ASLayoutElementSize size; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/Layout/ASLayoutSpecPrivate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASLayoutSpecPrivate.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | #if DEBUG 22 | #define AS_DEDUPE_LAYOUT_SPEC_TREE 1 23 | #else 24 | #define AS_DEDUPE_LAYOUT_SPEC_TREE 0 25 | #endif 26 | 27 | NS_ASSUME_NONNULL_BEGIN 28 | 29 | @interface ASLayoutSpec() { 30 | ASDN::RecursiveMutex __instanceLock__; 31 | std::atomic _primitiveTraitCollection; 32 | ASLayoutElementStyle *_style; 33 | NSMutableArray *_childrenArray; 34 | } 35 | 36 | #if AS_DEDUPE_LAYOUT_SPEC_TREE 37 | /** 38 | * Recursively search the subtree for elements that occur more than once. 39 | */ 40 | - (nullable NSHashTable> *)findDuplicatedElementsInSubtree; 41 | #endif 42 | 43 | @end 44 | 45 | NS_ASSUME_NONNULL_END 46 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/Layout/ASStackPositionedLayout.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASStackPositionedLayout.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | #import 21 | 22 | /** Represents a set of laid out and positioned stack layout children. */ 23 | struct ASStackPositionedLayout { 24 | const std::vector items; 25 | /** Final size of the stack */ 26 | const CGSize size; 27 | 28 | /** Given an unpositioned layout, computes the positions each child should be placed at. */ 29 | static ASStackPositionedLayout compute(const ASStackUnpositionedLayout &unpositionedLayout, 30 | const ASStackLayoutSpecStyle &style, 31 | const ASSizeRange &constrainedSize); 32 | }; 33 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/TextExperiment/Utility/NSParagraphStyle+ASText.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSParagraphStyle+ASText.h 3 | // Modified from YYText 4 | // 5 | // Created by ibireme on 14/10/7. 6 | // Copyright (c) 2015 ibireme. 7 | // 8 | // This source code is licensed under the MIT-style license found in the 9 | // LICENSE file in the root directory of this source tree. 10 | // 11 | 12 | #import 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | /** 17 | Provides extensions for `NSParagraphStyle` to work with CoreText. 18 | */ 19 | @interface NSParagraphStyle (ASText) 20 | 21 | /** 22 | Creates a new NSParagraphStyle object from the CoreText Style. 23 | 24 | @param CTStyle CoreText Paragraph Style. 25 | 26 | @return a new NSParagraphStyle 27 | */ 28 | + (nullable NSParagraphStyle *)as_styleWithCTStyle:(CTParagraphStyleRef)CTStyle; 29 | 30 | /** 31 | Creates and returns a CoreText Paragraph Style. (need call CFRelease() after used) 32 | */ 33 | - (nullable CTParagraphStyleRef)as_CTStyle CF_RETURNS_RETAINED; 34 | 35 | @end 36 | 37 | NS_ASSUME_NONNULL_END 38 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/_ASCollectionGalleryLayoutInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // _ASCollectionGalleryLayoutInfo.h 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | 15 | @interface _ASCollectionGalleryLayoutInfo : NSObject 16 | 17 | // Read-only properties 18 | @property (nonatomic, assign, readonly) CGSize itemSize; 19 | @property (nonatomic, assign, readonly) CGFloat minimumLineSpacing; 20 | @property (nonatomic, assign, readonly) CGFloat minimumInteritemSpacing; 21 | @property (nonatomic, assign, readonly) UIEdgeInsets sectionInset; 22 | 23 | - (instancetype)initWithItemSize:(CGSize)itemSize 24 | minimumLineSpacing:(CGFloat)minimumLineSpacing 25 | minimumInteritemSpacing:(CGFloat)minimumInteritemSpacing 26 | sectionInset:(UIEdgeInsets)sectionInset NS_DESIGNATED_INITIALIZER; 27 | 28 | - (instancetype)init __unavailable; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/Texture/Source/Private/_ASCollectionGalleryLayoutItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // _ASCollectionGalleryLayoutItem.h 3 | // Texture 4 | // 5 | // Copyright (c) 2017-present, Pinterest, Inc. All rights reserved. 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | 13 | #import 14 | #import 15 | #import 16 | 17 | @class ASCollectionElement; 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | /** 22 | * A dummy item that represents a collection element to participate in the collection layout calculation process 23 | * without triggering measurement on the actual node of the collection element. 24 | * 25 | * This item always has a fixed size that is the item size passed to it. 26 | */ 27 | AS_SUBCLASSING_RESTRICTED 28 | @interface _ASGalleryLayoutItem : NSObject 29 | 30 | @property (nonatomic, assign, readonly) CGSize itemSize; 31 | @property (nonatomic, weak, readonly) ASCollectionElement *collectionElement; 32 | 33 | - (instancetype)initWithItemSize:(CGSize)itemSize collectionElement:(ASCollectionElement *)collectionElement; 34 | - (instancetype)init __unavailable; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /Pods/Texture/Source/TextKit/ASLayoutManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASLayoutManager.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | #import 20 | 21 | AS_SUBCLASSING_RESTRICTED 22 | @interface ASLayoutManager : NSLayoutManager 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Pods/Texture/Source/TextKit/ASTextKitEntityAttribute.m: -------------------------------------------------------------------------------- 1 | // 2 | // ASTextKitEntityAttribute.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | @implementation ASTextKitEntityAttribute 21 | 22 | - (instancetype)initWithEntity:(id)entity 23 | { 24 | if (self = [super init]) { 25 | _entity = entity; 26 | } 27 | return self; 28 | } 29 | 30 | - (NSUInteger)hash 31 | { 32 | return [_entity hash]; 33 | } 34 | 35 | - (BOOL)isEqual:(id)object 36 | { 37 | if (self == object) { 38 | return YES; 39 | } 40 | if (![object isKindOfClass:[self class]]) { 41 | return NO; 42 | } 43 | ASTextKitEntityAttribute *other = (ASTextKitEntityAttribute *)object; 44 | return _entity == other.entity || [_entity isEqual:other.entity]; 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Pods/Texture/Source/TextKit/ASTextKitRenderer+TextChecking.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTextKitRenderer+TextChecking.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | /** 21 | Application extensions to NSTextCheckingType. We're allowed to do this (see NSTextCheckingAllCustomTypes). 22 | */ 23 | static uint64_t const ASTextKitTextCheckingTypeEntity = 1ULL << 33; 24 | static uint64_t const ASTextKitTextCheckingTypeTruncation = 1ULL << 34; 25 | 26 | @class ASTextKitEntityAttribute; 27 | 28 | @interface ASTextKitTextCheckingResult : NSTextCheckingResult 29 | @property (nonatomic, strong, readonly) ASTextKitEntityAttribute *entityAttribute; 30 | @end 31 | 32 | @interface ASTextKitRenderer (TextChecking) 33 | 34 | - (NSTextCheckingResult *)textCheckingResultAtPoint:(CGPoint)point; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Pods/Texture/Source/TextKit/ASTextKitTailTruncater.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTextKitTailTruncater.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | #import 21 | #import 22 | 23 | AS_SUBCLASSING_RESTRICTED 24 | @interface ASTextKitTailTruncater : NSObject 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/Texture/Source/TextKit/ASTextNodeTypes.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASTextNodeTypes.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #pragma once 19 | 20 | // Use this attribute name to add "word kerning" 21 | static NSString *const ASTextNodeWordKerningAttributeName = @"ASAttributedStringWordKerning"; 22 | -------------------------------------------------------------------------------- /Pods/Texture/Source/UIResponder+AsyncDisplayKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+AsyncDisplayKit.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | @interface UIResponder (AsyncDisplayKit) 23 | 24 | /** 25 | * The nearest view controller above this responder, if one exists. 26 | * 27 | * This property must be accessed on the main thread. 28 | */ 29 | @property (nonatomic, nullable, readonly) __kindof UIViewController *asdk_associatedViewController; 30 | 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /Pods/Texture/Source/UIResponder+AsyncDisplayKit.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+AsyncDisplayKit.m 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #import "UIResponder+AsyncDisplayKit.h" 19 | 20 | #import 21 | #import 22 | #import 23 | 24 | @implementation UIResponder (AsyncDisplayKit) 25 | 26 | - (__kindof UIViewController *)asdk_associatedViewController 27 | { 28 | ASDisplayNodeAssertMainThread(); 29 | 30 | for (UIResponder *responder in [self asdk_responderChainEnumerator]) { 31 | UIViewController *vc = ASDynamicCast(responder, UIViewController); 32 | if (vc) { 33 | return vc; 34 | } 35 | } 36 | return nil; 37 | } 38 | 39 | @end 40 | 41 | -------------------------------------------------------------------------------- /Pods/Texture/Source/tvOS/ASControlNode+tvOS.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASControlNode+tvOS.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #if TARGET_OS_TV 19 | #import 20 | 21 | @interface ASControlNode (tvOS) 22 | 23 | @end 24 | #endif 25 | -------------------------------------------------------------------------------- /Pods/Texture/Source/tvOS/ASImageNode+tvOS.h: -------------------------------------------------------------------------------- 1 | // 2 | // ASImageNode+tvOS.h 3 | // Texture 4 | // 5 | // Copyright (c) 2014-present, Facebook, Inc. All rights reserved. 6 | // This source code is licensed under the BSD-style license found in the 7 | // LICENSE file in the /ASDK-Licenses directory of this source tree. An additional 8 | // grant of patent rights can be found in the PATENTS file in the same directory. 9 | // 10 | // Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present, 11 | // Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License"); 12 | // you may not use this file except in compliance with the License. 13 | // You may obtain a copy of the License at 14 | // 15 | // http://www.apache.org/licenses/LICENSE-2.0 16 | // 17 | 18 | #if TARGET_OS_TV 19 | #import 20 | 21 | @interface ASImageNode (tvOS) 22 | @end 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /Pods/YYModel/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 ibireme 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Pods/YYModel/YYModel/YYModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // YYModel.h 3 | // YYModel 4 | // 5 | // Created by ibireme on 15/5/10. 6 | // Copyright (c) 2015 ibireme. 7 | // 8 | // This source code is licensed under the MIT-style license found in the 9 | // LICENSE file in the root directory of this source tree. 10 | // 11 | 12 | #import 13 | 14 | #if __has_include() 15 | FOUNDATION_EXPORT double YYModelVersionNumber; 16 | FOUNDATION_EXPORT const unsigned char YYModelVersionString[]; 17 | #import 18 | #import 19 | #else 20 | #import "NSObject+YYModel.h" 21 | #import "YYClassInfo.h" 22 | #endif 23 | -------------------------------------------------------------------------------- /PrefixHeader.pch: -------------------------------------------------------------------------------- 1 | // 2 | // PrefixHeader.pch 3 | // ASDKDemo 4 | // 5 | // Created by Dee on 2018/1/31. 6 | // Copyright © 2018年 Dee. All rights reserved. 7 | // 8 | 9 | #ifndef PrefixHeader_pch 10 | #define PrefixHeader_pch 11 | 12 | // Include any system framework and library headers here that should be included in all compilation units. 13 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. 14 | 15 | #import "ASCategory.h" 16 | #import "UIColor+Hex.h" 17 | 18 | #endif /* PrefixHeader_pch */ 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ASDK-Demo 2 | 3 | Texture(ASDK) Demo 4 | 5 | ## 相关文章 6 | 7 | iOS 开发一定要尝试的 Texture(ASDK) 8 | 9 | -> **[CocoaChina](http://blog.cocoachina.com/article/64746)** 10 | 11 | -> **[Blog 推荐](https://didee.cn/2018/01/29/iOS-ASDK/)** 12 | --------------------------------------------------------------------------------