├── .gitignore
├── .travis.yml
├── Example
├── FirstLineHeadIndentAnimation.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── FirstLineHeadIndentAnimation-Example.xcscheme
├── FirstLineHeadIndentAnimation.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
├── FirstLineHeadIndentAnimation
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── FirstLineHeadIndentAnimation-Info.plist
│ ├── FirstLineHeadIndentAnimation-Prefix.pch
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── collection_selected.imageset
│ │ │ ├── Contents.json
│ │ │ ├── collection_selected@2x.png
│ │ │ └── collection_selected@3x.png
│ │ ├── home_icon_play.imageset
│ │ │ ├── Contents.json
│ │ │ ├── home_icon_play@2x.png
│ │ │ └── home_icon_play@3x.png
│ │ ├── hotspot_icon_information.imageset
│ │ │ ├── Contents.json
│ │ │ ├── hotspot_icon_information@2x.png
│ │ │ └── hotspot_icon_information@3x.png
│ │ ├── hotspot_icon_interest_authentication.imageset
│ │ │ ├── Contents.json
│ │ │ ├── hotspot_icon_interest_authentication@2x.png
│ │ │ └── hotspot_icon_interest_authentication@3x.png
│ │ ├── hotspot_icon_like_normat.imageset
│ │ │ ├── Contents.json
│ │ │ ├── hotspot_icon_like_normat@2x.png
│ │ │ └── hotspot_icon_like_normat@3x.png
│ │ ├── hotspot_icon_like_selected.imageset
│ │ │ ├── Contents.json
│ │ │ ├── hotspot_icon_like_selected@2x.png
│ │ │ └── hotspot_icon_like_selected@3x.png
│ │ ├── hotspot_icon_more.imageset
│ │ │ ├── Contents.json
│ │ │ ├── hotspot_icon_more@2x.png
│ │ │ └── hotspot_icon_more@3x.png
│ │ ├── hotspot_icon_professional_authentication.imageset
│ │ │ ├── Contents.json
│ │ │ ├── hotspot_icon_professional_authentication@2x.png
│ │ │ └── hotspot_icon_professional_authentication@3x.png
│ │ ├── hotspot_icon_share.imageset
│ │ │ ├── Contents.json
│ │ │ ├── hotspot_icon_share@2x.png
│ │ │ └── hotspot_icon_share@3x.png
│ │ ├── my_icon_colours.imageset
│ │ │ ├── Contents.json
│ │ │ ├── my_icon_colours@2x.png
│ │ │ └── my_icon_colours@3x.png
│ │ ├── panda_error.imageset
│ │ │ ├── Contents.json
│ │ │ ├── panda_error@2x.png
│ │ │ └── panda_error@3x.png
│ │ ├── panda_favorite.imageset
│ │ │ ├── Contents.json
│ │ │ ├── panda_favorite@2x.png
│ │ │ └── panda_favorite@3x.png
│ │ ├── panda_networkerror.imageset
│ │ │ ├── Contents.json
│ │ │ ├── panda_networkerror@2x.png
│ │ │ └── panda_networkerror@3x.png
│ │ ├── player_pugc_collection.imageset
│ │ │ ├── Contents.json
│ │ │ ├── player_pugc_collection@2x.png
│ │ │ └── player_pugc_collection@3x.png
│ │ └── rect_shadow.imageset
│ │ │ ├── Contents.json
│ │ │ ├── rect_shadow@2x.png
│ │ │ └── rect_shadow@3x.png
│ ├── JPAppDelegate.h
│ ├── JPAppDelegate.m
│ ├── JPWebImage
│ │ ├── JPImageView.h
│ │ ├── JPImageView.m
│ │ ├── JPRoundImageManager.h
│ │ ├── JPRoundImageManager.m
│ │ ├── JPWebImageHeader.h
│ │ ├── JPWebImageManager.h
│ │ ├── JPWebImageManager.m
│ │ ├── UIButton+JPExtension.h
│ │ ├── UIButton+JPExtension.m
│ │ ├── UIImageView+JPExtension.h
│ │ ├── UIImageView+JPExtension.m
│ │ ├── YYWebImageHelper.h
│ │ └── YYWebImageHelper.m
│ ├── PUGC
│ │ ├── Controller
│ │ │ ├── PUGCViewController.h
│ │ │ └── PUGCViewController.m
│ │ ├── Model
│ │ │ ├── WTVPUGCProfileModel.h
│ │ │ ├── WTVPUGCProfileModel.m
│ │ │ ├── pugc_0.json
│ │ │ └── pugc_1.json
│ │ ├── View
│ │ │ ├── JPFadeFlowLayout.h
│ │ │ ├── JPFadeFlowLayout.m
│ │ │ ├── WLEmptyStateView.h
│ │ │ ├── WLEmptyStateView.m
│ │ │ ├── WTVPUGCOptionButton.h
│ │ │ ├── WTVPUGCOptionButton.m
│ │ │ ├── WTVPUGCProfileCell.h
│ │ │ ├── WTVPUGCProfileCell.m
│ │ │ ├── WTVPUGCProfileCollectionView.h
│ │ │ ├── WTVPUGCProfileCollectionView.m
│ │ │ ├── WTVPUGCProfileIcon.h
│ │ │ ├── WTVPUGCProfileIcon.m
│ │ │ ├── WTVPUGCProfileIconView.h
│ │ │ ├── WTVPUGCProfileIconView.m
│ │ │ ├── WTVPUGCProfilePlayView.h
│ │ │ └── WTVPUGCProfilePlayView.m
│ │ └── ViewModel
│ │ │ ├── WTVPUGCProfileCellModel.h
│ │ │ └── WTVPUGCProfileCellModel.m
│ ├── UIApplication+JPExtension.h
│ ├── UIApplication+JPExtension.m
│ ├── ViewController.h
│ ├── ViewController.m
│ ├── en.lproj
│ │ └── InfoPlist.strings
│ └── main.m
├── Podfile
├── Podfile.lock
├── Pods
│ ├── JPBasic
│ │ ├── JPBasic
│ │ │ └── Classes
│ │ │ │ ├── JPCategory
│ │ │ │ ├── Foundation
│ │ │ │ │ ├── NSDate+JPExtension.h
│ │ │ │ │ ├── NSDate+JPExtension.m
│ │ │ │ │ ├── NSObject+JPExtension.h
│ │ │ │ │ ├── NSObject+JPExtension.m
│ │ │ │ │ ├── NSString+JPExtension.h
│ │ │ │ │ └── NSString+JPExtension.m
│ │ │ │ └── UIKit
│ │ │ │ │ ├── UIColor+JPExtension.h
│ │ │ │ │ ├── UIColor+JPExtension.m
│ │ │ │ │ ├── UIImage+JPExtension.h
│ │ │ │ │ ├── UIImage+JPExtension.m
│ │ │ │ │ ├── UINavigationBar+JPExtension.h
│ │ │ │ │ ├── UINavigationBar+JPExtension.m
│ │ │ │ │ ├── UIScrollView+JPExtension.h
│ │ │ │ │ ├── UIScrollView+JPExtension.m
│ │ │ │ │ ├── UIView+JPExtension.h
│ │ │ │ │ ├── UIView+JPExtension.m
│ │ │ │ │ ├── UIView+JPPOP.h
│ │ │ │ │ ├── UIView+JPPOP.m
│ │ │ │ │ ├── UIViewController+JPExtension.h
│ │ │ │ │ ├── UIViewController+JPExtension.m
│ │ │ │ │ ├── UIWindow+JPExtension.h
│ │ │ │ │ └── UIWindow+JPExtension.m
│ │ │ │ ├── JPConst
│ │ │ │ ├── JPConstant.h
│ │ │ │ ├── JPConstant.m
│ │ │ │ └── JPMacro.h
│ │ │ │ ├── JPCustomUnit
│ │ │ │ ├── Button
│ │ │ │ │ ├── JPCustomLayoutButton.h
│ │ │ │ │ ├── JPCustomLayoutButton.m
│ │ │ │ │ ├── JPIconButton.h
│ │ │ │ │ ├── JPIconButton.m
│ │ │ │ │ ├── JPMaskButton.h
│ │ │ │ │ ├── JPMaskButton.m
│ │ │ │ │ ├── JPNoHighlightButton.h
│ │ │ │ │ ├── JPNoHighlightButton.m
│ │ │ │ │ ├── JPScreenBorderButton.h
│ │ │ │ │ ├── JPScreenBorderButton.m
│ │ │ │ │ ├── JPUnderlineButton.h
│ │ │ │ │ └── JPUnderlineButton.m
│ │ │ │ ├── Model
│ │ │ │ │ ├── JPProxy.h
│ │ │ │ │ └── JPProxy.m
│ │ │ │ ├── View
│ │ │ │ │ ├── JPBadgeLabel.h
│ │ │ │ │ ├── JPBadgeLabel.m
│ │ │ │ │ ├── JPBasicPopView.h
│ │ │ │ │ ├── JPBasicPopView.m
│ │ │ │ │ ├── JPBounceView.h
│ │ │ │ │ ├── JPBounceView.m
│ │ │ │ │ ├── JPEmptyStateView.h
│ │ │ │ │ ├── JPEmptyStateView.m
│ │ │ │ │ ├── JPFPSLabel.h
│ │ │ │ │ ├── JPFPSLabel.m
│ │ │ │ │ ├── JPGradientView.h
│ │ │ │ │ ├── JPGradientView.m
│ │ │ │ │ ├── JPMaskView.h
│ │ │ │ │ ├── JPMaskView.m
│ │ │ │ │ ├── JPScreenEdgeLeftScrollView.h
│ │ │ │ │ ├── JPScreenEdgeLeftScrollView.m
│ │ │ │ │ ├── JPSeparateHeaderFooterView.h
│ │ │ │ │ ├── JPSeparateHeaderFooterView.m
│ │ │ │ │ ├── JPTextField.h
│ │ │ │ │ ├── JPTextField.m
│ │ │ │ │ ├── JPTextView.h
│ │ │ │ │ └── JPTextView.m
│ │ │ │ └── ViewController
│ │ │ │ │ ├── JPSubCollectionViewController.h
│ │ │ │ │ ├── JPSubCollectionViewController.m
│ │ │ │ │ ├── JPSubScrollViewController.h
│ │ │ │ │ ├── JPSubScrollViewController.m
│ │ │ │ │ ├── JPSubTableViewController.h
│ │ │ │ │ ├── JPSubTableViewController.m
│ │ │ │ │ ├── JPViewController.h
│ │ │ │ │ └── JPViewController.m
│ │ │ │ ├── JPProgressHUD
│ │ │ │ ├── JPProgressHUD.h
│ │ │ │ └── JPProgressHUD.m
│ │ │ │ └── JPTool
│ │ │ │ ├── JPAlertControllerTool.h
│ │ │ │ ├── JPAlertControllerTool.m
│ │ │ │ ├── JPDeviceTool.h
│ │ │ │ ├── JPDeviceTool.m
│ │ │ │ ├── JPFileTool.h
│ │ │ │ ├── JPFileTool.m
│ │ │ │ ├── JPInteractiveTransition.h
│ │ │ │ ├── JPInteractiveTransition.m
│ │ │ │ ├── JPSolveTool.h
│ │ │ │ ├── JPSolveTool.m
│ │ │ │ ├── JPTextLayoutTool.h
│ │ │ │ └── JPTextLayoutTool.m
│ │ ├── LICENSE
│ │ └── README.md
│ ├── Local Podspecs
│ │ └── FirstLineHeadIndentAnimation.podspec.json
│ ├── MJExtension
│ │ ├── LICENSE
│ │ ├── MJExtension
│ │ │ ├── MJExtension.h
│ │ │ ├── MJExtensionConst.h
│ │ │ ├── MJExtensionConst.m
│ │ │ ├── MJFoundation.h
│ │ │ ├── MJFoundation.m
│ │ │ ├── MJProperty.h
│ │ │ ├── MJProperty.m
│ │ │ ├── MJPropertyKey.h
│ │ │ ├── MJPropertyKey.m
│ │ │ ├── MJPropertyType.h
│ │ │ ├── MJPropertyType.m
│ │ │ ├── NSObject+MJClass.h
│ │ │ ├── NSObject+MJClass.m
│ │ │ ├── NSObject+MJCoding.h
│ │ │ ├── NSObject+MJCoding.m
│ │ │ ├── NSObject+MJKeyValue.h
│ │ │ ├── NSObject+MJKeyValue.m
│ │ │ ├── NSObject+MJProperty.h
│ │ │ ├── NSObject+MJProperty.m
│ │ │ ├── NSString+MJExtension.h
│ │ │ └── NSString+MJExtension.m
│ │ └── README.md
│ ├── MJRefresh
│ │ ├── LICENSE
│ │ ├── MJRefresh
│ │ │ ├── Base
│ │ │ │ ├── MJRefreshAutoFooter.h
│ │ │ │ ├── MJRefreshAutoFooter.m
│ │ │ │ ├── MJRefreshBackFooter.h
│ │ │ │ ├── MJRefreshBackFooter.m
│ │ │ │ ├── MJRefreshComponent.h
│ │ │ │ ├── MJRefreshComponent.m
│ │ │ │ ├── MJRefreshFooter.h
│ │ │ │ ├── MJRefreshFooter.m
│ │ │ │ ├── MJRefreshHeader.h
│ │ │ │ └── MJRefreshHeader.m
│ │ │ ├── Custom
│ │ │ │ ├── Footer
│ │ │ │ │ ├── Auto
│ │ │ │ │ │ ├── MJRefreshAutoGifFooter.h
│ │ │ │ │ │ ├── MJRefreshAutoGifFooter.m
│ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h
│ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.m
│ │ │ │ │ │ ├── MJRefreshAutoStateFooter.h
│ │ │ │ │ │ └── MJRefreshAutoStateFooter.m
│ │ │ │ │ └── Back
│ │ │ │ │ │ ├── MJRefreshBackGifFooter.h
│ │ │ │ │ │ ├── MJRefreshBackGifFooter.m
│ │ │ │ │ │ ├── MJRefreshBackNormalFooter.h
│ │ │ │ │ │ ├── MJRefreshBackNormalFooter.m
│ │ │ │ │ │ ├── MJRefreshBackStateFooter.h
│ │ │ │ │ │ └── MJRefreshBackStateFooter.m
│ │ │ │ └── Header
│ │ │ │ │ ├── MJRefreshGifHeader.h
│ │ │ │ │ ├── MJRefreshGifHeader.m
│ │ │ │ │ ├── MJRefreshNormalHeader.h
│ │ │ │ │ ├── MJRefreshNormalHeader.m
│ │ │ │ │ ├── MJRefreshStateHeader.h
│ │ │ │ │ └── MJRefreshStateHeader.m
│ │ │ ├── MJRefresh.bundle
│ │ │ │ ├── arrow@2x.png
│ │ │ │ ├── en.lproj
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── ko.lproj
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── ru.lproj
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── uk.lproj
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── zh-Hans.lproj
│ │ │ │ │ └── Localizable.strings
│ │ │ │ └── zh-Hant.lproj
│ │ │ │ │ └── Localizable.strings
│ │ │ ├── MJRefresh.h
│ │ │ ├── MJRefreshConfig.h
│ │ │ ├── MJRefreshConfig.m
│ │ │ ├── MJRefreshConst.h
│ │ │ ├── MJRefreshConst.m
│ │ │ ├── NSBundle+MJRefresh.h
│ │ │ ├── NSBundle+MJRefresh.m
│ │ │ ├── UIScrollView+MJExtension.h
│ │ │ ├── UIScrollView+MJExtension.m
│ │ │ ├── UIScrollView+MJRefresh.h
│ │ │ ├── UIScrollView+MJRefresh.m
│ │ │ ├── UIView+MJExtension.h
│ │ │ └── UIView+MJExtension.m
│ │ └── README.md
│ ├── Manifest.lock
│ ├── Masonry
│ │ ├── LICENSE
│ │ ├── Masonry
│ │ │ ├── MASCompositeConstraint.h
│ │ │ ├── MASCompositeConstraint.m
│ │ │ ├── MASConstraint+Private.h
│ │ │ ├── MASConstraint.h
│ │ │ ├── MASConstraint.m
│ │ │ ├── MASConstraintMaker.h
│ │ │ ├── MASConstraintMaker.m
│ │ │ ├── MASLayoutConstraint.h
│ │ │ ├── MASLayoutConstraint.m
│ │ │ ├── MASUtilities.h
│ │ │ ├── MASViewAttribute.h
│ │ │ ├── MASViewAttribute.m
│ │ │ ├── MASViewConstraint.h
│ │ │ ├── MASViewConstraint.m
│ │ │ ├── Masonry.h
│ │ │ ├── NSArray+MASAdditions.h
│ │ │ ├── NSArray+MASAdditions.m
│ │ │ ├── NSArray+MASShorthandAdditions.h
│ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h
│ │ │ ├── NSLayoutConstraint+MASDebugAdditions.m
│ │ │ ├── View+MASAdditions.h
│ │ │ ├── View+MASAdditions.m
│ │ │ ├── View+MASShorthandAdditions.h
│ │ │ ├── ViewController+MASAdditions.h
│ │ │ └── ViewController+MASAdditions.m
│ │ └── README.md
│ ├── Pods.xcodeproj
│ │ └── project.pbxproj
│ ├── SVProgressHUD
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── SVProgressHUD
│ │ │ ├── SVIndefiniteAnimatedView.h
│ │ │ ├── SVIndefiniteAnimatedView.m
│ │ │ ├── SVProgressAnimatedView.h
│ │ │ ├── SVProgressAnimatedView.m
│ │ │ ├── SVProgressHUD.bundle
│ │ │ ├── angle-mask.png
│ │ │ ├── angle-mask@2x.png
│ │ │ ├── angle-mask@3x.png
│ │ │ ├── error.png
│ │ │ ├── error@2x.png
│ │ │ ├── error@3x.png
│ │ │ ├── info.png
│ │ │ ├── info@2x.png
│ │ │ ├── info@3x.png
│ │ │ ├── success.png
│ │ │ ├── success@2x.png
│ │ │ └── success@3x.png
│ │ │ ├── SVProgressHUD.h
│ │ │ ├── SVProgressHUD.m
│ │ │ ├── SVRadialGradientLayer.h
│ │ │ └── SVRadialGradientLayer.m
│ ├── Target Support Files
│ │ ├── JPBasic
│ │ │ ├── JPBasic-Info.plist
│ │ │ ├── JPBasic-dummy.m
│ │ │ ├── JPBasic-prefix.pch
│ │ │ ├── JPBasic-umbrella.h
│ │ │ ├── JPBasic.debug.xcconfig
│ │ │ ├── JPBasic.modulemap
│ │ │ └── JPBasic.release.xcconfig
│ │ ├── MJExtension
│ │ │ ├── MJExtension-Info.plist
│ │ │ ├── MJExtension-dummy.m
│ │ │ ├── MJExtension-prefix.pch
│ │ │ ├── MJExtension-umbrella.h
│ │ │ ├── MJExtension.debug.xcconfig
│ │ │ ├── MJExtension.modulemap
│ │ │ └── MJExtension.release.xcconfig
│ │ ├── MJRefresh
│ │ │ ├── MJRefresh-Info.plist
│ │ │ ├── MJRefresh-dummy.m
│ │ │ ├── MJRefresh-prefix.pch
│ │ │ ├── MJRefresh-umbrella.h
│ │ │ ├── MJRefresh.debug.xcconfig
│ │ │ ├── MJRefresh.modulemap
│ │ │ └── MJRefresh.release.xcconfig
│ │ ├── Masonry
│ │ │ ├── Masonry-Info.plist
│ │ │ ├── Masonry-dummy.m
│ │ │ ├── Masonry-prefix.pch
│ │ │ ├── Masonry-umbrella.h
│ │ │ ├── Masonry.debug.xcconfig
│ │ │ ├── Masonry.modulemap
│ │ │ └── Masonry.release.xcconfig
│ │ ├── Pods-FirstLineHeadIndentAnimation_Example
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Example-Info.plist
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Example-acknowledgements.markdown
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Example-acknowledgements.plist
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Example-dummy.m
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Example-frameworks.sh
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Example-umbrella.h
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Example.debug.xcconfig
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Example.modulemap
│ │ │ └── Pods-FirstLineHeadIndentAnimation_Example.release.xcconfig
│ │ ├── Pods-FirstLineHeadIndentAnimation_Tests
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Tests-Info.plist
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Tests-acknowledgements.markdown
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Tests-acknowledgements.plist
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Tests-dummy.m
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Tests-umbrella.h
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Tests.debug.xcconfig
│ │ │ ├── Pods-FirstLineHeadIndentAnimation_Tests.modulemap
│ │ │ └── Pods-FirstLineHeadIndentAnimation_Tests.release.xcconfig
│ │ ├── SVProgressHUD
│ │ │ ├── SVProgressHUD-Info.plist
│ │ │ ├── SVProgressHUD-dummy.m
│ │ │ ├── SVProgressHUD-prefix.pch
│ │ │ ├── SVProgressHUD-umbrella.h
│ │ │ ├── SVProgressHUD.debug.xcconfig
│ │ │ ├── SVProgressHUD.modulemap
│ │ │ └── SVProgressHUD.release.xcconfig
│ │ ├── YYCache
│ │ │ ├── YYCache-Info.plist
│ │ │ ├── YYCache-dummy.m
│ │ │ ├── YYCache-prefix.pch
│ │ │ ├── YYCache-umbrella.h
│ │ │ ├── YYCache.debug.xcconfig
│ │ │ ├── YYCache.modulemap
│ │ │ └── YYCache.release.xcconfig
│ │ ├── YYImage
│ │ │ ├── YYImage-Info.plist
│ │ │ ├── YYImage-dummy.m
│ │ │ ├── YYImage-prefix.pch
│ │ │ ├── YYImage-umbrella.h
│ │ │ ├── YYImage.debug.xcconfig
│ │ │ ├── YYImage.modulemap
│ │ │ └── YYImage.release.xcconfig
│ │ ├── YYText
│ │ │ ├── YYText-Info.plist
│ │ │ ├── YYText-dummy.m
│ │ │ ├── YYText-prefix.pch
│ │ │ ├── YYText-umbrella.h
│ │ │ ├── YYText.debug.xcconfig
│ │ │ ├── YYText.modulemap
│ │ │ └── YYText.release.xcconfig
│ │ ├── YYWebImage
│ │ │ ├── YYWebImage-Info.plist
│ │ │ ├── YYWebImage-dummy.m
│ │ │ ├── YYWebImage-prefix.pch
│ │ │ ├── YYWebImage-umbrella.h
│ │ │ ├── YYWebImage.debug.xcconfig
│ │ │ ├── YYWebImage.modulemap
│ │ │ └── YYWebImage.release.xcconfig
│ │ └── pop
│ │ │ ├── pop-Info.plist
│ │ │ ├── pop-dummy.m
│ │ │ ├── pop-prefix.pch
│ │ │ ├── pop-umbrella.h
│ │ │ ├── pop.debug.xcconfig
│ │ │ ├── pop.modulemap
│ │ │ └── pop.release.xcconfig
│ ├── YYCache
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── YYCache
│ │ │ ├── YYCache.h
│ │ │ ├── YYCache.m
│ │ │ ├── YYDiskCache.h
│ │ │ ├── YYDiskCache.m
│ │ │ ├── YYKVStorage.h
│ │ │ ├── YYKVStorage.m
│ │ │ ├── YYMemoryCache.h
│ │ │ └── YYMemoryCache.m
│ ├── YYImage
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── YYImage
│ │ │ ├── YYAnimatedImageView.h
│ │ │ ├── YYAnimatedImageView.m
│ │ │ ├── YYFrameImage.h
│ │ │ ├── YYFrameImage.m
│ │ │ ├── YYImage.h
│ │ │ ├── YYImage.m
│ │ │ ├── YYImageCoder.h
│ │ │ ├── YYImageCoder.m
│ │ │ ├── YYSpriteSheetImage.h
│ │ │ └── YYSpriteSheetImage.m
│ ├── YYText
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── YYText
│ │ │ ├── Component
│ │ │ ├── YYTextContainerView.h
│ │ │ ├── YYTextContainerView.m
│ │ │ ├── YYTextDebugOption.h
│ │ │ ├── YYTextDebugOption.m
│ │ │ ├── YYTextEffectWindow.h
│ │ │ ├── YYTextEffectWindow.m
│ │ │ ├── YYTextInput.h
│ │ │ ├── YYTextInput.m
│ │ │ ├── YYTextKeyboardManager.h
│ │ │ ├── YYTextKeyboardManager.m
│ │ │ ├── YYTextLayout.h
│ │ │ ├── YYTextLayout.m
│ │ │ ├── YYTextLine.h
│ │ │ ├── YYTextLine.m
│ │ │ ├── YYTextMagnifier.h
│ │ │ ├── YYTextMagnifier.m
│ │ │ ├── YYTextSelectionView.h
│ │ │ └── YYTextSelectionView.m
│ │ │ ├── String
│ │ │ ├── YYTextArchiver.h
│ │ │ ├── YYTextArchiver.m
│ │ │ ├── YYTextAttribute.h
│ │ │ ├── YYTextAttribute.m
│ │ │ ├── YYTextParser.h
│ │ │ ├── YYTextParser.m
│ │ │ ├── YYTextRubyAnnotation.h
│ │ │ ├── YYTextRubyAnnotation.m
│ │ │ ├── YYTextRunDelegate.h
│ │ │ └── YYTextRunDelegate.m
│ │ │ ├── Utility
│ │ │ ├── NSAttributedString+YYText.h
│ │ │ ├── NSAttributedString+YYText.m
│ │ │ ├── NSParagraphStyle+YYText.h
│ │ │ ├── NSParagraphStyle+YYText.m
│ │ │ ├── UIPasteboard+YYText.h
│ │ │ ├── UIPasteboard+YYText.m
│ │ │ ├── UIView+YYText.h
│ │ │ ├── UIView+YYText.m
│ │ │ ├── YYTextAsyncLayer.h
│ │ │ ├── YYTextAsyncLayer.m
│ │ │ ├── YYTextTransaction.h
│ │ │ ├── YYTextTransaction.m
│ │ │ ├── YYTextUtilities.h
│ │ │ ├── YYTextUtilities.m
│ │ │ ├── YYTextWeakProxy.h
│ │ │ └── YYTextWeakProxy.m
│ │ │ ├── YYLabel.h
│ │ │ ├── YYLabel.m
│ │ │ ├── YYText.h
│ │ │ ├── YYTextView.h
│ │ │ └── YYTextView.m
│ ├── YYWebImage
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── YYWebImage
│ │ │ ├── Categories
│ │ │ ├── CALayer+YYWebImage.h
│ │ │ ├── CALayer+YYWebImage.m
│ │ │ ├── MKAnnotationView+YYWebImage.h
│ │ │ ├── MKAnnotationView+YYWebImage.m
│ │ │ ├── UIButton+YYWebImage.h
│ │ │ ├── UIButton+YYWebImage.m
│ │ │ ├── UIImage+YYWebImage.h
│ │ │ ├── UIImage+YYWebImage.m
│ │ │ ├── UIImageView+YYWebImage.h
│ │ │ ├── UIImageView+YYWebImage.m
│ │ │ ├── _YYWebImageSetter.h
│ │ │ └── _YYWebImageSetter.m
│ │ │ ├── YYImageCache.h
│ │ │ ├── YYImageCache.m
│ │ │ ├── YYWebImage.h
│ │ │ ├── YYWebImageManager.h
│ │ │ ├── YYWebImageManager.m
│ │ │ ├── YYWebImageOperation.h
│ │ │ └── YYWebImageOperation.m
│ └── pop
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── pop
│ │ ├── POP.h
│ │ ├── POPAction.h
│ │ ├── POPAnimatableProperty.h
│ │ ├── POPAnimatableProperty.mm
│ │ ├── POPAnimatablePropertyTypes.h
│ │ ├── POPAnimation.h
│ │ ├── POPAnimation.mm
│ │ ├── POPAnimationEvent.h
│ │ ├── POPAnimationEvent.mm
│ │ ├── POPAnimationEventInternal.h
│ │ ├── POPAnimationExtras.h
│ │ ├── POPAnimationExtras.mm
│ │ ├── POPAnimationInternal.h
│ │ ├── POPAnimationPrivate.h
│ │ ├── POPAnimationRuntime.h
│ │ ├── POPAnimationRuntime.mm
│ │ ├── POPAnimationTracer.h
│ │ ├── POPAnimationTracer.mm
│ │ ├── POPAnimationTracerInternal.h
│ │ ├── POPAnimator.h
│ │ ├── POPAnimator.mm
│ │ ├── POPAnimatorPrivate.h
│ │ ├── POPBasicAnimation.h
│ │ ├── POPBasicAnimation.mm
│ │ ├── POPBasicAnimationInternal.h
│ │ ├── POPCGUtils.h
│ │ ├── POPCGUtils.mm
│ │ ├── POPCustomAnimation.h
│ │ ├── POPCustomAnimation.mm
│ │ ├── POPDecayAnimation.h
│ │ ├── POPDecayAnimation.mm
│ │ ├── POPDecayAnimationInternal.h
│ │ ├── POPDefines.h
│ │ ├── POPGeometry.h
│ │ ├── POPGeometry.mm
│ │ ├── POPLayerExtras.h
│ │ ├── POPLayerExtras.mm
│ │ ├── POPMath.h
│ │ ├── POPMath.mm
│ │ ├── POPPropertyAnimation.h
│ │ ├── POPPropertyAnimation.mm
│ │ ├── POPPropertyAnimationInternal.h
│ │ ├── POPSpringAnimation.h
│ │ ├── POPSpringAnimation.mm
│ │ ├── POPSpringAnimationInternal.h
│ │ ├── POPSpringSolver.h
│ │ ├── POPVector.h
│ │ ├── POPVector.mm
│ │ └── WebCore
│ │ ├── FloatConversion.h
│ │ ├── TransformationMatrix.cpp
│ │ ├── TransformationMatrix.h
│ │ └── UnitBezier.h
└── Tests
│ ├── Tests-Info.plist
│ ├── Tests-Prefix.pch
│ ├── Tests.m
│ └── en.lproj
│ └── InfoPlist.strings
├── FirstLineHeadIndentAnimation.podspec
├── LICENSE
├── README.md
└── _Pods.xcodeproj
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS X
2 | .DS_Store
3 |
4 | # Xcode
5 | build/
6 | *.pbxuser
7 | !default.pbxuser
8 | *.mode1v3
9 | !default.mode1v3
10 | *.mode2v3
11 | !default.mode2v3
12 | *.perspectivev3
13 | !default.perspectivev3
14 | xcuserdata/
15 | *.xccheckout
16 | profile
17 | *.moved-aside
18 | DerivedData
19 | *.hmap
20 | *.ipa
21 |
22 | # Bundler
23 | .bundle
24 |
25 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
26 | # Carthage/Checkouts
27 |
28 | Carthage/Build
29 |
30 | # We recommend against adding the Pods directory to your .gitignore. However
31 | # you should judge for yourself, the pros and cons are mentioned at:
32 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
33 | #
34 | # Note: if you ignore the Pods directory, make sure to uncomment
35 | # `pod install` in .travis.yml
36 | #
37 | # Pods/
38 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | # references:
2 | # * https://www.objc.io/issues/6-build-tools/travis-ci/
3 | # * https://github.com/supermarin/xcpretty#usage
4 |
5 | osx_image: xcode7.3
6 | language: objective-c
7 | # cache: cocoapods
8 | # podfile: Example/Podfile
9 | # before_install:
10 | # - gem install cocoapods # Since Travis is not always on latest version
11 | # - pod install --project-directory=Example
12 | script:
13 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/FirstLineHeadIndentAnimation.xcworkspace -scheme FirstLineHeadIndentAnimation-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty
14 | - pod lib lint
15 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildSystemType
6 | Latest
7 | PreviewsEnabled
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/FirstLineHeadIndentAnimation-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header
3 | //
4 | // The contents of this file are implicitly included at the beginning of every source file.
5 | //
6 |
7 | #import
8 |
9 | #ifndef __IPHONE_5_0
10 | #warning "This project uses features only available in iOS SDK 5.0 and later."
11 | #endif
12 |
13 | #ifdef __OBJC__
14 | @import UIKit;
15 | @import Foundation;
16 |
17 | #define MAS_SHORTHAND_GLOBALS
18 | #import
19 | #import "JPSolveTool.h"
20 | #import "JPMacro.h"
21 | #import "UIView+JPExtension.h"
22 | #import "UIView+JPPOP.h"
23 | #import "UIColor+JPExtension.h"
24 | #import "JPProgressHUD.h"
25 | #import "JPFileTool.h"
26 | #import "UIViewController+JPExtension.h"
27 | #import "UIImage+JPExtension.h"
28 | #import "NSObject+JPExtension.h"
29 | #import "NSString+JPExtension.h"
30 | #import "JPProxy.h"
31 | #import "MJExtension.h"
32 |
33 | #endif
34 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/collection_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "collection_selected@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "collection_selected@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/collection_selected.imageset/collection_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/collection_selected.imageset/collection_selected@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/collection_selected.imageset/collection_selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/collection_selected.imageset/collection_selected@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/home_icon_play.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "home_icon_play@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "home_icon_play@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/home_icon_play.imageset/home_icon_play@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/home_icon_play.imageset/home_icon_play@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/home_icon_play.imageset/home_icon_play@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/home_icon_play.imageset/home_icon_play@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_information.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "hotspot_icon_information@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "hotspot_icon_information@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_information.imageset/hotspot_icon_information@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_information.imageset/hotspot_icon_information@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_information.imageset/hotspot_icon_information@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_information.imageset/hotspot_icon_information@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_interest_authentication.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "hotspot_icon_interest_authentication@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "hotspot_icon_interest_authentication@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_interest_authentication.imageset/hotspot_icon_interest_authentication@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_interest_authentication.imageset/hotspot_icon_interest_authentication@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_interest_authentication.imageset/hotspot_icon_interest_authentication@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_interest_authentication.imageset/hotspot_icon_interest_authentication@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_like_normat.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "hotspot_icon_like_normat@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "hotspot_icon_like_normat@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_like_normat.imageset/hotspot_icon_like_normat@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_like_normat.imageset/hotspot_icon_like_normat@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_like_normat.imageset/hotspot_icon_like_normat@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_like_normat.imageset/hotspot_icon_like_normat@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_like_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "hotspot_icon_like_selected@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "hotspot_icon_like_selected@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_like_selected.imageset/hotspot_icon_like_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_like_selected.imageset/hotspot_icon_like_selected@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_like_selected.imageset/hotspot_icon_like_selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_like_selected.imageset/hotspot_icon_like_selected@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_more.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "hotspot_icon_more@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "hotspot_icon_more@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_more.imageset/hotspot_icon_more@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_more.imageset/hotspot_icon_more@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_more.imageset/hotspot_icon_more@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_more.imageset/hotspot_icon_more@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_professional_authentication.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "hotspot_icon_professional_authentication@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "hotspot_icon_professional_authentication@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_professional_authentication.imageset/hotspot_icon_professional_authentication@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_professional_authentication.imageset/hotspot_icon_professional_authentication@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_professional_authentication.imageset/hotspot_icon_professional_authentication@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_professional_authentication.imageset/hotspot_icon_professional_authentication@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_share.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "hotspot_icon_share@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "hotspot_icon_share@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_share.imageset/hotspot_icon_share@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_share.imageset/hotspot_icon_share@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_share.imageset/hotspot_icon_share@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/hotspot_icon_share.imageset/hotspot_icon_share@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/my_icon_colours.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "my_icon_colours@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "my_icon_colours@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/my_icon_colours.imageset/my_icon_colours@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/my_icon_colours.imageset/my_icon_colours@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/my_icon_colours.imageset/my_icon_colours@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/my_icon_colours.imageset/my_icon_colours@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_error.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "panda_error@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "panda_error@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_error.imageset/panda_error@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_error.imageset/panda_error@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_error.imageset/panda_error@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_error.imageset/panda_error@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_favorite.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "panda_favorite@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "panda_favorite@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_favorite.imageset/panda_favorite@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_favorite.imageset/panda_favorite@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_favorite.imageset/panda_favorite@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_favorite.imageset/panda_favorite@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_networkerror.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "panda_networkerror@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "panda_networkerror@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_networkerror.imageset/panda_networkerror@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_networkerror.imageset/panda_networkerror@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_networkerror.imageset/panda_networkerror@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/panda_networkerror.imageset/panda_networkerror@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/player_pugc_collection.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "player_pugc_collection@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "player_pugc_collection@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/player_pugc_collection.imageset/player_pugc_collection@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/player_pugc_collection.imageset/player_pugc_collection@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/player_pugc_collection.imageset/player_pugc_collection@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/player_pugc_collection.imageset/player_pugc_collection@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/rect_shadow.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "rect_shadow@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "rect_shadow@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/rect_shadow.imageset/rect_shadow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/rect_shadow.imageset/rect_shadow@2x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/Images.xcassets/rect_shadow.imageset/rect_shadow@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/FirstLineHeadIndentAnimation/Images.xcassets/rect_shadow.imageset/rect_shadow@3x.png
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/JPAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPAppDelegate.h
3 | // FirstLineHeadIndentAnimation
4 | //
5 | // Created by zhoujianping24@hotmail.com on 05/15/2020.
6 | // Copyright (c) 2020 zhoujianping24@hotmail.com. All rights reserved.
7 | //
8 |
9 | @import UIKit;
10 |
11 | @interface JPAppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/JPWebImage/JPRoundImageManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPRoundImageManager.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2020/4/13.
6 | // Copyright © 2020 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "YYWebImageHelper.h"
12 |
13 | @interface JPRoundImageManager : NSObject
14 | + (YYWebImageManager *)sharedManager;
15 |
16 | /** 沙盒是否含有图片 */
17 | + (void)cachedImageExistsForURL:(NSURL *)url completed:(void(^)(BOOL isInCache))completed;
18 |
19 | /** 从沙盒获取图片 */
20 | + (UIImage *)imageFromDiskCacheForURL:(NSURL *)url;
21 |
22 | /** 清除内存 */
23 | + (void)clearMemory;
24 | /** 清除磁盘 */
25 | + (void)clearDisk;
26 | /** 清除全部 */
27 | + (void)clearAll;
28 |
29 | /**
30 | * 下载图片 其中progress、transform、completed均在子线程中,除了transform其余需要刷新UI记得回到主线程
31 | */
32 | + (void)downloadImageWithURL:(NSURL *)imageURL
33 | options:(JPWebImageOptions)options
34 | progress:(JPSetImageProgress)progress
35 | transform:(JPSetImageTransform)transform
36 | completed:(JPSetImageCompleted)completed;
37 | @end
38 |
39 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/JPWebImage/JPWebImageManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPWebImageManager.h
3 | // Infinitee2.0
4 | //
5 | // Created by guanning on 2017/7/3.
6 | // Copyright © 2017年 Infinitee. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "JPWebImageHeader.h"
11 |
12 | @interface JPWebImageManager : NSObject
13 | /** 沙盒是否含有图片 */
14 | + (void)cachedImageExistsForURL:(NSURL *)url completed:(void(^)(BOOL isInCache))completed;
15 |
16 | /** 从沙盒获取图片 */
17 | + (UIImage *)imageFromDiskCacheForURL:(NSURL *)url;
18 |
19 | /** 清除内存 */
20 | + (void)clearMemory;
21 | /** 清除磁盘 */
22 | + (void)clearDisk;
23 | /** 清除全部 */
24 | + (void)clearAll;
25 |
26 | /**
27 | * 下载图片 其中progress、transform、completed均在子线程中,除了transform其余需要刷新UI记得回到主线程
28 | */
29 | + (void)downloadImageWithURL:(NSURL *)imageURL
30 | options:(JPWebImageOptions)options
31 | progress:(JPSetImageProgress)progress
32 | transform:(JPSetImageTransform)transform
33 | completed:(JPSetImageCompleted)completed;
34 | @end
35 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/JPWebImage/YYWebImageHelper.h:
--------------------------------------------------------------------------------
1 | //
2 | // YYWebImageHelper.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2020/4/13.
6 | // Copyright © 2020 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "JPWebImageHeader.h"
11 | #import
12 |
13 | @interface YYWebImageHelper : NSObject
14 |
15 | + (YYWebImageOptions)jp2yyOptions:(JPWebImageOptions)options;
16 |
17 | + (YYWebImageProgressBlock)jp2yyProgress:(JPSetImageProgress)progress;
18 | + (YYWebImageTransformBlock)jp2yyTransform:(JPSetImageTransform)transform;
19 | + (YYWebImageCompletionBlock)jp2yyCompletion:(JPSetImageCompleted)completed;
20 |
21 | + (JPWebImageFromType)yy2jpFromType:(YYWebImageFromType)from;
22 | + (JPWebImageStage)yy2jpStage:(YYWebImageStage)stage;
23 |
24 | @end
25 |
26 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/PUGC/Controller/PUGCViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // PUGCViewController.h
3 | // FirstLineHeadIndentAnimation-Example_Example
4 | //
5 | // Created by 周健平 on 2020/5/14.
6 | // Copyright © 2020 zhoujianping24@hotmail.com. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface PUGCViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/PUGC/Model/WTVPUGCProfileModel.m:
--------------------------------------------------------------------------------
1 | //
2 | // WTVPUGCProfileModel.m
3 | // FirstLineHeadIndentAnimation-Example_Example
4 | //
5 | // Created by 周健平 on 2020/5/14.
6 | // Copyright © 2020 zhoujianping24@hotmail.com. All rights reserved.
7 | //
8 |
9 | #import "WTVPUGCProfileModel.h"
10 |
11 | @implementation WTVPUGCProfileModel
12 |
13 | #pragma mark - MJExtension method
14 |
15 | // 自定义【属性名】
16 | + (NSDictionary *)mj_replacedKeyFromPropertyName {
17 | /*
18 | @key:自定义的属性名
19 | @value:服务器返回的属性名
20 | */
21 | return @{@"relateModel": @"relateVideo"};
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/PUGC/View/JPFadeFlowLayout.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPFadeFlowLayout.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2019/9/14.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPFadeFlowLayout : UICollectionViewFlowLayout
12 | @property (nonatomic, assign) CGPoint scale;
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/PUGC/View/WTVPUGCOptionButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // WTVPUGCOptionButton.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2020/4/22.
6 | // Copyright © 2020 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import "JPBounceView.h"
10 |
11 | @interface WTVPUGCOptionButton : JPBounceView
12 | + (CGSize)buttonSize;
13 | + (instancetype)zanButton;
14 | + (instancetype)collectButton;
15 | + (instancetype)forwardButton;
16 | + (instancetype)commentButton;
17 | + (instancetype)moreButton;
18 |
19 | @property (nonatomic, weak) UIImageView *iconView;
20 | @property (nonatomic, weak) UILabel *countLabel;
21 |
22 | @property (nonatomic, strong) NSString *normalIcon;
23 | @property (nonatomic, strong) NSString *selectIcon;
24 |
25 | @property (nonatomic, strong) UIColor *normalColor;
26 | @property (nonatomic, strong) UIColor *selectColor;
27 |
28 | - (void)setCountStr:(NSString *)countStr;
29 | - (NSString *)countStr;
30 |
31 | @property (nonatomic, assign) BOOL isSelected;
32 | - (void)setIsSelected:(BOOL)isSelected animated:(BOOL)isAnamated;
33 | @end
34 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/PUGC/View/WTVPUGCProfileIcon.h:
--------------------------------------------------------------------------------
1 | //
2 | // WTVPUGCProfileIcon.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2020/4/17.
6 | // Copyright © 2020 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface WTVPUGCProfileIcon : UIView
12 | - (instancetype)initWithFrame:(CGRect)frame logoWH:(CGFloat)logoWH;
13 | - (instancetype)initWithLogoWH:(CGFloat)logoWH;
14 | @property (nonatomic, strong) UIImageView *imageView;
15 | @property (nonatomic, strong) UIImageView *logoView;
16 |
17 | - (void)showLogo:(BOOL)isAnimated;
18 | - (void)hideLogo:(BOOL)isAnimated;
19 |
20 | @property (nonatomic, assign) BOOL isLiving;
21 | - (void)setIsLiving:(BOOL)isLiving animated:(BOOL)isAnimated;
22 | @end
23 |
24 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/PUGC/View/WTVPUGCProfileIconView.h:
--------------------------------------------------------------------------------
1 | //
2 | // WTVPUGCProfileIconView.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2020/5/12.
6 | // Copyright © 2020 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "WTVPUGCProfileIcon.h"
11 |
12 | @interface WTVPUGCProfileIconView : UIView
13 | + (CGFloat)iconWH;
14 | + (instancetype)iconView;
15 | @property (nonatomic, strong) WTVPUGCProfileIcon *icon;
16 | @property (nonatomic, strong) UILabel *nameLabel;
17 | @property (nonatomic, strong) UILabel *bottomLabel;
18 | @property (nonatomic, strong) UIButton *followBtn;
19 | @property (nonatomic, strong) UIView *followBtnLine;
20 | @property (nonatomic, assign) BOOL isNotNeedFollow;
21 | - (void)setIsFollowed:(BOOL)isFollowed animated:(BOOL)isAnimated;
22 | @end
23 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/UIApplication+JPExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIApplication+JPExtension.h
3 | // Infinitee2.0
4 | //
5 | // Created by 周健平 on 2019/7/11.
6 | // Copyright © 2019 Infinitee. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIApplication (JPExtension)
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // FirstLineHeadIndentAnimation
4 | //
5 | // Created by zhoujianping24@hotmail.com on 05/15/2020.
6 | // Copyright (c) 2020 zhoujianping24@hotmail.com. All rights reserved.
7 | //
8 |
9 | @import UIKit;
10 |
11 | @interface ViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Example/FirstLineHeadIndentAnimation/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // FirstLineHeadIndentAnimation
4 | //
5 | // Created by zhoujianping24@hotmail.com on 05/15/2020.
6 | // Copyright (c) 2020 zhoujianping24@hotmail.com. All rights reserved.
7 | //
8 |
9 | @import UIKit;
10 | #import "JPAppDelegate.h"
11 |
12 | int main(int argc, char * argv[])
13 | {
14 | @autoreleasepool {
15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([JPAppDelegate class]));
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Example/Podfile:
--------------------------------------------------------------------------------
1 | source 'https://github.com/CocoaPods/Specs.git'
2 |
3 | use_frameworks!
4 |
5 | platform :ios, '8.0'
6 |
7 | target 'FirstLineHeadIndentAnimation_Example' do
8 |
9 | pod 'JPBasic'
10 | pod 'YYWebImage'
11 | pod 'MJRefresh'
12 | pod 'MJExtension'
13 |
14 | target 'FirstLineHeadIndentAnimation_Tests' do
15 | inherit! :search_paths
16 |
17 |
18 | end
19 | end
20 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCategory/Foundation/NSDate+JPExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSDate+JPExtension.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2019/5/15.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSDate (JPExtension)
12 | + (NSString *)jp_hhmmssStringWithTimeInt:(NSTimeInterval)timeInt;
13 | + (NSString *)jp_hhmmssSSStringForCurrentDate;
14 | - (NSString *)jp_hhmmssString;
15 | - (NSString *)jp_hhmmssSSString;
16 | - (NSDateComponents *)jp_ddHHmmssDeltaFromNow;
17 |
18 | - (NSDateComponents *)jp_deltaFromDate:(NSDate *)fromDate;
19 | - (NSDateComponents *)jp_deltaToDate:(NSDate *)toDate;
20 | + (NSDateComponents *)jp_deltaFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate;
21 | @end
22 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCategory/Foundation/NSObject+JPExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+JPExtension.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2018/7/23.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSObject (JPExtension)
12 | + (NSString *)jp_className;
13 | - (NSString *)jp_className;
14 |
15 | + (BOOL)jp_isMetaClass;
16 | + (Class)jp_metaClass;
17 | - (Class)jp_metaClass;
18 |
19 | + (void)jp_lookIvarList;
20 | - (void)jp_lookIvarList;
21 |
22 | + (void)jp_lookPropertyList;
23 | - (void)jp_lookPropertyList;
24 |
25 | + (void)jp_lookMethodList;
26 | - (void)jp_lookMethodList;
27 |
28 | + (NSInteger)jp_instanceSize;
29 | - (NSInteger)jp_instanceSize;
30 |
31 | - (NSInteger)jp_mallocSize;
32 |
33 | + (void)jp_swizzleInstanceMethodsWithOriginalSelector:(SEL)originalSelector swizzledSelector:(SEL)swizzledSelector;
34 | + (void)jp_swizzleClassMethodsWithOriginalSelector:(SEL)originalSelector swizzledSelector:(SEL)swizzledSelector;
35 | @end
36 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCategory/Foundation/NSString+JPExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+JPExtension.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2018/4/11.
6 | // Copyright © 2018年 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | CG_INLINE bool
12 | JPStringEqualToString(NSString *str1, NSString *str2) {
13 | if (!str1 && !str2) return true;
14 | if ((str1 && str2) && [str1 isEqualToString:str2]) return true;
15 | return false;
16 | }
17 |
18 | @interface NSString (JPExtension)
19 |
20 | /** 判断是否全是空格 */
21 | - (BOOL)jp_isNotEmpty;
22 | - (BOOL)jp_isNotNull;
23 |
24 | /** 判断是否纯数字 */
25 | - (BOOL)jp_isNumber;
26 |
27 | - (BOOL)jp_isPhoneNumber;
28 |
29 | - (NSString *)jp_examineTextWithTextHandle:(NSString *(^)(BOOL isNullStr, NSString *text))textHandle;
30 |
31 | - (NSString *)jp_createDateStrWithSeparateStr:(NSString *)separateStr;
32 |
33 | + (NSString *)jp_durationFormatWithFromTime:(NSString *)fromTime toTime:(NSString *)toTime separateStr:(NSString *)separateStr connectStr:(NSString *)connectStr;
34 |
35 | - (NSAttributedString *)jp_matchesKeywords:(NSString *)keywords font:(UIFont *)font keywordsColor:(UIColor *)keywordsColor otherColor:(UIColor *)otherColor;
36 |
37 | - (NSString *)jp_appVersionFormat;
38 |
39 | /** 判断如果包含中文 */
40 | - (BOOL)jp_containsChinese;
41 |
42 | /** 判断是否身份证号码 */
43 | - (BOOL)jp_isCardID;
44 |
45 | @end
46 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCategory/UIKit/UINavigationBar+JPExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // UINavigationBar+JPExtension.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2019/1/9.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UINavigationBar (JPExtension)
12 | - (UIView *)jp_setupCustomNavigationBgView:(UIView *)customBgView;
13 | - (UIView *)jp_setupNavigationBgView; // white view
14 | - (void)jp_setNavigationBgColor:(UIColor *)color;
15 | - (void)jp_setNavigationBgAlpha:(CGFloat)alpha;
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCategory/UIKit/UINavigationBar+JPExtension.m:
--------------------------------------------------------------------------------
1 | //
2 | // UINavigationBar+JPExtension.m
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2019/1/9.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import "UINavigationBar+JPExtension.h"
10 | #import
11 | #import
12 |
13 | @implementation UINavigationBar (JPExtension)
14 |
15 | - (void)setJp_navBgView:(UIView *)jp_navBgView {
16 | objc_setAssociatedObject(self, @selector(jp_navBgView), jp_navBgView, OBJC_ASSOCIATION_ASSIGN);
17 | }
18 | - (UIView *)jp_navBgView {
19 | return objc_getAssociatedObject(self, _cmd);
20 | }
21 |
22 | - (UIView *)jp_setupCustomNavigationBgView:(UIView *)customBgView {
23 | if (self.jp_navBgView) [self.jp_navBgView removeFromSuperview];
24 |
25 | [self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
26 | [self setShadowImage:[UIImage new]];
27 |
28 | UIView *navBgView = [self valueForKey:@"backgroundView"];
29 | [navBgView addSubview:customBgView];
30 | [customBgView mas_makeConstraints:^(MASConstraintMaker *make) {
31 | make.edges.equalTo(navBgView);
32 | }];
33 | self.jp_navBgView = customBgView;
34 |
35 | return customBgView;
36 | }
37 |
38 | - (UIView *)jp_setupNavigationBgView {
39 | UIView *navBgView = [UIView new];
40 | navBgView.backgroundColor = UIColor.whiteColor;
41 | return [self jp_setupCustomNavigationBgView:navBgView];
42 | }
43 |
44 | - (void)jp_setNavigationBgColor:(UIColor *)color {
45 | if (!self.jp_navBgView) return;
46 | self.jp_navBgView.backgroundColor = color;
47 | }
48 |
49 | - (void)jp_setNavigationBgAlpha:(CGFloat)alpha {
50 | if (!self.jp_navBgView) return;
51 | self.jp_navBgView.alpha = alpha;
52 | }
53 | @end
54 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCategory/UIKit/UIScrollView+JPExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIScrollView+JPExtension.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2018/12/11.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIScrollView (JPExtension)
12 | - (void)jp_contentInsetAdjustmentNever;
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCategory/UIKit/UIScrollView+JPExtension.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIScrollView+JPExtension.m
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2018/12/11.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import "UIScrollView+JPExtension.h"
10 |
11 | @implementation UIScrollView (JPExtension)
12 |
13 | - (void)jp_contentInsetAdjustmentNever {
14 | if (@available(iOS 11.0, *)) {
15 | self.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
16 | if ([self isKindOfClass:UITableView.class]) {
17 | UITableView *tableView = (UITableView *)self;
18 | tableView.estimatedRowHeight = 0;
19 | tableView.estimatedSectionHeaderHeight = 0;
20 | tableView.estimatedSectionFooterHeight = 0;
21 | }
22 | }
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCategory/UIKit/UIViewController+JPExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+JPExtension.h
3 | // Infinitee2.0
4 | //
5 | // Created by 周健平 on 2017/9/20.
6 | // Copyright © 2017年 Infinitee. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "UIScrollView+JPExtension.h"
11 |
12 | @interface UIViewController (JPExtension)
13 | - (UIViewController *)jp_topViewController;
14 | - (UINavigationController *)jp_topNavigationController;
15 | - (void)jp_contentInsetAdjustmentNever:(UIScrollView *)scrollView;
16 | - (BOOL)jp_isRootViewController;
17 | - (void)jp_popVC;
18 | @property (nonatomic, assign) BOOL jp_isHideNavigationBar;
19 | @property (nonatomic, assign) BOOL jp_isNotAutoSetBackBarButtonItem;
20 | @end
21 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCategory/UIKit/UIWindow+JPExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIWindow+JPExtension.h
3 | // AFNetworking
4 | //
5 | // Created by 周健平 on 2020/3/19.
6 | //
7 |
8 | #import
9 |
10 | @interface UIWindow (JPExtension)
11 | /** 获取顶层控制器 */
12 | - (UIViewController *)jp_topViewController;
13 | + (UIViewController *)jp_topViewControllerFromKeyWindow;
14 | + (UIViewController *)jp_topViewControllerFromDelegateWindow;
15 | @end
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCategory/UIKit/UIWindow+JPExtension.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIWindow+JPExtension.m
3 | // AFNetworking
4 | //
5 | // Created by 周健平 on 2020/3/19.
6 | //
7 |
8 | #import "UIWindow+JPExtension.h"
9 |
10 | @implementation UIWindow (JPExtension)
11 |
12 | /** 获取顶层控制器 */
13 | - (UIViewController *)jp_topViewController {
14 | if (!self.rootViewController) return nil;
15 | UIViewController *resultVC;
16 | resultVC = [self __jp_getTopViewController:self.rootViewController];
17 | while (resultVC.presentedViewController) { // 看看有没有moda出来的
18 | resultVC = [self __jp_getTopViewController:resultVC.presentedViewController];
19 | }
20 | if ([resultVC isKindOfClass:UIAlertController.class]) {
21 | resultVC = resultVC.presentingViewController; // 从哪里moda的那个才是
22 | return [self __jp_getTopViewController:resultVC];
23 | }
24 | return resultVC;
25 | }
26 |
27 | - (UIViewController *)__jp_getTopViewController:(UIViewController *)vc {
28 | if ([vc isKindOfClass:[UINavigationController class]]) {
29 | return [self __jp_getTopViewController:[(UINavigationController *)vc topViewController]];
30 | } else if ([vc isKindOfClass:[UITabBarController class]]) {
31 | return [self __jp_getTopViewController:[(UITabBarController *)vc selectedViewController]];
32 | } else {
33 | return vc;
34 | }
35 | }
36 |
37 | + (UIViewController *)jp_topViewControllerFromKeyWindow {
38 | return [[UIApplication sharedApplication].keyWindow jp_topViewController];
39 | }
40 |
41 | + (UIViewController *)jp_topViewControllerFromDelegateWindow {
42 | return [[UIApplication sharedApplication].delegate.window jp_topViewController];
43 | }
44 |
45 | @end
46 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/Button/JPCustomLayoutButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPCustomLayoutButton.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2019/9/9.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPCustomLayoutButton : UIButton
12 | @property (nonatomic, copy) void (^layoutSubviewsBlock)(UIButton *btn);
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/Button/JPCustomLayoutButton.m:
--------------------------------------------------------------------------------
1 | //
2 | // JPCustomLayoutButton.m
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2019/9/9.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import "JPCustomLayoutButton.h"
10 |
11 | @implementation JPCustomLayoutButton
12 |
13 | /**
14 | * 例:图标置右,文字置左
15 | button.layoutSubviewsBlock = ^(UIButton *btn) {
16 | CGFloat space = JPScaleValue(4);
17 | CGFloat totalW = btn.imageView.jp_width + space + btn.titleLabel.jp_width;
18 | CGFloat totalMaxX = JPHalfOfDiff(btn.jp_width, totalW) + totalW;
19 | btn.imageView.jp_x = totalMaxX - btn.imageView.jp_width;
20 | btn.titleLabel.jp_x = btn.imageView.jp_x - btn.titleLabel.jp_width - space;
21 | };
22 | */
23 |
24 | - (void)layoutSubviews {
25 | [super layoutSubviews];
26 | !self.layoutSubviewsBlock ? : self.layoutSubviewsBlock(self);
27 | }
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/Button/JPIconButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPIconButton.h
3 | // Infinitee2.0
4 | //
5 | // Created by guanning on 2016/12/19.
6 | // Copyright © 2016年 Infinitee. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPIconButton : UIButton
12 |
13 | + (JPIconButton *)iconButtonWithIcon:(NSString *)icon
14 | iconSize:(CGSize)iconSize
15 | title:(NSString *)title
16 | titleFont:(UIFont *)titleFont
17 | titleColor:(UIColor *)titleColor
18 | contentEdgeInsets:(UIEdgeInsets)contentEdgeInsets
19 | space:(CGFloat)space
20 | isVertical:(BOOL)isVertical;
21 |
22 | @property (nonatomic, assign) UIEdgeInsets jp_contentEdgeInsets;
23 | @property (nonatomic, assign) CGFloat space;
24 | @property (nonatomic, assign) BOOL isVertical;
25 |
26 | - (void)updateIconSize:(CGSize)iconSize
27 | titleFont:(UIFont *)titleFont
28 | contentEdgeInsets:(UIEdgeInsets)contentEdgeInsets
29 | space:(CGFloat)space
30 | isVertical:(BOOL)isVertical;
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/Button/JPMaskButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPMaskButton.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2018/12/6.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface JPMaskButton : UIButton
14 | @property (nonatomic, strong) UIImage *maskImage;
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/Button/JPMaskButton.m:
--------------------------------------------------------------------------------
1 | //
2 | // JPMaskButton.m
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2018/12/6.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import "JPMaskButton.h"
10 | #import "JPMacro.h"
11 |
12 | @implementation JPMaskButton
13 |
14 | - (void)setMaskImage:(UIImage *)maskImage {
15 | _maskImage = maskImage;
16 | if (maskImage) {
17 | CALayer *maskLayer = self.layer.mask;
18 | if (!maskLayer) {
19 | maskLayer = [CALayer layer];
20 | maskLayer.contentsGravity = kCAGravityCenter;
21 | maskLayer.contentsScale = [UIScreen mainScreen].scale;
22 | self.layer.mask = maskLayer;
23 | }
24 | maskLayer.contents = (id)maskImage.CGImage;
25 | } else {
26 | self.layer.mask = nil;
27 | }
28 | }
29 |
30 | - (void)layoutSubviews {
31 | [super layoutSubviews];
32 | self.layer.mask.frame = self.bounds;
33 | }
34 |
35 | - (instancetype)initWithFrame:(CGRect)frame {
36 | if (self = [super initWithFrame:frame]) {
37 | [self.imageView addObserver:self forKeyPath:JPKeyPath(self.imageView, layer.opacity) options:NSKeyValueObservingOptionNew context:nil];
38 | }
39 | return self;
40 | }
41 |
42 | - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
43 | if (self.layer.mask) {
44 | CGFloat opacity = [change[NSKeyValueChangeNewKey] doubleValue];
45 | self.layer.mask.opacity = opacity;
46 | }
47 | }
48 |
49 | - (void)dealloc {
50 | [self.imageView removeObserver:self forKeyPath:JPKeyPath(self.imageView, layer.opacity)];
51 | }
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/Button/JPNoHighlightButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPNoHighlightButton.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2019/1/9.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface JPNoHighlightButton : UIButton
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/Button/JPNoHighlightButton.m:
--------------------------------------------------------------------------------
1 | //
2 | // JPNoHighlightButton.m
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2019/1/9.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import "JPNoHighlightButton.h"
10 |
11 | @implementation JPNoHighlightButton
12 |
13 | - (void)setHighlighted:(BOOL)highlighted {
14 |
15 | }
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/Button/JPScreenBorderButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPScreenBorderButton.h
3 | // DesignSpaceRestructure
4 | //
5 | // Created by 周健平 on 2017/12/16.
6 | // Copyright © 2017年 周健平. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPScreenBorderButton : UIButton
12 | @property (nonatomic, copy) void (^highlightedDidChangedBlock)(BOOL jp_isHighlighted);
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/Button/JPUnderlineButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPUnderlineButton.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2018/11/15.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface JPUnderlineButton : UIButton
14 | @property (nonatomic, assign) BOOL isShowUnderline;
15 | @property (nonatomic, assign) CGFloat underlinePadding;
16 | @property (nonatomic, assign) CGFloat underlineSpace;
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/Model/JPProxy.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPProxy.h
3 | // JPBasic
4 | //
5 | // Created by 周健平 on 2019/12/12.
6 | //
7 |
8 | #import
9 |
10 | #define JPTargetProxy(target) [JPProxy proxyWithTarget:target]
11 |
12 | @interface JPProxy : NSProxy
13 | + (instancetype)proxyWithTarget:(id)target;
14 | @property (nonatomic, weak) id target;
15 | @end
16 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/Model/JPProxy.m:
--------------------------------------------------------------------------------
1 | //
2 | // JPProxy.m
3 | // JPBasic
4 | //
5 | // Created by 周健平 on 2019/12/12.
6 | //
7 |
8 | #import "JPProxy.h"
9 |
10 | @implementation JPProxy
11 |
12 | + (instancetype)proxyWithTarget:(id)target {
13 | JPProxy *proxy = [self alloc]; // NSProxy没有init方法
14 | proxy.target = target;
15 | return proxy;
16 | }
17 |
18 | - (NSMethodSignature *)methodSignatureForSelector:(SEL)sel {
19 | return [self.target methodSignatureForSelector:sel];
20 | }
21 |
22 | - (void)forwardInvocation:(NSInvocation *)invocation {
23 | [invocation invokeWithTarget:self.target];
24 | }
25 |
26 | //- (void)dealloc {
27 | // NSLog(@"%s", __func__);
28 | //}
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPBadgeLabel.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPBadgeLabel.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2018/10/19.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | typedef NS_ENUM(NSUInteger, JPBadgeLabelState) {
14 | JPBadgeLabelHidingState,
15 | JPBadgeLabelShowingState
16 | };
17 |
18 | @interface JPBadgeLabel : UILabel
19 | + (JPBadgeLabel *)baseBadgeLabel;
20 | @property (nonatomic, assign) JPBadgeLabelState state;
21 | @property (nonatomic, assign) NSInteger badgeCount;
22 | @end
23 |
24 | NS_ASSUME_NONNULL_END
25 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPBasicPopView.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPBasicPopView.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2018/9/30.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface JPBasicPopView : UIView
14 | @property (nonatomic, weak) UIView *contentView;
15 | - (UIWindow *)jp_window;
16 | - (void)addToWindow;
17 | - (void)removeFromWindow;
18 |
19 | - (void)didClickBgView;
20 |
21 | - (void)scalePopAnimation:(BOOL)forShow complete:(nullable void(^)(BOOL isShowed))complete;
22 | - (void)rotationAnimation:(BOOL)forShow complete:(nullable void(^)(BOOL isShowed))complete;
23 | @end
24 |
25 | NS_ASSUME_NONNULL_END
26 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPBounceView.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPBounceView.h
3 | // Infinitee2.0
4 | //
5 | // Created by 周健平 on 2017/10/12.
6 | // Copyright © 2017年 Infinitee. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPBounceView : UIView
12 | /** 默认0.15 */
13 | @property (nonatomic, assign) NSTimeInterval imageSetterDuration;
14 | @property (nonatomic, strong) UIImage *image;
15 | - (void)setImage:(UIImage *)image animated:(BOOL)animated;
16 |
17 | /** 默认YES */
18 | @property (nonatomic, assign) BOOL isBounce;
19 | /** 默认1.13 */
20 | @property (nonatomic, assign) CGFloat scale;
21 | /** 默认0.27 */
22 | @property (nonatomic, assign) NSTimeInterval scaleDuration;
23 | /** 默认20.0 */
24 | @property (nonatomic, assign) CGFloat recoverSpeed;
25 | /** 默认17.0 */
26 | @property (nonatomic, assign) CGFloat recoverBounciness;
27 | /** 默认NO */
28 | @property (nonatomic, assign) BOOL isJudgeBegin;
29 | /** 默认YES */
30 | @property (nonatomic, assign) BOOL isCanTouchesBegan;
31 |
32 | @property (nonatomic, copy) void (^viewTouchUpInside)(JPBounceView *bounceView);
33 |
34 | - (void)recover;
35 | @property (nonatomic, assign) BOOL isTouching;
36 | @property (nonatomic, copy) void (^touchingDidChanged)(BOOL isTouching);
37 | @end
38 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPEmptyStateView.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPEmptyStateView.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2019/2/23.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPEmptyStateView : UIView
12 | + (instancetype)emptyStateViewWithImageName:(NSString *)imageName title:(NSString *)title;
13 | @property (nonatomic, weak) UIImageView *imageView;
14 | @property (nonatomic, weak) UIActivityIndicatorView *jvhua;
15 | @property (nonatomic, weak) UILabel *titleLabel;
16 | - (void)updateImage:(NSString *)imageName title:(NSString *)title animated:(BOOL)animated;
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPFPSLabel.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPFPSLabel.h
3 | // YYKitExample
4 | //
5 | // Created by ibireme on 15/9/3.
6 | // Copyright (c) 2015 ibireme. All rights reserved.
7 | //
8 | // 实际上就是YYFPSLabel,只是防止别的项目有重名的文件,特意改个名字,可能以后会有改动~
9 |
10 | #import
11 |
12 | /**
13 | Show Screen FPS...
14 |
15 | The maximum fps in OSX/iOS Simulator is 60.00.
16 | The maximum fps on iPhone is 59.97.
17 | The maxmium fps on iPad is 60.0.
18 | */
19 | @interface JPFPSLabel : UILabel
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPGradientView.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPGradientView.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2018/11/27.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPGradientView : UIView
12 | - (CAGradientLayer *)gradientLayer;
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPGradientView.m:
--------------------------------------------------------------------------------
1 | //
2 | // JPGradientView.m
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2018/11/27.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import "JPGradientView.h"
10 |
11 | @implementation JPGradientView
12 |
13 | + (Class)layerClass {
14 | return CAGradientLayer.class;
15 | }
16 |
17 | - (CAGradientLayer *)gradientLayer {
18 | return (CAGradientLayer *)self.layer;
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPMaskView.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPMaskView.h
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2018/12/6.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface JPMaskView : UIView
14 | @property (nonatomic, strong) UIImage *maskImage;
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPMaskView.m:
--------------------------------------------------------------------------------
1 | //
2 | // JPMaskView.m
3 | // WoTV
4 | //
5 | // Created by 周健平 on 2018/12/6.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import "JPMaskView.h"
10 |
11 | @implementation JPMaskView
12 |
13 | - (void)setMaskImage:(UIImage *)maskImage {
14 | _maskImage = maskImage;
15 | if (maskImage) {
16 | CALayer *maskLayer = self.layer.mask;
17 | if (!maskLayer) {
18 | maskLayer = [CALayer layer];
19 | maskLayer.contentsGravity = kCAGravityCenter;
20 | maskLayer.contentsScale = [UIScreen mainScreen].scale;
21 | self.layer.mask = maskLayer;
22 | }
23 | maskLayer.contents = (id)maskImage.CGImage;
24 | } else {
25 | self.layer.mask = nil;
26 | }
27 | }
28 |
29 | - (void)layoutSubviews {
30 | [super layoutSubviews];
31 | self.layer.mask.frame = self.bounds;
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPScreenEdgeLeftScrollView.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPScreenEdgeLeftScrollView.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2019/8/30.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPScreenEdgeLeftScrollView : UIScrollView
12 | @property (nonatomic, assign) BOOL isNotFull;
13 | @end
14 |
15 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPScreenEdgeLeftScrollView.m:
--------------------------------------------------------------------------------
1 | //
2 | // JPScreenEdgeLeftScrollView.m
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2019/8/30.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import "JPScreenEdgeLeftScrollView.h"
10 |
11 | @implementation JPScreenEdgeLeftScrollView
12 |
13 | #pragma mark - 让左边边缘区域无法响应,让事件传递到父控制器(缺陷:左边宽15的区域无法滚动)
14 |
15 | - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
16 | if (self.isNotFull) {
17 | return [super hitTest:point withEvent:event];
18 | }
19 | CGRect frame = CGRectMake(0, 0, 15, self.frame.size.height);
20 | if (!CGRectContainsPoint(frame, point)) {
21 | return [super hitTest:point withEvent:event];
22 | } else {
23 | return nil;
24 | }
25 | }
26 | @end
27 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPSeparateHeaderFooterView.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPSeparateHeaderFooterView.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2018/9/24.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | static NSString *const JPSeparateHeaderFooterViewID = @"JPSeparateHeaderFooterView";
14 |
15 | @interface JPSeparateHeaderFooterView : UITableViewHeaderFooterView
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPSeparateHeaderFooterView.m:
--------------------------------------------------------------------------------
1 | //
2 | // JPSeparateHeaderFooterView.m
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2018/9/24.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import "JPSeparateHeaderFooterView.h"
10 |
11 | @implementation JPSeparateHeaderFooterView
12 |
13 | //- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier {
14 | // if (self = [super initWithReuseIdentifier:reuseIdentifier]) {
15 | // self.backgroundView = nil;
16 | // }
17 | // return self;
18 | //}
19 |
20 | - (void)setBackgroundView:(UIView *)backgroundView {
21 | backgroundView = nil;
22 | [super setBackgroundView:backgroundView];
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPTextField.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPTextField.h
3 | // Infinitee2.0
4 | //
5 | // Created by guanning on 2017/1/18.
6 | // Copyright © 2017年 Infinitee. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPTextField : UITextField
12 | @property (nonatomic, copy) void (^firstResponderHandle)(JPTextField *textField, BOOL isFirstResponder);
13 |
14 | @property (nonatomic, assign) NSUInteger maxLimitNums;
15 | @property (nonatomic, copy) void (^reachMaxLimitNums)(NSInteger maxLimitNums); // 已达最多字数的block
16 |
17 | @property (nonatomic, assign) BOOL isNoSetText;
18 |
19 | @property (nonatomic, copy) void (^textDidBeginEditing)(JPTextField *textField);
20 | @property (nonatomic, copy) void (^textDidChange)(JPTextField *textField, BOOL isLenovo);
21 | @property (nonatomic, copy) void (^textDidEndEditing)(JPTextField *textField);
22 |
23 | @property (nonatomic, copy) void (^deleteBlock)(JPTextField *textField);
24 |
25 | @property (nonatomic, copy) BOOL (^returnKeyDidClick)(JPTextField *textField, NSString *finalText);
26 |
27 | - (void)setAndCheckText:(NSString *)text;
28 | @end
29 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/View/JPTextView.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPTextView.h
3 | // 健平不得姐
4 | //
5 | // Created by ios app on 16/6/3.
6 | // Copyright © 2016年 cb2015. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | // 光标初始x值
12 | UIKIT_EXTERN CGFloat const JPCursorMargin; // 5.0
13 |
14 | @interface JPTextView : UITextView
15 | @property(nonatomic, copy) NSString *placeholder;
16 | @property(nonatomic, strong) UIColor *placeholderColor;
17 |
18 | @property (nonatomic, copy) void (^firstResponderHandle)(JPTextView *textView, BOOL isFirstResponder);
19 |
20 | @property (nonatomic, assign) NSUInteger maxLimitNums;
21 | @property (nonatomic, copy) void (^reachMaxLimitNums)(NSInteger maxLimitNums); // 已达最多字数的block
22 |
23 | @property (nonatomic, assign) BOOL textKeepTheTop;
24 |
25 | @property (nonatomic, copy) void (^textDidBeginEditing)(JPTextView *textView);
26 | @property (nonatomic, copy) void (^textDidChange)(JPTextView *textView, BOOL isLenovo);
27 | @property (nonatomic, copy) void (^textDidEndEditing)(JPTextView *textView);
28 |
29 | @property (nonatomic, copy) BOOL (^returnKeyDidClick)(JPTextView *textView, NSString *finalText);
30 |
31 | - (void)setAndCheckText:(NSString *)text;
32 | @end
33 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/ViewController/JPSubCollectionViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPSubCollectionViewController.h
3 | // WoTVEducation
4 | //
5 | // Created by 周健平 on 2018/1/4.
6 | // Copyright © 2018年 沃视频. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPSubCollectionViewController : UICollectionViewController
12 | @property (nonatomic, copy) void (^willBeginDraggingHandle)(UIScrollView *scrollView);
13 | @property (nonatomic, copy) void (^didScrollHandle)(UIScrollView *scrollView);
14 | @property (nonatomic, copy) void (^didEndScrollHandle)(UIScrollView *scrollView);
15 | @property (nonatomic, copy) void (^panEndedHandle)(UIScrollView *scrollView);
16 | @property (nonatomic, copy) void (^requestStartHandle)(UIScrollView *scrollView);
17 | @property (nonatomic, copy) void (^requestDoneHandle)(UIScrollView *scrollView);
18 | @end
19 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/ViewController/JPSubScrollViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPSubScrollViewController.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2019/8/9.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPSubScrollViewController : UIViewController
12 | @property (nonatomic, weak) UIScrollView *scrollView;
13 | @property (nonatomic, copy) void (^willBeginDraggingHandle)(UIScrollView *scrollView);
14 | @property (nonatomic, copy) void (^didScrollHandle)(UIScrollView *scrollView);
15 | @property (nonatomic, copy) void (^didEndScrollHandle)(UIScrollView *scrollView);
16 | @property (nonatomic, copy) void (^panEndedHandle)(UIScrollView *scrollView);
17 | @property (nonatomic, copy) void (^requestStartHandle)(UIScrollView *scrollView);
18 | @property (nonatomic, copy) void (^requestDoneHandle)(UIScrollView *scrollView);
19 | @end
20 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/ViewController/JPSubTableViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPSubTableViewController.h
3 | // WoTVEducation
4 | //
5 | // Created by 周健平 on 2018/1/4.
6 | // Copyright © 2018年 沃视频. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPSubTableViewController : UITableViewController
12 | @property (nonatomic, copy) void (^willBeginDraggingHandle)(UIScrollView *scrollView);
13 | @property (nonatomic, copy) void (^didScrollHandle)(UIScrollView *scrollView);
14 | @property (nonatomic, copy) void (^didEndScrollHandle)(UIScrollView *scrollView);
15 | @property (nonatomic, copy) void (^panEndedHandle)(UIScrollView *scrollView);
16 | @property (nonatomic, copy) void (^requestStartHandle)(UIScrollView *scrollView);
17 | @property (nonatomic, copy) void (^requestDoneHandle)(UIScrollView *scrollView);
18 | @end
19 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/ViewController/JPViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPViewController.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2019/1/25.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "JPConstant.h"
11 |
12 | @interface JPViewController : UIViewController
13 | @property (nonatomic, copy) JPGetCurrentInterfaceOrientationBlock currentInterfaceOrientation;
14 | @end
15 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPCustomUnit/ViewController/JPViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // JPViewController.m
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2019/1/25.
6 | // Copyright © 2019 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import "JPViewController.h"
10 |
11 | @implementation JPViewController
12 |
13 | - (BOOL)shouldAutorotate {
14 | return YES;
15 | }
16 |
17 | - (UIInterfaceOrientationMask)supportedInterfaceOrientations {
18 | if (self.currentInterfaceOrientation) {
19 | return self.currentInterfaceOrientation();
20 | }
21 | return UIInterfaceOrientationMaskAll;
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPTool/JPAlertControllerTool.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPAlertControllerTool.h
3 | // Infinitee2.0-Design
4 | //
5 | // Created by Jill on 16/8/16.
6 | // Copyright © 2016年 陈珏洁. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPAlertControllerTool : NSObject
12 |
13 | /**
14 | * 没有configurationHandler
15 | */
16 | + (UIAlertController *)alertControllerWithStyle:(UIAlertControllerStyle)style title:(NSString *)title message:(NSString *)message actions:(NSArray *)actions targetController:(UIViewController *)targetController;
17 |
18 | /**
19 | * 有configurationHandler
20 | */
21 | + (UIAlertController *)alertControllerWithStyle:(UIAlertControllerStyle)style title:(NSString *)title message:(NSString *)message actions:(NSArray *)actions configurationHandler:(void (^)(UITextField *textField))configurationHandler targetController:(UIViewController *)targetController;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPTool/JPAlertControllerTool.m:
--------------------------------------------------------------------------------
1 | //
2 | // JPAlertControllerTool.m
3 | // Infinitee2.0-Design
4 | //
5 | // Created by Jill on 16/8/16.
6 | // Copyright © 2016年 陈珏洁. All rights reserved.
7 | //
8 |
9 | #import "JPAlertControllerTool.h"
10 |
11 | @implementation JPAlertControllerTool
12 |
13 | + (UIAlertController *)alertControllerWithStyle:(UIAlertControllerStyle)style title:(NSString *)title message:(NSString *)message actions:(NSArray *)actions targetController:(UIViewController *)targetController {
14 | return [self alertControllerWithStyle:style title:title message:message actions:actions configurationHandler:nil targetController:targetController];
15 | }
16 |
17 | + (UIAlertController *)alertControllerWithStyle:(UIAlertControllerStyle)style title:(NSString *)title message:(NSString *)message actions:(NSArray *)actions configurationHandler:(void (^)(UITextField *))configurationHandler targetController:(UIViewController *)targetController {
18 |
19 | if (!targetController || actions.count == 0) return nil;
20 |
21 | UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:style];
22 | for (UIAlertAction *action in actions) {
23 | [alertController addAction:action];
24 | }
25 | if (configurationHandler) [alertController addTextFieldWithConfigurationHandler:configurationHandler];
26 | [targetController presentViewController:alertController animated:YES completion:nil];
27 |
28 | return alertController;
29 | }
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/JPBasic/Classes/JPTool/JPDeviceTool.h:
--------------------------------------------------------------------------------
1 | //
2 | // JPDeviceTool.h
3 | // WoLive
4 | //
5 | // Created by 周健平 on 2018/10/9.
6 | // Copyright © 2018 zhanglinan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JPDeviceTool : NSObject
12 | + (NSString *)deviceName;
13 | + (NSString *)systemVersion;
14 |
15 | + (BOOL)isPortrait;
16 | + (UIDeviceOrientation)currentOrientation;
17 | + (void)switchDeviceOrientation:(UIDeviceOrientation)orientation;
18 |
19 | + (int)getSignalIntensity:(BOOL)isWiFi;
20 |
21 | + (BOOL)goApplicationOpenSettings;
22 | @end
23 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2020 zhoujianping24@hotmail.com
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/Example/Pods/JPBasic/README.md:
--------------------------------------------------------------------------------
1 | # JPBasic
2 |
3 | [](https://cocoapods.org/pods/JPBasic)
4 | [](https://cocoapods.org/pods/JPBasic)
5 | [](https://cocoapods.org/pods/JPBasic)
6 |
7 | ##### 开发常用的分类、工具类、宏、常量。
8 |
9 | ## Installation
10 |
11 | JPBasic is available through [CocoaPods](https://cocoapods.org). To install
12 | it, simply add the following line to your Podfile:
13 |
14 | ```ruby
15 | pod 'JPBasic'
16 | ```
17 |
18 | ## Author
19 |
20 | Email: zhoujianping24@hotmail.com, Blog: https://www.jianshu.com/u/2edfbadd451c
21 |
22 | ## License
23 |
24 | JPBasic is available under the MIT license. See the LICENSE file for more info.
25 |
--------------------------------------------------------------------------------
/Example/Pods/Local Podspecs/FirstLineHeadIndentAnimation.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "FirstLineHeadIndentAnimation",
3 | "version": "0.1.0",
4 | "summary": "A short description of FirstLineHeadIndentAnimation.",
5 | "description": "TODO: Add long description of the pod here.",
6 | "homepage": "https://github.com/zhoujianping24@hotmail.com/FirstLineHeadIndentAnimation",
7 | "license": {
8 | "type": "MIT",
9 | "file": "LICENSE"
10 | },
11 | "authors": {
12 | "zhoujianping24@hotmail.com": "zhoujianping24@hotmail.com"
13 | },
14 | "source": {
15 | "git": "https://github.com/zhoujianping24@hotmail.com/FirstLineHeadIndentAnimation.git",
16 | "tag": "0.1.0"
17 | },
18 | "platforms": {
19 | "ios": "8.0"
20 | },
21 | "source_files": "FirstLineHeadIndentAnimation/Classes/**/*"
22 | }
23 |
--------------------------------------------------------------------------------
/Example/Pods/MJExtension/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-2019 MJExtension (https://github.com/CoderMJLee/MJExtension)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/Example/Pods/MJExtension/MJExtension/MJExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJExtension.h
3 | // MJExtension
4 | //
5 | // Created by mj on 14-1-15.
6 | // Copyright (c) 2014年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "NSObject+MJCoding.h"
11 | #import "NSObject+MJProperty.h"
12 | #import "NSObject+MJClass.h"
13 | #import "NSObject+MJKeyValue.h"
14 | #import "NSString+MJExtension.h"
15 | #import "MJExtensionConst.h"
16 |
17 | #import "MJFoundation.h"
18 |
19 | //! Project version number for MJExtension.
20 | FOUNDATION_EXPORT double MJExtensionVersionNumber;
21 |
22 | //! Project version string for MJExtension.
23 | FOUNDATION_EXPORT const unsigned char MJExtensionVersionString[];
24 |
25 | // In this header, you should import all the public headers of your framework using statements like #import
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Example/Pods/MJExtension/MJExtension/MJExtensionConst.m:
--------------------------------------------------------------------------------
1 | #ifndef __MJExtensionConst__M__
2 | #define __MJExtensionConst__M__
3 |
4 | #import
5 |
6 | /**
7 | * 成员变量类型(属性类型)
8 | */
9 | NSString *const MJPropertyTypeInt = @"i";
10 | NSString *const MJPropertyTypeShort = @"s";
11 | NSString *const MJPropertyTypeFloat = @"f";
12 | NSString *const MJPropertyTypeDouble = @"d";
13 | NSString *const MJPropertyTypeLong = @"l";
14 | NSString *const MJPropertyTypeLongLong = @"q";
15 | NSString *const MJPropertyTypeChar = @"c";
16 | NSString *const MJPropertyTypeBOOL1 = @"c";
17 | NSString *const MJPropertyTypeBOOL2 = @"b";
18 | NSString *const MJPropertyTypePointer = @"*";
19 |
20 | NSString *const MJPropertyTypeIvar = @"^{objc_ivar=}";
21 | NSString *const MJPropertyTypeMethod = @"^{objc_method=}";
22 | NSString *const MJPropertyTypeBlock = @"@?";
23 | NSString *const MJPropertyTypeClass = @"#";
24 | NSString *const MJPropertyTypeSEL = @":";
25 | NSString *const MJPropertyTypeId = @"@";
26 |
27 | #endif
--------------------------------------------------------------------------------
/Example/Pods/MJExtension/MJExtension/MJFoundation.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJFoundation.h
3 | // MJExtensionExample
4 | //
5 | // Created by MJ Lee on 14/7/16.
6 | // Copyright (c) 2014年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MJFoundation : NSObject
12 |
13 | + (BOOL)isClassFromFoundation:(Class)c;
14 | + (BOOL)isFromNSObjectProtocolProperty:(NSString *)propertyName;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/MJExtension/MJExtension/MJProperty.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJProperty.h
3 | // MJExtensionExample
4 | //
5 | // Created by MJ Lee on 15/4/17.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | // 包装一个成员属性
8 |
9 | #import
10 | #import
11 | #import "MJPropertyType.h"
12 | #import "MJPropertyKey.h"
13 |
14 | /**
15 | * 包装一个成员
16 | */
17 | @interface MJProperty : NSObject
18 | /** 成员属性 */
19 | @property (nonatomic, assign) objc_property_t property;
20 | /** 成员属性的名字 */
21 | @property (nonatomic, readonly) NSString *name;
22 |
23 | /** 成员属性的类型 */
24 | @property (nonatomic, readonly) MJPropertyType *type;
25 | /** 成员属性来源于哪个类(可能是父类) */
26 | @property (nonatomic, assign) Class srcClass;
27 |
28 | /**** 同一个成员属性 - 父类和子类的行为可能不一致(originKey、propertyKeys、objectClassInArray) ****/
29 | /** 设置最原始的key */
30 | - (void)setOriginKey:(id)originKey forClass:(Class)c;
31 | /** 对应着字典中的多级key(里面存放的数组,数组里面都是MJPropertyKey对象) */
32 | - (NSArray *)propertyKeysForClass:(Class)c;
33 |
34 | /** 模型数组中的模型类型 */
35 | - (void)setObjectClassInArray:(Class)objectClass forClass:(Class)c;
36 | - (Class)objectClassInArrayForClass:(Class)c;
37 | /**** 同一个成员变量 - 父类和子类的行为可能不一致(key、keys、objectClassInArray) ****/
38 |
39 | /**
40 | * 设置object的成员变量值
41 | */
42 | - (void)setValue:(id)value forObject:(id)object;
43 | /**
44 | * 得到object的成员属性值
45 | */
46 | - (id)valueForObject:(id)object;
47 |
48 | /**
49 | * 初始化
50 | */
51 | + (instancetype)cachedPropertyWithProperty:(objc_property_t)property;
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/Example/Pods/MJExtension/MJExtension/MJPropertyKey.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJPropertyKey.h
3 | // MJExtensionExample
4 | //
5 | // Created by MJ Lee on 15/8/11.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef enum {
12 | MJPropertyKeyTypeDictionary = 0, // 字典的key
13 | MJPropertyKeyTypeArray // 数组的key
14 | } MJPropertyKeyType;
15 |
16 | /**
17 | * 属性的key
18 | */
19 | @interface MJPropertyKey : NSObject
20 | /** key的名字 */
21 | @property (copy, nonatomic) NSString *name;
22 | /** key的种类,可能是@"10",可能是@"age" */
23 | @property (assign, nonatomic) MJPropertyKeyType type;
24 |
25 | /**
26 | * 根据当前的key,也就是name,从object(字典或者数组)中取值
27 | */
28 | - (id)valueInObject:(id)object;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Example/Pods/MJExtension/MJExtension/MJPropertyKey.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJPropertyKey.m
3 | // MJExtensionExample
4 | //
5 | // Created by MJ Lee on 15/8/11.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJPropertyKey.h"
10 |
11 | @implementation MJPropertyKey
12 |
13 | - (id)valueInObject:(id)object
14 | {
15 | if ([object isKindOfClass:[NSDictionary class]] && self.type == MJPropertyKeyTypeDictionary) {
16 | return object[self.name];
17 | } else if ([object isKindOfClass:[NSArray class]] && self.type == MJPropertyKeyTypeArray) {
18 | NSArray *array = object;
19 | NSUInteger index = self.name.intValue;
20 | if (index < array.count) return array[index];
21 | return nil;
22 | }
23 | return nil;
24 | }
25 | @end
26 |
--------------------------------------------------------------------------------
/Example/Pods/MJExtension/MJExtension/MJPropertyType.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJPropertyType.h
3 | // MJExtension
4 | //
5 | // Created by mj on 14-1-15.
6 | // Copyright (c) 2014年 小码哥. All rights reserved.
7 | // 包装一种类型
8 |
9 | #import
10 |
11 | /**
12 | * 包装一种类型
13 | */
14 | @interface MJPropertyType : NSObject
15 | /** 类型标识符 */
16 | @property (nonatomic, copy) NSString *code;
17 |
18 | /** 是否为id类型 */
19 | @property (nonatomic, readonly, getter=isIdType) BOOL idType;
20 |
21 | /** 是否为基本数字类型:int、float等 */
22 | @property (nonatomic, readonly, getter=isNumberType) BOOL numberType;
23 |
24 | /** 是否为BOOL类型 */
25 | @property (nonatomic, readonly, getter=isBoolType) BOOL boolType;
26 |
27 | /** 对象类型(如果是基本数据类型,此值为nil) */
28 | @property (nonatomic, readonly) Class typeClass;
29 |
30 | /** 类型是否来自于Foundation框架,比如NSString、NSArray */
31 | @property (nonatomic, readonly, getter = isFromFoundation) BOOL fromFoundation;
32 | /** 类型是否不支持KVC */
33 | @property (nonatomic, readonly, getter = isKVCDisabled) BOOL KVCDisabled;
34 |
35 | /**
36 | * 获得缓存的类型对象
37 | */
38 | + (instancetype)cachedTypeWithCode:(NSString *)code;
39 | @end
--------------------------------------------------------------------------------
/Example/Pods/MJExtension/MJExtension/NSObject+MJCoding.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+MJCoding.h
3 | // MJExtension
4 | //
5 | // Created by mj on 14-1-15.
6 | // Copyright (c) 2014年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MJExtensionConst.h"
11 |
12 | /**
13 | * Codeing协议
14 | */
15 | @protocol MJCoding
16 | @optional
17 | /**
18 | * 这个数组中的属性名才会进行归档
19 | */
20 | + (NSArray *)mj_allowedCodingPropertyNames;
21 | /**
22 | * 这个数组中的属性名将会被忽略:不进行归档
23 | */
24 | + (NSArray *)mj_ignoredCodingPropertyNames;
25 | @end
26 |
27 | @interface NSObject (MJCoding)
28 | /**
29 | * 解码(从文件中解析对象)
30 | */
31 | - (void)mj_decode:(NSCoder *)decoder;
32 | /**
33 | * 编码(将对象写入文件中)
34 | */
35 | - (void)mj_encode:(NSCoder *)encoder;
36 | @end
37 |
38 | /**
39 | 归档的实现
40 | */
41 | #define MJCodingImplementation \
42 | - (id)initWithCoder:(NSCoder *)decoder \
43 | { \
44 | if (self = [super init]) { \
45 | [self mj_decode:decoder]; \
46 | } \
47 | return self; \
48 | } \
49 | \
50 | - (void)encodeWithCoder:(NSCoder *)encoder \
51 | { \
52 | [self mj_encode:encoder]; \
53 | }
54 |
55 | #define MJExtensionCodingImplementation MJCodingImplementation
--------------------------------------------------------------------------------
/Example/Pods/MJExtension/MJExtension/NSString+MJExtension.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+MJExtension.h
3 | // MJExtensionExample
4 | //
5 | // Created by MJ Lee on 15/6/7.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MJExtensionConst.h"
11 |
12 | @interface NSString (MJExtension)
13 | /**
14 | * 驼峰转下划线(loveYou -> love_you)
15 | */
16 | - (NSString *)mj_underlineFromCamel;
17 | /**
18 | * 下划线转驼峰(love_you -> loveYou)
19 | */
20 | - (NSString *)mj_camelFromUnderline;
21 | /**
22 | * 首字母变大写
23 | */
24 | - (NSString *)mj_firstCharUpper;
25 | /**
26 | * 首字母变小写
27 | */
28 | - (NSString *)mj_firstCharLower;
29 |
30 | - (BOOL)mj_isPureInt;
31 |
32 | - (NSURL *)mj_url;
33 | @end
34 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshFooter.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MJRefreshAutoFooter : MJRefreshFooter
14 | /** 是否自动刷新(默认为YES) */
15 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh;
16 |
17 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
18 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性");
19 |
20 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
21 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent;
22 |
23 | /** 自动触发次数, 默认为 1, 仅在拖拽 ScrollView 时才生效,
24 |
25 | 如果为 -1, 则为无限触发
26 | */
27 | @property (nonatomic) NSInteger autoTriggerTimes;
28 | @end
29 |
30 | NS_ASSUME_NONNULL_END
31 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshFooter.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MJRefreshBackFooter : MJRefreshFooter
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // MJRefreshFooter.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/5.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 上拉刷新控件
9 |
10 | #import "MJRefreshComponent.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface MJRefreshFooter : MJRefreshComponent
15 | /** 创建footer */
16 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentAction)refreshingBlock;
17 | /** 创建footer */
18 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
19 |
20 | /** 提示没有更多的数据 */
21 | - (void)endRefreshingWithNoMoreData;
22 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData");
23 |
24 | /** 重置没有更多的数据(消除没有更多数据的状态) */
25 | - (void)resetNoMoreData;
26 |
27 | /** 忽略多少scrollView的contentInset的bottom */
28 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom;
29 |
30 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */
31 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden MJRefreshDeprecated("已废弃此属性,开发者请自行控制footer的显示和隐藏");
32 | @end
33 |
34 | NS_ASSUME_NONNULL_END
35 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.m:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // MJRefreshFooter.m
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/5.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | //
9 |
10 | #import "MJRefreshFooter.h"
11 | #include "UIScrollView+MJRefresh.h"
12 |
13 | @interface MJRefreshFooter()
14 |
15 | @end
16 |
17 | @implementation MJRefreshFooter
18 | #pragma mark - 构造方法
19 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentAction)refreshingBlock
20 | {
21 | MJRefreshFooter *cmp = [[self alloc] init];
22 | cmp.refreshingBlock = refreshingBlock;
23 | return cmp;
24 | }
25 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action
26 | {
27 | MJRefreshFooter *cmp = [[self alloc] init];
28 | [cmp setRefreshingTarget:target refreshingAction:action];
29 | return cmp;
30 | }
31 |
32 | #pragma mark - 重写父类的方法
33 | - (void)prepare
34 | {
35 | [super prepare];
36 |
37 | // 设置自己的高度
38 | self.mj_h = MJRefreshFooterHeight;
39 |
40 | // 默认不会自动隐藏
41 | // self.automaticallyHidden = NO;
42 | }
43 |
44 | #pragma mark - 公共方法
45 | - (void)endRefreshingWithNoMoreData
46 | {
47 | MJRefreshDispatchAsyncOnMainQueue(self.state = MJRefreshStateNoMoreData;)
48 | }
49 |
50 | - (void)noticeNoMoreData
51 | {
52 | [self endRefreshingWithNoMoreData];
53 | }
54 |
55 | - (void)resetNoMoreData
56 | {
57 | MJRefreshDispatchAsyncOnMainQueue(self.state = MJRefreshStateIdle;)
58 | }
59 |
60 | - (void)setAutomaticallyHidden:(BOOL)automaticallyHidden
61 | {
62 | _automaticallyHidden = automaticallyHidden;
63 | }
64 | @end
65 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // MJRefreshHeader.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/4.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 下拉刷新控件:负责监控用户下拉的状态
9 |
10 | #import "MJRefreshComponent.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface MJRefreshHeader : MJRefreshComponent
15 | /** 创建header */
16 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentAction)refreshingBlock;
17 | /** 创建header */
18 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
19 |
20 | /** 这个key用来存储上一次下拉刷新成功的时间 */
21 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey;
22 | /** 上一次下拉刷新成功的时间 */
23 | @property (strong, nonatomic, readonly, nullable) NSDate *lastUpdatedTime;
24 |
25 | /** 忽略多少scrollView的contentInset的top */
26 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop;
27 |
28 | /** 默认是关闭状态, 如果遇到 CollectionView 的动画异常问题可以尝试打开 */
29 | @property (nonatomic) BOOL isCollectionViewAnimationBug;
30 | @end
31 |
32 | NS_ASSUME_NONNULL_END
33 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoGifFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoStateFooter.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter
14 | @property (weak, nonatomic, readonly) UIImageView *gifView;
15 |
16 | /** 设置state状态下的动画图片images 动画持续时间duration*/
17 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
18 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoNormalFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoStateFooter.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter
14 | @property (weak, nonatomic, readonly) UIActivityIndicatorView *loadingView;
15 |
16 | /** 菊花的样式 */
17 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle MJRefreshDeprecated("first deprecated in 3.2.2 - Use `loadingView` property");
18 | @end
19 |
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoStateFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/6/13.
6 | // Copyright © 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoFooter.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter
14 | /** 文字距离圈圈、箭头的距离 */
15 | @property (assign, nonatomic) CGFloat labelLeftInset;
16 | /** 显示刷新状态的label */
17 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
18 |
19 | /** 设置state状态下的文字 */
20 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
21 |
22 | /** 隐藏刷新状态的文字 */
23 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden;
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackGifFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackStateFooter.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter
14 | @property (weak, nonatomic, readonly) UIImageView *gifView;
15 |
16 | /** 设置state状态下的动画图片images 动画持续时间duration*/
17 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
18 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackNormalFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackStateFooter.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter
14 | @property (weak, nonatomic, readonly) UIImageView *arrowView;
15 | @property (weak, nonatomic, readonly) UIActivityIndicatorView *loadingView;
16 |
17 | /** 菊花的样式 */
18 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle MJRefreshDeprecated("first deprecated in 3.2.2 - Use `loadingView` property");
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackStateFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/6/13.
6 | // Copyright © 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackFooter.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter
14 | /** 文字距离圈圈、箭头的距离 */
15 | @property (assign, nonatomic) CGFloat labelLeftInset;
16 | /** 显示刷新状态的label */
17 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
18 | /** 设置state状态下的文字 */
19 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
20 |
21 | /** 获取state状态下的title */
22 | - (NSString *)titleForState:(MJRefreshState)state;
23 | @end
24 |
25 | NS_ASSUME_NONNULL_END
26 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshGifHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshStateHeader.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MJRefreshGifHeader : MJRefreshStateHeader
14 | @property (weak, nonatomic, readonly) UIImageView *gifView;
15 |
16 | /** 设置state状态下的动画图片images 动画持续时间duration*/
17 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
18 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshNormalHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshStateHeader.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MJRefreshNormalHeader : MJRefreshStateHeader
14 | @property (weak, nonatomic, readonly) UIImageView *arrowView;
15 | @property (weak, nonatomic, readonly) UIActivityIndicatorView *loadingView;
16 |
17 |
18 | /** 菊花的样式 */
19 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle MJRefreshDeprecated("first deprecated in 3.2.2 - Use `loadingView` property");
20 | @end
21 |
22 | NS_ASSUME_NONNULL_END
23 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshStateHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshHeader.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MJRefreshStateHeader : MJRefreshHeader
14 | #pragma mark - 刷新时间相关
15 | /** 利用这个block来决定显示的更新时间文字 */
16 | @property (copy, nonatomic, nullable) NSString *(^lastUpdatedTimeText)(NSDate * _Nullable lastUpdatedTime);
17 | /** 显示上一次刷新时间的label */
18 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel;
19 |
20 | #pragma mark - 状态相关
21 | /** 文字距离圈圈、箭头的距离 */
22 | @property (assign, nonatomic) CGFloat labelLeftInset;
23 | /** 显示刷新状态的label */
24 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
25 | /** 设置state状态下的文字 */
26 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
27 | @end
28 |
29 | NS_ASSUME_NONNULL_END
30 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/ko.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "MJRefreshHeaderIdleText" = "아래로 당겨 새로고침";
2 | "MJRefreshHeaderPullingText" = "놓으면 새로고침";
3 | "MJRefreshHeaderRefreshingText" = "로딩중...";
4 |
5 | "MJRefreshAutoFooterIdleText" = "탭 또는 위로 당겨 로드함";
6 | "MJRefreshAutoFooterRefreshingText" = "로딩중...";
7 | "MJRefreshAutoFooterNoMoreDataText" = "더이상 데이터 없음";
8 |
9 | "MJRefreshBackFooterIdleText" = "위로 당겨 더 로드 가능";
10 | "MJRefreshBackFooterPullingText" = "놓으면 더 로드됨.";
11 | "MJRefreshBackFooterRefreshingText" = "로딩중...";
12 | "MJRefreshBackFooterNoMoreDataText" = "더이상 데이터 없음";
13 |
14 | "MJRefreshHeaderLastTimeText" = "마지막 업데이트: ";
15 | "MJRefreshHeaderDateTodayText" = "오늘";
16 | "MJRefreshHeaderNoneLastDateText" = "기록 없음";
17 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/ru.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/ru.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/uk.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/uk.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hant.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "MJRefreshHeaderIdleText" = "下拉可以刷新";
2 | "MJRefreshHeaderPullingText" = "鬆開立即刷新";
3 | "MJRefreshHeaderRefreshingText" = "正在刷新數據中...";
4 |
5 | "MJRefreshAutoFooterIdleText" = "點擊或上拉加載更多";
6 | "MJRefreshAutoFooterRefreshingText" = "正在加載更多的數據...";
7 | "MJRefreshAutoFooterNoMoreDataText" = "已經全部加載完畢";
8 |
9 | "MJRefreshBackFooterIdleText" = "上拉可以加載更多";
10 | "MJRefreshBackFooterPullingText" = "鬆開立即加載更多";
11 | "MJRefreshBackFooterRefreshingText" = "正在加載更多的數據...";
12 | "MJRefreshBackFooterNoMoreDataText" = "已經全部加載完畢";
13 |
14 | "MJRefreshHeaderLastTimeText" = "最後更新:";
15 | "MJRefreshHeaderDateTodayText" = "今天";
16 | "MJRefreshHeaderNoneLastDateText" = "無記錄";
17 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/MJRefresh.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 |
4 | #import "UIScrollView+MJRefresh.h"
5 | #import "UIScrollView+MJExtension.h"
6 | #import "UIView+MJExtension.h"
7 |
8 | #import "MJRefreshNormalHeader.h"
9 | #import "MJRefreshGifHeader.h"
10 |
11 | #import "MJRefreshBackNormalFooter.h"
12 | #import "MJRefreshBackGifFooter.h"
13 | #import "MJRefreshAutoNormalFooter.h"
14 | #import "MJRefreshAutoGifFooter.h"
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/MJRefreshConfig.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshConfig.h
3 | //
4 | // Created by Frank on 2018/11/27.
5 | // Copyright © 2018 小码哥. All rights reserved.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | @interface MJRefreshConfig : NSObject
13 |
14 | /** 默认使用的语言版本, 默认为 nil. 将随系统的语言自动改变 */
15 | @property (copy, nonatomic, nullable) NSString *languageCode;
16 |
17 | /** @return Singleton Config instance */
18 | + (instancetype)defaultConfig;
19 |
20 | - (instancetype)init NS_UNAVAILABLE;
21 | + (instancetype)new NS_UNAVAILABLE;
22 |
23 | @end
24 |
25 | NS_ASSUME_NONNULL_END
26 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/MJRefreshConfig.m:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshConfig.m
3 | //
4 | // Created by Frank on 2018/11/27.
5 | // Copyright © 2018 小码哥. All rights reserved.
6 | //
7 |
8 | #import "MJRefreshConfig.h"
9 |
10 | @implementation MJRefreshConfig
11 |
12 | static MJRefreshConfig *mj_RefreshConfig = nil;
13 |
14 | + (instancetype)defaultConfig {
15 | static dispatch_once_t onceToken;
16 | dispatch_once(&onceToken, ^{
17 | mj_RefreshConfig = [[self alloc] init];
18 | });
19 | return mj_RefreshConfig;
20 | }
21 |
22 |
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSBundle+MJRefresh.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 16/6/13.
6 | // Copyright © 2016年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSBundle (MJRefresh)
14 | + (instancetype)mj_refreshBundle;
15 | + (UIImage *)mj_arrowImage;
16 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(nullable NSString *)value;
17 | + (NSString *)mj_localizedStringForKey:(NSString *)key;
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIScrollView+Extension.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 14-5-28.
7 | // Copyright (c) 2014年 小码哥. All rights reserved.
8 | //
9 |
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface UIScrollView (MJExtension)
15 | @property (readonly, nonatomic) UIEdgeInsets mj_inset;
16 |
17 | @property (assign, nonatomic) CGFloat mj_insetT;
18 | @property (assign, nonatomic) CGFloat mj_insetB;
19 | @property (assign, nonatomic) CGFloat mj_insetL;
20 | @property (assign, nonatomic) CGFloat mj_insetR;
21 |
22 | @property (assign, nonatomic) CGFloat mj_offsetX;
23 | @property (assign, nonatomic) CGFloat mj_offsetY;
24 |
25 | @property (assign, nonatomic) CGFloat mj_contentW;
26 | @property (assign, nonatomic) CGFloat mj_contentH;
27 | @end
28 |
29 | NS_ASSUME_NONNULL_END
30 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/UIScrollView+MJRefresh.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIScrollView+MJRefresh.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/4.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 给ScrollView增加下拉刷新、上拉刷新的功能
9 |
10 | #import
11 | #import "MJRefreshConst.h"
12 |
13 | @class MJRefreshHeader, MJRefreshFooter;
14 |
15 | NS_ASSUME_NONNULL_BEGIN
16 |
17 | @interface UIScrollView (MJRefresh)
18 | /** 下拉刷新控件 */
19 | @property (strong, nonatomic, nullable) MJRefreshHeader *mj_header;
20 | @property (strong, nonatomic, nullable) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header");
21 | /** 上拉刷新控件 */
22 | @property (strong, nonatomic, nullable) MJRefreshFooter *mj_footer;
23 | @property (strong, nonatomic, nullable) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer");
24 |
25 | #pragma mark - other
26 | - (NSInteger)mj_totalDataCount;
27 |
28 | @end
29 |
30 | NS_ASSUME_NONNULL_END
31 |
--------------------------------------------------------------------------------
/Example/Pods/MJRefresh/MJRefresh/UIView+MJExtension.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIView+Extension.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 14-5-28.
7 | // Copyright (c) 2014年 小码哥. All rights reserved.
8 | //
9 |
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface UIView (MJExtension)
15 | @property (assign, nonatomic) CGFloat mj_x;
16 | @property (assign, nonatomic) CGFloat mj_y;
17 | @property (assign, nonatomic) CGFloat mj_w;
18 | @property (assign, nonatomic) CGFloat mj_h;
19 | @property (assign, nonatomic) CGSize mj_size;
20 | @property (assign, nonatomic) CGPoint mj_origin;
21 | @end
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/Example/Pods/Masonry/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
--------------------------------------------------------------------------------
/Example/Pods/Masonry/Masonry/MASCompositeConstraint.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASCompositeConstraint.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 21/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASConstraint.h"
10 | #import "MASUtilities.h"
11 |
12 | /**
13 | * A group of MASConstraint objects
14 | */
15 | @interface MASCompositeConstraint : MASConstraint
16 |
17 | /**
18 | * Creates a composite with a predefined array of children
19 | *
20 | * @param children child MASConstraints
21 | *
22 | * @return a composite constraint
23 | */
24 | - (id)initWithChildren:(NSArray *)children;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Example/Pods/Masonry/Masonry/MASLayoutConstraint.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASLayoutConstraint.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 |
11 | /**
12 | * When you are debugging or printing the constraints attached to a view this subclass
13 | * makes it easier to identify which constraints have been created via Masonry
14 | */
15 | @interface MASLayoutConstraint : NSLayoutConstraint
16 |
17 | /**
18 | * a key to associate with this constraint
19 | */
20 | @property (nonatomic, strong) id mas_key;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/Example/Pods/Masonry/Masonry/MASLayoutConstraint.m:
--------------------------------------------------------------------------------
1 | //
2 | // MASLayoutConstraint.m
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASLayoutConstraint.h"
10 |
11 | @implementation MASLayoutConstraint
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/Pods/Masonry/Masonry/MASViewAttribute.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASViewAttribute.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 21/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 |
11 | /**
12 | * An immutable tuple which stores the view and the related NSLayoutAttribute.
13 | * Describes part of either the left or right hand side of a constraint equation
14 | */
15 | @interface MASViewAttribute : NSObject
16 |
17 | /**
18 | * The view which the reciever relates to. Can be nil if item is not a view.
19 | */
20 | @property (nonatomic, weak, readonly) MAS_VIEW *view;
21 |
22 | /**
23 | * The item which the reciever relates to.
24 | */
25 | @property (nonatomic, weak, readonly) id item;
26 |
27 | /**
28 | * The attribute which the reciever relates to
29 | */
30 | @property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute;
31 |
32 | /**
33 | * Convenience initializer.
34 | */
35 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute;
36 |
37 | /**
38 | * The designated initializer.
39 | */
40 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute;
41 |
42 | /**
43 | * Determine whether the layoutAttribute is a size attribute
44 | *
45 | * @return YES if layoutAttribute is equal to NSLayoutAttributeWidth or NSLayoutAttributeHeight
46 | */
47 | - (BOOL)isSizeAttribute;
48 |
49 | @end
50 |
--------------------------------------------------------------------------------
/Example/Pods/Masonry/Masonry/MASViewAttribute.m:
--------------------------------------------------------------------------------
1 | //
2 | // MASViewAttribute.m
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 21/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASViewAttribute.h"
10 |
11 | @implementation MASViewAttribute
12 |
13 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute {
14 | self = [self initWithView:view item:view layoutAttribute:layoutAttribute];
15 | return self;
16 | }
17 |
18 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute {
19 | self = [super init];
20 | if (!self) return nil;
21 |
22 | _view = view;
23 | _item = item;
24 | _layoutAttribute = layoutAttribute;
25 |
26 | return self;
27 | }
28 |
29 | - (BOOL)isSizeAttribute {
30 | return self.layoutAttribute == NSLayoutAttributeWidth
31 | || self.layoutAttribute == NSLayoutAttributeHeight;
32 | }
33 |
34 | - (BOOL)isEqual:(MASViewAttribute *)viewAttribute {
35 | if ([viewAttribute isKindOfClass:self.class]) {
36 | return self.view == viewAttribute.view
37 | && self.layoutAttribute == viewAttribute.layoutAttribute;
38 | }
39 | return [super isEqual:viewAttribute];
40 | }
41 |
42 | - (NSUInteger)hash {
43 | return MAS_NSUINTROTATE([self.view hash], MAS_NSUINT_BIT / 2) ^ self.layoutAttribute;
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/Example/Pods/Masonry/Masonry/MASViewConstraint.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASViewConstraint.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 20/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASViewAttribute.h"
10 | #import "MASConstraint.h"
11 | #import "MASLayoutConstraint.h"
12 | #import "MASUtilities.h"
13 |
14 | /**
15 | * A single constraint.
16 | * Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view
17 | */
18 | @interface MASViewConstraint : MASConstraint
19 |
20 | /**
21 | * First item/view and first attribute of the NSLayoutConstraint
22 | */
23 | @property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute;
24 |
25 | /**
26 | * Second item/view and second attribute of the NSLayoutConstraint
27 | */
28 | @property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute;
29 |
30 | /**
31 | * initialises the MASViewConstraint with the first part of the equation
32 | *
33 | * @param firstViewAttribute view.mas_left, view.mas_width etc.
34 | *
35 | * @return a new view constraint
36 | */
37 | - (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute;
38 |
39 | /**
40 | * Returns all MASViewConstraints installed with this view as a first item.
41 | *
42 | * @param view A view to retrieve constraints for.
43 | *
44 | * @return An array of MASViewConstraints.
45 | */
46 | + (NSArray *)installedConstraintsForView:(MAS_VIEW *)view;
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/Example/Pods/Masonry/Masonry/Masonry.h:
--------------------------------------------------------------------------------
1 | //
2 | // Masonry.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 20/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | //! Project version number for Masonry.
12 | FOUNDATION_EXPORT double MasonryVersionNumber;
13 |
14 | //! Project version string for Masonry.
15 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[];
16 |
17 | #import "MASUtilities.h"
18 | #import "View+MASAdditions.h"
19 | #import "View+MASShorthandAdditions.h"
20 | #import "ViewController+MASAdditions.h"
21 | #import "NSArray+MASAdditions.h"
22 | #import "NSArray+MASShorthandAdditions.h"
23 | #import "MASConstraint.h"
24 | #import "MASCompositeConstraint.h"
25 | #import "MASViewAttribute.h"
26 | #import "MASViewConstraint.h"
27 | #import "MASConstraintMaker.h"
28 | #import "MASLayoutConstraint.h"
29 | #import "NSLayoutConstraint+MASDebugAdditions.h"
30 |
--------------------------------------------------------------------------------
/Example/Pods/Masonry/Masonry/NSArray+MASShorthandAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+MASShorthandAdditions.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 22/07/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "NSArray+MASAdditions.h"
10 |
11 | #ifdef MAS_SHORTHAND
12 |
13 | /**
14 | * Shorthand array additions without the 'mas_' prefixes,
15 | * only enabled if MAS_SHORTHAND is defined
16 | */
17 | @interface NSArray (MASShorthandAdditions)
18 |
19 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block;
20 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block;
21 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block;
22 |
23 | @end
24 |
25 | @implementation NSArray (MASShorthandAdditions)
26 |
27 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block {
28 | return [self mas_makeConstraints:block];
29 | }
30 |
31 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block {
32 | return [self mas_updateConstraints:block];
33 | }
34 |
35 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block {
36 | return [self mas_remakeConstraints:block];
37 | }
38 |
39 | @end
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/Example/Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSLayoutConstraint+MASDebugAdditions.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 |
11 | /**
12 | * makes debug and log output of NSLayoutConstraints more readable
13 | */
14 | @interface NSLayoutConstraint (MASDebugAdditions)
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Masonry/Masonry/ViewController+MASAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+MASAdditions.h
3 | // Masonry
4 | //
5 | // Created by Craig Siemens on 2015-06-23.
6 | //
7 | //
8 |
9 | #import "MASUtilities.h"
10 | #import "MASConstraintMaker.h"
11 | #import "MASViewAttribute.h"
12 |
13 | #ifdef MAS_VIEW_CONTROLLER
14 |
15 | @interface MAS_VIEW_CONTROLLER (MASAdditions)
16 |
17 | /**
18 | * following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute
19 | */
20 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide;
21 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide;
22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop;
23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom;
24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop;
25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom;
26 |
27 |
28 | @end
29 |
30 | #endif
31 |
--------------------------------------------------------------------------------
/Example/Pods/Masonry/Masonry/ViewController+MASAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+MASAdditions.m
3 | // Masonry
4 | //
5 | // Created by Craig Siemens on 2015-06-23.
6 | //
7 | //
8 |
9 | #import "ViewController+MASAdditions.h"
10 |
11 | #ifdef MAS_VIEW_CONTROLLER
12 |
13 | @implementation MAS_VIEW_CONTROLLER (MASAdditions)
14 |
15 | - (MASViewAttribute *)mas_topLayoutGuide {
16 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
17 | }
18 | - (MASViewAttribute *)mas_topLayoutGuideTop {
19 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeTop];
20 | }
21 | - (MASViewAttribute *)mas_topLayoutGuideBottom {
22 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
23 | }
24 |
25 | - (MASViewAttribute *)mas_bottomLayoutGuide {
26 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop];
27 | }
28 | - (MASViewAttribute *)mas_bottomLayoutGuideTop {
29 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop];
30 | }
31 | - (MASViewAttribute *)mas_bottomLayoutGuideBottom {
32 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
33 | }
34 |
35 |
36 |
37 | @end
38 |
39 | #endif
40 |
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2011-2018 Sam Vermette, Tobias Tiemerding and contributors.
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 |
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVIndefiniteAnimatedView.h:
--------------------------------------------------------------------------------
1 | //
2 | // SVIndefiniteAnimatedView.h
3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
4 | //
5 | // Copyright (c) 2014-2018 Guillaume Campagna. All rights reserved.
6 | //
7 |
8 | #import
9 |
10 | @interface SVIndefiniteAnimatedView : UIView
11 |
12 | @property (nonatomic, assign) CGFloat strokeThickness;
13 | @property (nonatomic, assign) CGFloat radius;
14 | @property (nonatomic, strong) UIColor *strokeColor;
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressAnimatedView.h:
--------------------------------------------------------------------------------
1 | //
2 | // SVProgressAnimatedView.h
3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
4 | //
5 | // Copyright (c) 2017-2018 Tobias Tiemerding. All rights reserved.
6 | //
7 |
8 | #import
9 |
10 | @interface SVProgressAnimatedView : UIView
11 |
12 | @property (nonatomic, assign) CGFloat radius;
13 | @property (nonatomic, assign) CGFloat strokeThickness;
14 | @property (nonatomic, strong) UIColor *strokeColor;
15 | @property (nonatomic, assign) CGFloat strokeEnd;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@2x.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@3x.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@2x.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@3x.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@2x.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@3x.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@2x.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rogue24/FirstLineHeadIndentAnimation/d6ad560f9287e5e39b9502693753fcc26d3fbc13/Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@3x.png
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.h:
--------------------------------------------------------------------------------
1 | //
2 | // SVRadialGradientLayer.h
3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
4 | //
5 | // Copyright (c) 2014-2018 Tobias Tiemerding. All rights reserved.
6 | //
7 |
8 | #import
9 |
10 | @interface SVRadialGradientLayer : CALayer
11 |
12 | @property (nonatomic) CGPoint gradientCenter;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Example/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.m:
--------------------------------------------------------------------------------
1 | //
2 | // SVRadialGradientLayer.m
3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
4 | //
5 | // Copyright (c) 2014-2018 Tobias Tiemerding. All rights reserved.
6 | //
7 |
8 | #import "SVRadialGradientLayer.h"
9 |
10 | @implementation SVRadialGradientLayer
11 |
12 | - (void)drawInContext:(CGContextRef)context {
13 | size_t locationsCount = 2;
14 | CGFloat locations[2] = {0.0f, 1.0f};
15 | CGFloat colors[8] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.75f};
16 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
17 | CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, colors, locations, locationsCount);
18 | CGColorSpaceRelease(colorSpace);
19 |
20 | float radius = MIN(self.bounds.size.width , self.bounds.size.height);
21 | CGContextDrawRadialGradient (context, gradient, self.gradientCenter, 0, self.gradientCenter, radius, kCGGradientDrawsAfterEndLocation);
22 | CGGradientRelease(gradient);
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JPBasic/JPBasic-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 | 0.1.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JPBasic/JPBasic-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_JPBasic : NSObject
3 | @end
4 | @implementation PodsDummy_JPBasic
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JPBasic/JPBasic-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JPBasic/JPBasic.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JPBasic
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/pop"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/JPBasic
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JPBasic/JPBasic.modulemap:
--------------------------------------------------------------------------------
1 | framework module JPBasic {
2 | umbrella header "JPBasic-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/JPBasic/JPBasic.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JPBasic
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/pop"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/JPBasic
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJExtension/MJExtension-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.2.1
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJExtension/MJExtension-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_MJExtension : NSObject
3 | @end
4 | @implementation PodsDummy_MJExtension
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJExtension/MJExtension-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJExtension/MJExtension-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 "MJExtension.h"
14 | #import "MJExtensionConst.h"
15 | #import "MJFoundation.h"
16 | #import "MJProperty.h"
17 | #import "MJPropertyKey.h"
18 | #import "MJPropertyType.h"
19 | #import "NSObject+MJClass.h"
20 | #import "NSObject+MJCoding.h"
21 | #import "NSObject+MJKeyValue.h"
22 | #import "NSObject+MJProperty.h"
23 | #import "NSString+MJExtension.h"
24 |
25 | FOUNDATION_EXPORT double MJExtensionVersionNumber;
26 | FOUNDATION_EXPORT const unsigned char MJExtensionVersionString[];
27 |
28 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJExtension/MJExtension.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJExtension
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | PODS_BUILD_DIR = ${BUILD_DIR}
4 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
5 | PODS_ROOT = ${SRCROOT}
6 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJExtension
7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
8 | SKIP_INSTALL = YES
9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
10 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJExtension/MJExtension.modulemap:
--------------------------------------------------------------------------------
1 | framework module MJExtension {
2 | umbrella header "MJExtension-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJExtension/MJExtension.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJExtension
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | PODS_BUILD_DIR = ${BUILD_DIR}
4 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
5 | PODS_ROOT = ${SRCROOT}
6 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJExtension
7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
8 | SKIP_INSTALL = YES
9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
10 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJRefresh/MJRefresh-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.4.3
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_MJRefresh : NSObject
3 | @end
4 | @implementation PodsDummy_MJRefresh
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJRefresh/MJRefresh-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJRefresh/MJRefresh-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 "MJRefreshAutoFooter.h"
14 | #import "MJRefreshBackFooter.h"
15 | #import "MJRefreshComponent.h"
16 | #import "MJRefreshFooter.h"
17 | #import "MJRefreshHeader.h"
18 | #import "MJRefreshAutoGifFooter.h"
19 | #import "MJRefreshAutoNormalFooter.h"
20 | #import "MJRefreshAutoStateFooter.h"
21 | #import "MJRefreshBackGifFooter.h"
22 | #import "MJRefreshBackNormalFooter.h"
23 | #import "MJRefreshBackStateFooter.h"
24 | #import "MJRefreshGifHeader.h"
25 | #import "MJRefreshNormalHeader.h"
26 | #import "MJRefreshStateHeader.h"
27 | #import "MJRefresh.h"
28 | #import "MJRefreshConfig.h"
29 | #import "MJRefreshConst.h"
30 | #import "NSBundle+MJRefresh.h"
31 | #import "UIScrollView+MJExtension.h"
32 | #import "UIScrollView+MJRefresh.h"
33 | #import "UIView+MJExtension.h"
34 |
35 | FOUNDATION_EXPORT double MJRefreshVersionNumber;
36 | FOUNDATION_EXPORT const unsigned char MJRefreshVersionString[];
37 |
38 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJRefresh/MJRefresh.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | PODS_BUILD_DIR = ${BUILD_DIR}
4 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
5 | PODS_ROOT = ${SRCROOT}
6 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh
7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
8 | SKIP_INSTALL = YES
9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
10 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJRefresh/MJRefresh.modulemap:
--------------------------------------------------------------------------------
1 | framework module MJRefresh {
2 | umbrella header "MJRefresh-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/MJRefresh/MJRefresh.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | PODS_BUILD_DIR = ${BUILD_DIR}
4 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
5 | PODS_ROOT = ${SRCROOT}
6 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh
7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
8 | SKIP_INSTALL = YES
9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
10 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Masonry/Masonry-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Masonry/Masonry-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Masonry : NSObject
3 | @end
4 | @implementation PodsDummy_Masonry
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Masonry/Masonry-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Masonry/Masonry-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 "MASCompositeConstraint.h"
14 | #import "MASConstraint+Private.h"
15 | #import "MASConstraint.h"
16 | #import "MASConstraintMaker.h"
17 | #import "MASLayoutConstraint.h"
18 | #import "Masonry.h"
19 | #import "MASUtilities.h"
20 | #import "MASViewAttribute.h"
21 | #import "MASViewConstraint.h"
22 | #import "NSArray+MASAdditions.h"
23 | #import "NSArray+MASShorthandAdditions.h"
24 | #import "NSLayoutConstraint+MASDebugAdditions.h"
25 | #import "View+MASAdditions.h"
26 | #import "View+MASShorthandAdditions.h"
27 | #import "ViewController+MASAdditions.h"
28 |
29 | FOUNDATION_EXPORT double MasonryVersionNumber;
30 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[];
31 |
32 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Masonry/Masonry.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Masonry/Masonry.modulemap:
--------------------------------------------------------------------------------
1 | framework module Masonry {
2 | umbrella header "Masonry-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Masonry/Masonry.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FirstLineHeadIndentAnimation_Example/Pods-FirstLineHeadIndentAnimation_Example-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FirstLineHeadIndentAnimation_Example/Pods-FirstLineHeadIndentAnimation_Example-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_FirstLineHeadIndentAnimation_Example : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_FirstLineHeadIndentAnimation_Example
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FirstLineHeadIndentAnimation_Example/Pods-FirstLineHeadIndentAnimation_Example-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_FirstLineHeadIndentAnimation_ExampleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_FirstLineHeadIndentAnimation_ExampleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FirstLineHeadIndentAnimation_Example/Pods-FirstLineHeadIndentAnimation_Example.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_FirstLineHeadIndentAnimation_Example {
2 | umbrella header "Pods-FirstLineHeadIndentAnimation_Example-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FirstLineHeadIndentAnimation_Tests/Pods-FirstLineHeadIndentAnimation_Tests-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FirstLineHeadIndentAnimation_Tests/Pods-FirstLineHeadIndentAnimation_Tests-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 | Generated by CocoaPods - https://cocoapods.org
4 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FirstLineHeadIndentAnimation_Tests/Pods-FirstLineHeadIndentAnimation_Tests-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | Generated by CocoaPods - https://cocoapods.org
18 | Title
19 |
20 | Type
21 | PSGroupSpecifier
22 |
23 |
24 | StringsTable
25 | Acknowledgements
26 | Title
27 | Acknowledgements
28 |
29 |
30 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FirstLineHeadIndentAnimation_Tests/Pods-FirstLineHeadIndentAnimation_Tests-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_FirstLineHeadIndentAnimation_Tests : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_FirstLineHeadIndentAnimation_Tests
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FirstLineHeadIndentAnimation_Tests/Pods-FirstLineHeadIndentAnimation_Tests-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_FirstLineHeadIndentAnimation_TestsVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_FirstLineHeadIndentAnimation_TestsVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FirstLineHeadIndentAnimation_Tests/Pods-FirstLineHeadIndentAnimation_Tests.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_FirstLineHeadIndentAnimation_Tests {
2 | umbrella header "Pods-FirstLineHeadIndentAnimation_Tests-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-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.2.5
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SVProgressHUD : NSObject
3 | @end
4 | @implementation PodsDummy_SVProgressHUD
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-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 "SVIndefiniteAnimatedView.h"
14 | #import "SVProgressAnimatedView.h"
15 | #import "SVProgressHUD.h"
16 | #import "SVRadialGradientLayer.h"
17 |
18 | FOUNDATION_EXPORT double SVProgressHUDVersionNumber;
19 | FOUNDATION_EXPORT const unsigned char SVProgressHUDVersionString[];
20 |
21 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_LDFLAGS = $(inherited) -framework "QuartzCore"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SVProgressHUD
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD.modulemap:
--------------------------------------------------------------------------------
1 | framework module SVProgressHUD {
2 | umbrella header "SVProgressHUD-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_LDFLAGS = $(inherited) -framework "QuartzCore"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SVProgressHUD
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYCache/YYCache-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYCache/YYCache-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_YYCache : NSObject
3 | @end
4 | @implementation PodsDummy_YYCache
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYCache/YYCache-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYCache/YYCache-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 "YYCache.h"
14 | #import "YYDiskCache.h"
15 | #import "YYKVStorage.h"
16 | #import "YYMemoryCache.h"
17 |
18 | FOUNDATION_EXPORT double YYCacheVersionNumber;
19 | FOUNDATION_EXPORT const unsigned char YYCacheVersionString[];
20 |
21 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYCache/YYCache.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYCache
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_LDFLAGS = $(inherited) -l"sqlite3" -framework "CoreFoundation" -framework "QuartzCore" -framework "UIKit"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYCache
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYCache/YYCache.modulemap:
--------------------------------------------------------------------------------
1 | framework module YYCache {
2 | umbrella header "YYCache-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYCache/YYCache.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYCache
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_LDFLAGS = $(inherited) -l"sqlite3" -framework "CoreFoundation" -framework "QuartzCore" -framework "UIKit"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYCache
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYImage/YYImage-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYImage/YYImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_YYImage : NSObject
3 | @end
4 | @implementation PodsDummy_YYImage
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYImage/YYImage-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYImage/YYImage-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 "YYAnimatedImageView.h"
14 | #import "YYFrameImage.h"
15 | #import "YYImage.h"
16 | #import "YYImageCoder.h"
17 | #import "YYSpriteSheetImage.h"
18 |
19 | FOUNDATION_EXPORT double YYImageVersionNumber;
20 | FOUNDATION_EXPORT const unsigned char YYImageVersionString[];
21 |
22 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYImage/YYImage.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYImage
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_LDFLAGS = $(inherited) -l"z" -framework "Accelerate" -framework "AssetsLibrary" -framework "CoreFoundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYImage
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYImage/YYImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module YYImage {
2 | umbrella header "YYImage-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYImage/YYImage.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYImage
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_LDFLAGS = $(inherited) -l"z" -framework "Accelerate" -framework "AssetsLibrary" -framework "CoreFoundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYImage
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYText/YYText-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.7
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYText/YYText-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_YYText : NSObject
3 | @end
4 | @implementation PodsDummy_YYText
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYText/YYText-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYText/YYText-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 "YYTextContainerView.h"
14 | #import "YYTextDebugOption.h"
15 | #import "YYTextEffectWindow.h"
16 | #import "YYTextInput.h"
17 | #import "YYTextKeyboardManager.h"
18 | #import "YYTextLayout.h"
19 | #import "YYTextLine.h"
20 | #import "YYTextMagnifier.h"
21 | #import "YYTextSelectionView.h"
22 | #import "YYTextArchiver.h"
23 | #import "YYTextAttribute.h"
24 | #import "YYTextParser.h"
25 | #import "YYTextRubyAnnotation.h"
26 | #import "YYTextRunDelegate.h"
27 | #import "NSAttributedString+YYText.h"
28 | #import "NSParagraphStyle+YYText.h"
29 | #import "UIPasteboard+YYText.h"
30 | #import "UIView+YYText.h"
31 | #import "YYTextAsyncLayer.h"
32 | #import "YYTextTransaction.h"
33 | #import "YYTextUtilities.h"
34 | #import "YYTextWeakProxy.h"
35 | #import "YYLabel.h"
36 | #import "YYText.h"
37 | #import "YYTextView.h"
38 |
39 | FOUNDATION_EXPORT double YYTextVersionNumber;
40 | FOUNDATION_EXPORT const unsigned char YYTextVersionString[];
41 |
42 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYText/YYText.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYText
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_LDFLAGS = $(inherited) -framework "Accelerate" -framework "CoreFoundation" -framework "CoreText" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYText
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYText/YYText.modulemap:
--------------------------------------------------------------------------------
1 | framework module YYText {
2 | umbrella header "YYText-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYText/YYText.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYText
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_LDFLAGS = $(inherited) -framework "Accelerate" -framework "CoreFoundation" -framework "CoreText" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYText
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYWebImage/YYWebImage-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.5
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYWebImage/YYWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_YYWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_YYWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYWebImage/YYWebImage-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYWebImage/YYWebImage-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 "YYImageCache.h"
14 | #import "YYWebImage.h"
15 | #import "YYWebImageManager.h"
16 | #import "YYWebImageOperation.h"
17 | #import "CALayer+YYWebImage.h"
18 | #import "MKAnnotationView+YYWebImage.h"
19 | #import "UIButton+YYWebImage.h"
20 | #import "UIImage+YYWebImage.h"
21 | #import "UIImageView+YYWebImage.h"
22 |
23 | FOUNDATION_EXPORT double YYWebImageVersionNumber;
24 | FOUNDATION_EXPORT const unsigned char YYWebImageVersionString[];
25 |
26 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYWebImage/YYWebImage.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "Accelerate" -framework "AssetsLibrary" -framework "CoreFoundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYWebImage
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYWebImage/YYWebImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module YYWebImage {
2 | umbrella header "YYWebImage-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/YYWebImage/YYWebImage.release.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYWebImage
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYCache" "${PODS_CONFIGURATION_BUILD_DIR}/YYImage"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "Accelerate" -framework "AssetsLibrary" -framework "CoreFoundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/YYWebImage
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/pop/pop-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.12
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/pop/pop-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_pop : NSObject
3 | @end
4 | @implementation PodsDummy_pop
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/pop/pop-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 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/pop/pop-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 "POP.h"
14 | #import "POPAnimatableProperty.h"
15 | #import "POPAnimatablePropertyTypes.h"
16 | #import "POPAnimation.h"
17 | #import "POPAnimationEvent.h"
18 | #import "POPAnimationExtras.h"
19 | #import "POPAnimationTracer.h"
20 | #import "POPAnimator.h"
21 | #import "POPBasicAnimation.h"
22 | #import "POPCustomAnimation.h"
23 | #import "POPDecayAnimation.h"
24 | #import "POPDefines.h"
25 | #import "POPGeometry.h"
26 | #import "POPLayerExtras.h"
27 | #import "POPPropertyAnimation.h"
28 | #import "POPSpringAnimation.h"
29 | #import "POPVector.h"
30 |
31 | FOUNDATION_EXPORT double popVersionNumber;
32 | FOUNDATION_EXPORT const unsigned char popVersionString[];
33 |
34 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/pop/pop.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_CXX_LANGUAGE_STANDARD = c++11
2 | CLANG_CXX_LIBRARY = libc++
3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/pop
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | OTHER_LDFLAGS = $(inherited) -l"c++"
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}/pop
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/pop/pop.modulemap:
--------------------------------------------------------------------------------
1 | framework module pop {
2 | umbrella header "pop-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/pop/pop.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_CXX_LANGUAGE_STANDARD = c++11
2 | CLANG_CXX_LIBRARY = libc++
3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/pop
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | OTHER_LDFLAGS = $(inherited) -l"c++"
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}/pop
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/Example/Pods/YYCache/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 |
--------------------------------------------------------------------------------
/Example/Pods/YYImage/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 |
--------------------------------------------------------------------------------
/Example/Pods/YYText/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 |
--------------------------------------------------------------------------------
/Example/Pods/YYText/YYText/String/YYTextArchiver.h:
--------------------------------------------------------------------------------
1 | //
2 | // YYTextArchiver.h
3 | // YYText
4 | //
5 | // Created by ibireme on 15/3/16.
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 | A subclass of `NSKeyedArchiver` which implement `NSKeyedArchiverDelegate` protocol.
18 |
19 | The archiver can encode the object which contains
20 | CGColor/CGImage/CTRunDelegateRef/.. (such as NSAttributedString).
21 | */
22 | @interface YYTextArchiver : NSKeyedArchiver
23 | @end
24 |
25 | /**
26 | A subclass of `NSKeyedUnarchiver` which implement `NSKeyedUnarchiverDelegate`
27 | protocol. The unarchiver can decode the data which is encoded by
28 | `YYTextArchiver` or `NSKeyedArchiver`.
29 | */
30 | @interface YYTextUnarchiver : NSKeyedUnarchiver
31 | @end
32 |
33 | NS_ASSUME_NONNULL_END
34 |
--------------------------------------------------------------------------------
/Example/Pods/YYText/YYText/Utility/NSParagraphStyle+YYText.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSParagraphStyle+YYText.h
3 | // 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 (YYText)
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 *)yy_styleWithCTStyle:(CTParagraphStyleRef)CTStyle;
29 |
30 | /**
31 | Creates and returns a CoreText Paragraph Style. (need call CFRelease() after used)
32 | */
33 | - (nullable CTParagraphStyleRef)yy_CTStyle CF_RETURNS_RETAINED;
34 |
35 | @end
36 |
37 | NS_ASSUME_NONNULL_END
38 |
--------------------------------------------------------------------------------
/Example/Pods/YYText/YYText/Utility/UIPasteboard+YYText.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIPasteboard+YYText.h
3 | // YYText
4 | //
5 | // Created by ibireme on 15/4/2.
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 | Extend UIPasteboard to support image and attributed string.
18 | */
19 | @interface UIPasteboard (YYText)
20 |
21 | @property (nullable, nonatomic, copy) NSData *yy_PNGData; ///< PNG file data
22 | @property (nullable, nonatomic, copy) NSData *yy_JPEGData; ///< JPEG file data
23 | @property (nullable, nonatomic, copy) NSData *yy_GIFData; ///< GIF file data
24 | @property (nullable, nonatomic, copy) NSData *yy_WEBPData; ///< WebP file data
25 | @property (nullable, nonatomic, copy) NSData *yy_ImageData; ///< image file data
26 |
27 | /// Attributed string,
28 | /// Set this attributed will also set the string property which is copy from the attributed string.
29 | /// If the attributed string contains one or more image, it will also set the `images` property.
30 | @property (nullable, nonatomic, copy) NSAttributedString *yy_AttributedString;
31 |
32 | @end
33 |
34 |
35 | /// The name identifying the attributed string in pasteboard.
36 | UIKIT_EXTERN NSString *const YYTextPasteboardTypeAttributedString;
37 |
38 | /// The UTI Type identifying WebP data in pasteboard.
39 | UIKIT_EXTERN NSString *const YYTextUTTypeWEBP;
40 |
41 | NS_ASSUME_NONNULL_END
42 |
--------------------------------------------------------------------------------
/Example/Pods/YYText/YYText/Utility/YYTextTransaction.h:
--------------------------------------------------------------------------------
1 | //
2 | // YYTextTransaction.h
3 | // YYText
4 | //
5 | // Created by ibireme on 15/4/18.
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 | YYTextTransaction let you perform a selector once before current runloop sleep.
18 | */
19 | @interface YYTextTransaction : NSObject
20 |
21 | /**
22 | Creates and returns a transaction with a specified target and selector.
23 |
24 | @param target A specified target, the target is retained until runloop end.
25 | @param selector A selector for target.
26 |
27 | @return A new transaction, or nil if an error occurs.
28 | */
29 | + (YYTextTransaction *)transactionWithTarget:(id)target selector:(SEL)selector;
30 |
31 | /**
32 | Commit the trancaction to main runloop.
33 |
34 | @discussion It will perform the selector on the target once before main runloop's
35 | current loop sleep. If the same transaction (same target and same selector) has
36 | already commit to runloop in this loop, this method do nothing.
37 | */
38 | - (void)commit;
39 |
40 | @end
41 |
42 | NS_ASSUME_NONNULL_END
43 |
--------------------------------------------------------------------------------
/Example/Pods/YYText/YYText/Utility/YYTextWeakProxy.h:
--------------------------------------------------------------------------------
1 | //
2 | // YYTextWeakProxy.h
3 | // YYText
4 | //
5 | // Created by ibireme on 14/10/18.
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 | A proxy used to hold a weak object.
18 | It can be used to avoid retain cycles, such as the target in NSTimer or CADisplayLink.
19 |
20 | sample code:
21 |
22 | @implementation MyView {
23 | NSTimer *_timer;
24 | }
25 |
26 | - (void)initTimer {
27 | YYTextWeakProxy *proxy = [YYTextWeakProxy proxyWithTarget:self];
28 | _timer = [NSTimer timerWithTimeInterval:0.1 target:proxy selector:@selector(tick:) userInfo:nil repeats:YES];
29 | }
30 |
31 | - (void)tick:(NSTimer *)timer {...}
32 | @end
33 | */
34 | @interface YYTextWeakProxy : NSProxy
35 |
36 | /**
37 | The proxy target.
38 | */
39 | @property (nullable, nonatomic, weak, readonly) id target;
40 |
41 | /**
42 | Creates a new weak proxy for target.
43 |
44 | @param target Target object.
45 |
46 | @return A new proxy object.
47 | */
48 | - (instancetype)initWithTarget:(id)target;
49 |
50 | /**
51 | Creates a new weak proxy for target.
52 |
53 | @param target Target object.
54 |
55 | @return A new proxy object.
56 | */
57 | + (instancetype)proxyWithTarget:(id)target;
58 |
59 | @end
60 |
61 | NS_ASSUME_NONNULL_END
62 |
--------------------------------------------------------------------------------
/Example/Pods/YYText/YYText/YYText.h:
--------------------------------------------------------------------------------
1 | //
2 | // YYText.h
3 | // YYText
4 | //
5 | // Created by ibireme on 15/2/25.
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 YYTextVersionNumber;
16 | FOUNDATION_EXPORT const unsigned char YYTextVersionString[];
17 | #import
18 | #import
19 | #import
20 | #import
21 | #import
22 | #import
23 | #import
24 | #import
25 | #import
26 | #import
27 | #import
28 | #import
29 | #import
30 | #import
31 | #import
32 | #import
33 | #else
34 | #import "YYLabel.h"
35 | #import "YYTextView.h"
36 | #import "YYTextAttribute.h"
37 | #import "YYTextArchiver.h"
38 | #import "YYTextParser.h"
39 | #import "YYTextRunDelegate.h"
40 | #import "YYTextRubyAnnotation.h"
41 | #import "YYTextLayout.h"
42 | #import "YYTextLine.h"
43 | #import "YYTextInput.h"
44 | #import "YYTextDebugOption.h"
45 | #import "YYTextKeyboardManager.h"
46 | #import "YYTextUtilities.h"
47 | #import "NSAttributedString+YYText.h"
48 | #import "NSParagraphStyle+YYText.h"
49 | #import "UIPasteboard+YYText.h"
50 | #endif
51 |
--------------------------------------------------------------------------------
/Example/Pods/YYWebImage/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 |
--------------------------------------------------------------------------------
/Example/Pods/pop/LICENSE:
--------------------------------------------------------------------------------
1 | BSD License
2 |
3 | For Pop software
4 |
5 | Copyright (c) 2014, Facebook, Inc. All rights reserved.
6 |
7 | Redistribution and use in source and binary forms, with or without modification,
8 | are permitted provided that the following conditions are met:
9 |
10 | * Redistributions of source code must retain the above copyright notice, this
11 | list of conditions and the following disclaimer.
12 |
13 | * Redistributions in binary form must reproduce the above copyright notice,
14 | this list of conditions and the following disclaimer in the documentation
15 | and/or other materials provided with the distribution.
16 |
17 | * Neither the name Facebook nor the names of its contributors may be used to
18 | endorse or promote products derived from this software without specific
19 | prior written permission.
20 |
21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
22 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
25 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
28 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 |
--------------------------------------------------------------------------------
/Example/Pods/pop/pop/POP.h:
--------------------------------------------------------------------------------
1 | /**
2 | Copyright (c) 2014-present, Facebook, Inc.
3 | All rights reserved.
4 |
5 | This source code is licensed under the BSD-style license found in the
6 | LICENSE file in the root directory of this source tree. An additional grant
7 | of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #ifndef POP_POP_H
11 | #define POP_POP_H
12 |
13 | #import
14 |
15 | #import
16 | #import
17 | #import
18 | #import
19 | #import
20 | #import
21 | #import
22 | #import
23 | #import
24 | #import
25 | #import
26 | #import
27 | #import
28 | #import
29 |
30 | #endif /* POP_POP_H */
31 |
--------------------------------------------------------------------------------
/Example/Pods/pop/pop/POPAction.h:
--------------------------------------------------------------------------------
1 | /**
2 | Copyright (c) 2014-present, Facebook, Inc.
3 | All rights reserved.
4 |
5 | This source code is licensed under the BSD-style license found in the
6 | LICENSE file in the root directory of this source tree. An additional grant
7 | of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #ifndef POPACTION_H
11 | #define POPACTION_H
12 |
13 | #import
14 |
15 | #import
16 |
17 | #ifdef __cplusplus
18 |
19 | namespace POP {
20 |
21 | /**
22 | @abstract Disables Core Animation actions using RAII.
23 | @discussion The disablement of actions is scoped to the current transaction.
24 | */
25 | class ActionDisabler
26 | {
27 | BOOL state;
28 |
29 | public:
30 | ActionDisabler() POP_NOTHROW
31 | {
32 | state = [CATransaction disableActions];
33 | [CATransaction setDisableActions:YES];
34 | }
35 |
36 | ~ActionDisabler()
37 | {
38 | [CATransaction setDisableActions:state];
39 | }
40 | };
41 |
42 | /**
43 | @abstract Enables Core Animation actions using RAII.
44 | @discussion The enablement of actions is scoped to the current transaction.
45 | */
46 | class ActionEnabler
47 | {
48 | BOOL state;
49 |
50 | public:
51 | ActionEnabler() POP_NOTHROW
52 | {
53 | state = [CATransaction disableActions];
54 | [CATransaction setDisableActions:NO];
55 | }
56 |
57 | ~ActionEnabler()
58 | {
59 | [CATransaction setDisableActions:state];
60 | }
61 | };
62 |
63 | }
64 |
65 | #endif /* __cplusplus */
66 |
67 | #endif /* POPACTION_H */
68 |
--------------------------------------------------------------------------------
/Example/Pods/pop/pop/POPAnimatablePropertyTypes.h:
--------------------------------------------------------------------------------
1 | /**
2 | Copyright (c) 2014-present, Facebook, Inc.
3 | All rights reserved.
4 |
5 | This source code is licensed under the BSD-style license found in the
6 | LICENSE file in the root directory of this source tree. An additional grant
7 | of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | typedef void (^POPAnimatablePropertyReadBlock)(id obj, CGFloat values[]);
11 | typedef void (^POPAnimatablePropertyWriteBlock)(id obj, const CGFloat values[]);
12 |
--------------------------------------------------------------------------------
/Example/Pods/pop/pop/POPAnimationEventInternal.h:
--------------------------------------------------------------------------------
1 | /**
2 | Copyright (c) 2014-present, Facebook, Inc.
3 | All rights reserved.
4 |
5 | This source code is licensed under the BSD-style license found in the
6 | LICENSE file in the root directory of this source tree. An additional grant
7 | of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #import
11 |
12 | #import "POPAnimationEvent.h"
13 |
14 | @interface POPAnimationEvent ()
15 |
16 | /**
17 | @abstract Default initializer.
18 | */
19 | - (instancetype)initWithType:(POPAnimationEventType)type time:(CFTimeInterval)time;
20 |
21 | /**
22 | @abstract Readwrite redefinition of public property.
23 | */
24 | @property (readwrite, nonatomic, copy) NSString *animationDescription;
25 |
26 | @end
27 |
28 | @interface POPAnimationValueEvent ()
29 |
30 | /**
31 | @abstract Default initializer.
32 | */
33 | - (instancetype)initWithType:(POPAnimationEventType)type time:(CFTimeInterval)time value:(id)value;
34 |
35 | /**
36 | @abstract Readwrite redefinition of public property.
37 | */
38 | @property (readwrite, nonatomic, strong) id velocity;
39 |
40 | @end
41 |
42 |
--------------------------------------------------------------------------------
/Example/Pods/pop/pop/POPAnimationExtras.h:
--------------------------------------------------------------------------------
1 | /**
2 | Copyright (c) 2014-present, Facebook, Inc.
3 | All rights reserved.
4 |
5 | This source code is licensed under the BSD-style license found in the
6 | LICENSE file in the root directory of this source tree. An additional grant
7 | of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #import
11 |
12 | #import
13 | #import
14 |
15 | /**
16 | @abstract The current drag coefficient.
17 | @discussion A value greater than 1.0 indicates Simulator slow-motion animations are enabled. Defaults to 1.0.
18 | */
19 | extern CGFloat POPAnimationDragCoefficient(void);
20 |
21 | @interface CAAnimation (POPAnimationExtras)
22 |
23 | /**
24 | @abstract Apply the current drag coefficient to animation speed.
25 | @discussion Convenience utility to respect Simulator slow-motion animation settings.
26 | */
27 | - (void)pop_applyDragCoefficient;
28 |
29 | @end
30 |
31 | @interface POPSpringAnimation (POPAnimationExtras)
32 |
33 | /**
34 | @abstract Converts from spring bounciness and speed to tension, friction and mass dynamics values.
35 | */
36 | + (void)convertBounciness:(CGFloat)bounciness speed:(CGFloat)speed toTension:(CGFloat *)outTension friction:(CGFloat *)outFriction mass:(CGFloat *)outMass;
37 |
38 | /**
39 | @abstract Converts from dynamics tension, friction and mass to spring bounciness and speed values.
40 | */
41 | + (void)convertTension:(CGFloat)tension friction:(CGFloat)friction toBounciness:(CGFloat *)outBounciness speed:(CGFloat *)outSpeed;
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/Example/Pods/pop/pop/POPAnimationPrivate.h:
--------------------------------------------------------------------------------
1 | /**
2 | Copyright (c) 2014-present, Facebook, Inc.
3 | All rights reserved.
4 |
5 | This source code is licensed under the BSD-style license found in the
6 | LICENSE file in the root directory of this source tree. An additional grant
7 | of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #import
11 |
12 | #define POP_ANIMATION_FRICTION_FOR_QC_FRICTION(qcFriction) (25.0 + (((qcFriction - 8.0) / 2.0) * (25.0 - 19.0)))
13 | #define POP_ANIMATION_TENSION_FOR_QC_TENSION(qcTension) (194.0 + (((qcTension - 30.0) / 50.0) * (375.0 - 194.0)))
14 |
15 | #define QC_FRICTION_FOR_POP_ANIMATION_FRICTION(fbFriction) (8.0 + 2.0 * ((fbFriction - 25.0)/(25.0 - 19.0)))
16 | #define QC_TENSION_FOR_POP_ANIMATION_TENSION(fbTension) (30.0 + 50.0 * ((fbTension - 194.0)/(375.0 - 194.0)))
17 |
--------------------------------------------------------------------------------
/Example/Pods/pop/pop/POPAnimator.h:
--------------------------------------------------------------------------------
1 | /**
2 | Copyright (c) 2014-present, Facebook, Inc.
3 | All rights reserved.
4 |
5 | This source code is licensed under the BSD-style license found in the
6 | LICENSE file in the root directory of this source tree. An additional grant
7 | of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #import
11 |
12 | @protocol POPAnimatorDelegate;
13 |
14 | /**
15 | @abstract The animator class renders animations.
16 | */
17 | @interface POPAnimator : NSObject
18 |
19 | /**
20 | @abstract The shared animator instance.
21 | @discussion Consumers should generally use the shared instance in lieu of creating new instances.
22 | */
23 | + (instancetype)sharedAnimator;
24 |
25 | #if !TARGET_OS_IPHONE
26 | /**
27 | @abstract Allows to select display to bind. Returns nil if failed to create the display link.
28 | */
29 | - (instancetype)initWithDisplayID:(CGDirectDisplayID)displayID;
30 | #endif
31 |
32 | /**
33 | @abstract The optional animator delegate.
34 | */
35 | @property (weak, nonatomic) id delegate;
36 |
37 | /**
38 | @abstract Retrieves the nominal refresh period of a display link. Returns zero if unavailable.
39 | */
40 | @property (readonly, nonatomic) CFTimeInterval refreshPeriod;
41 |
42 | @end
43 |
44 | /**
45 | @abstract The animator delegate.
46 | */
47 | @protocol POPAnimatorDelegate
48 |
49 | /**
50 | @abstract Called on each frame before animation application.
51 | */
52 | - (void)animatorWillAnimate:(POPAnimator *)animator;
53 |
54 | /**
55 | @abstract Called on each frame after animation application.
56 | */
57 | - (void)animatorDidAnimate:(POPAnimator *)animator;
58 |
59 | @end
60 |
--------------------------------------------------------------------------------
/Example/Pods/pop/pop/POPDefines.h:
--------------------------------------------------------------------------------
1 | /**
2 | Copyright (c) 2014-present, Facebook, Inc.
3 | All rights reserved.
4 |
5 | This source code is licensed under the BSD-style license found in the
6 | LICENSE file in the root directory of this source tree. An additional grant
7 | of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #ifndef POP_POPDefines_h
11 | #define POP_POPDefines_h
12 |
13 | #import
14 |
15 | #ifdef __cplusplus
16 | # define POP_EXTERN_C_BEGIN extern "C" {
17 | # define POP_EXTERN_C_END }
18 | #else
19 | # define POP_EXTERN_C_BEGIN
20 | # define POP_EXTERN_C_END
21 | #endif
22 |
23 | #define POP_ARRAY_COUNT(x) sizeof(x) / sizeof(x[0])
24 |
25 | #if defined (__cplusplus) && defined (__GNUC__)
26 | # define POP_NOTHROW __attribute__ ((nothrow))
27 | #else
28 | # define POP_NOTHROW
29 | #endif
30 |
31 | #if defined(POP_USE_SCENEKIT)
32 | # if TARGET_OS_MAC || TARGET_OS_IPHONE
33 | # define SCENEKIT_SDK_AVAILABLE 1
34 | # endif
35 | #endif
36 |
37 | #endif
38 |
--------------------------------------------------------------------------------
/Example/Tests/Tests-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 | CFBundlePackageType
14 | BNDL
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Example/Tests/Tests-Prefix.pch:
--------------------------------------------------------------------------------
1 | // The contents of this file are implicitly included at the beginning of every test case source file.
2 |
3 | #ifdef __OBJC__
4 |
5 |
6 |
7 | #endif
8 |
--------------------------------------------------------------------------------
/Example/Tests/Tests.m:
--------------------------------------------------------------------------------
1 | //
2 | // FirstLineHeadIndentAnimationTests.m
3 | // FirstLineHeadIndentAnimationTests
4 | //
5 | // Created by zhoujianping24@hotmail.com on 05/15/2020.
6 | // Copyright (c) 2020 zhoujianping24@hotmail.com. All rights reserved.
7 | //
8 |
9 | @import XCTest;
10 |
11 | @interface Tests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation Tests
16 |
17 | - (void)setUp
18 | {
19 | [super setUp];
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 | }
22 |
23 | - (void)tearDown
24 | {
25 | // Put teardown code here. This method is called after the invocation of each test method in the class.
26 | [super tearDown];
27 | }
28 |
29 | - (void)testExample
30 | {
31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
32 | }
33 |
34 | @end
35 |
36 |
--------------------------------------------------------------------------------
/Example/Tests/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2020 zhoujianping24@hotmail.com
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 使用YYLabel+CADisplayLink实现文本首行缩进的动画效果
2 |
3 | 实现原理:[使用YYLabel+CADisplayLink实现文本首行缩进的动画效果](https://www.jianshu.com/p/3d8cc8b45965)
4 |
5 | > 这是从项目抽取出来的小模块,体量可能有点大,另外数据是从json文件提取的(服务器返回的字段名称有点奇葩),使用的是MVVM开发模式,仅供参考。
6 |
7 | **1. ``WTVPUGCProfileCellModel``,ViewModel,负责UI布局属性的存储和计算,另外由控制器调用其API改变状态(更新、调用动画):**
8 |
9 | 
10 |
11 | **2. UI布局、动画代码都在 ``WTVPUGCProfilePlayView.m`` 里面实现:**
12 |
13 | 
14 |
15 | **3. 点击头像更改直播状态(单个),点击关注按钮更改关注状态(全局)**
16 |
17 | 
18 |
19 | ## 反馈地址
20 |
21 | 扣扣:184669029
22 | 博客:https://www.jianshu.com/u/2edfbadd451c
23 |
--------------------------------------------------------------------------------
/_Pods.xcodeproj:
--------------------------------------------------------------------------------
1 | Example/Pods/Pods.xcodeproj
--------------------------------------------------------------------------------