├── .gitignore ├── Components └── ModuleA │ ├── Classes │ └── Core │ │ └── Home │ │ └── ModuleAViewController.swift │ └── ModuleA.podspec ├── LICENSE ├── Podfile ├── Podfile.lock ├── Pods ├── .project_cache │ ├── installation_cache.yaml │ ├── metadata_cache.yaml │ └── version ├── Alamofire │ ├── LICENSE │ ├── README.md │ └── Source │ │ ├── AFError.swift │ │ ├── Alamofire.swift │ │ ├── AlamofireExtended.swift │ │ ├── AuthenticationInterceptor.swift │ │ ├── CachedResponseHandler.swift │ │ ├── Combine.swift │ │ ├── DispatchQueue+Alamofire.swift │ │ ├── EventMonitor.swift │ │ ├── HTTPHeaders.swift │ │ ├── HTTPMethod.swift │ │ ├── MultipartFormData.swift │ │ ├── MultipartUpload.swift │ │ ├── NetworkReachabilityManager.swift │ │ ├── Notifications.swift │ │ ├── OperationQueue+Alamofire.swift │ │ ├── ParameterEncoder.swift │ │ ├── ParameterEncoding.swift │ │ ├── Protected.swift │ │ ├── RedirectHandler.swift │ │ ├── Request.swift │ │ ├── RequestInterceptor.swift │ │ ├── RequestTaskMap.swift │ │ ├── Response.swift │ │ ├── ResponseSerialization.swift │ │ ├── Result+Alamofire.swift │ │ ├── RetryPolicy.swift │ │ ├── ServerTrustEvaluation.swift │ │ ├── Session.swift │ │ ├── SessionDelegate.swift │ │ ├── StringEncoding+Alamofire.swift │ │ ├── URLConvertible+URLRequestConvertible.swift │ │ ├── URLEncodedFormEncoder.swift │ │ ├── URLRequest+Alamofire.swift │ │ ├── URLSessionConfiguration+Alamofire.swift │ │ └── Validation.swift ├── Headers │ ├── Private │ │ ├── MJRefresh │ │ │ ├── MJRefresh.h │ │ │ ├── MJRefreshAutoFooter.h │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ ├── MJRefreshBackFooter.h │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ ├── MJRefreshComponent.h │ │ │ ├── MJRefreshConfig.h │ │ │ ├── MJRefreshConst.h │ │ │ ├── MJRefreshFooter.h │ │ │ ├── MJRefreshGifHeader.h │ │ │ ├── MJRefreshHeader.h │ │ │ ├── MJRefreshNormalHeader.h │ │ │ ├── MJRefreshNormalTrailer.h │ │ │ ├── MJRefreshStateHeader.h │ │ │ ├── MJRefreshStateTrailer.h │ │ │ ├── MJRefreshTrailer.h │ │ │ ├── NSBundle+MJRefresh.h │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ └── UIView+MJExtension.h │ │ ├── Masonry │ │ │ ├── MASCompositeConstraint.h │ │ │ ├── MASConstraint+Private.h │ │ │ ├── MASConstraint.h │ │ │ ├── MASConstraintMaker.h │ │ │ ├── MASLayoutConstraint.h │ │ │ ├── MASUtilities.h │ │ │ ├── MASViewAttribute.h │ │ │ ├── MASViewConstraint.h │ │ │ ├── Masonry.h │ │ │ ├── NSArray+MASAdditions.h │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ │ ├── View+MASAdditions.h │ │ │ ├── View+MASShorthandAdditions.h │ │ │ └── ViewController+MASAdditions.h │ │ ├── ZLCollectionViewFlowLayout │ │ │ ├── ZLBaseEventModel.h │ │ │ ├── ZLCellFakeView.h │ │ │ ├── ZLCollectionBaseDecorationView.h │ │ │ ├── ZLCollectionReusableView.h │ │ │ ├── ZLCollectionViewBackgroundViewLayoutAttributes.h │ │ │ ├── ZLCollectionViewBaseFlowLayout.h │ │ │ ├── ZLCollectionViewHorzontalLayout.h │ │ │ ├── ZLCollectionViewLayoutAttributes.h │ │ │ └── ZLCollectionViewVerticalLayout.h │ │ └── pop │ │ │ ├── FloatConversion.h │ │ │ ├── POP.h │ │ │ ├── POPAction.h │ │ │ ├── POPAnimatableProperty.h │ │ │ ├── POPAnimation.h │ │ │ ├── POPAnimationEvent.h │ │ │ ├── POPAnimationEventInternal.h │ │ │ ├── POPAnimationExtras.h │ │ │ ├── POPAnimationInternal.h │ │ │ ├── POPAnimationPrivate.h │ │ │ ├── POPAnimationRuntime.h │ │ │ ├── POPAnimationTracer.h │ │ │ ├── POPAnimationTracerInternal.h │ │ │ ├── POPAnimator.h │ │ │ ├── POPAnimatorPrivate.h │ │ │ ├── POPBasicAnimation.h │ │ │ ├── POPBasicAnimationInternal.h │ │ │ ├── POPCGUtils.h │ │ │ ├── POPCustomAnimation.h │ │ │ ├── POPDecayAnimation.h │ │ │ ├── POPDecayAnimationInternal.h │ │ │ ├── POPDefines.h │ │ │ ├── POPGeometry.h │ │ │ ├── POPLayerExtras.h │ │ │ ├── POPMath.h │ │ │ ├── POPPropertyAnimation.h │ │ │ ├── POPPropertyAnimationInternal.h │ │ │ ├── POPSpringAnimation.h │ │ │ ├── POPSpringAnimationInternal.h │ │ │ ├── POPSpringSolver.h │ │ │ ├── POPVector.h │ │ │ ├── TransformationMatrix.h │ │ │ └── UnitBezier.h │ └── Public │ │ ├── Alamofire │ │ ├── Alamofire-umbrella.h │ │ └── Alamofire.modulemap │ │ ├── Hero │ │ ├── Hero-umbrella.h │ │ └── Hero.modulemap │ │ ├── MJRefresh │ │ ├── MJRefresh.h │ │ ├── MJRefreshAutoFooter.h │ │ ├── MJRefreshAutoGifFooter.h │ │ ├── MJRefreshAutoNormalFooter.h │ │ ├── MJRefreshAutoStateFooter.h │ │ ├── MJRefreshBackFooter.h │ │ ├── MJRefreshBackGifFooter.h │ │ ├── MJRefreshBackNormalFooter.h │ │ ├── MJRefreshBackStateFooter.h │ │ ├── MJRefreshComponent.h │ │ ├── MJRefreshConfig.h │ │ ├── MJRefreshConst.h │ │ ├── MJRefreshFooter.h │ │ ├── MJRefreshGifHeader.h │ │ ├── MJRefreshHeader.h │ │ ├── MJRefreshNormalHeader.h │ │ ├── MJRefreshNormalTrailer.h │ │ ├── MJRefreshStateHeader.h │ │ ├── MJRefreshStateTrailer.h │ │ ├── MJRefreshTrailer.h │ │ ├── NSBundle+MJRefresh.h │ │ ├── UIScrollView+MJExtension.h │ │ ├── UIScrollView+MJRefresh.h │ │ └── UIView+MJExtension.h │ │ ├── Masonry │ │ ├── MASCompositeConstraint.h │ │ ├── MASConstraint+Private.h │ │ ├── MASConstraint.h │ │ ├── MASConstraintMaker.h │ │ ├── MASLayoutConstraint.h │ │ ├── MASUtilities.h │ │ ├── MASViewAttribute.h │ │ ├── MASViewConstraint.h │ │ ├── Masonry.h │ │ ├── NSArray+MASAdditions.h │ │ ├── NSArray+MASShorthandAdditions.h │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ ├── View+MASAdditions.h │ │ ├── View+MASShorthandAdditions.h │ │ └── ViewController+MASAdditions.h │ │ ├── SnapKit │ │ ├── SnapKit-umbrella.h │ │ └── SnapKit.modulemap │ │ ├── SwiftTheme │ │ ├── SwiftTheme-umbrella.h │ │ └── SwiftTheme.modulemap │ │ ├── ZLCollectionViewFlowLayout │ │ ├── ZLBaseEventModel.h │ │ ├── ZLCellFakeView.h │ │ ├── ZLCollectionBaseDecorationView.h │ │ ├── ZLCollectionReusableView.h │ │ ├── ZLCollectionViewBackgroundViewLayoutAttributes.h │ │ ├── ZLCollectionViewBaseFlowLayout.h │ │ ├── ZLCollectionViewHorzontalLayout.h │ │ ├── ZLCollectionViewLayoutAttributes.h │ │ └── ZLCollectionViewVerticalLayout.h │ │ └── pop │ │ ├── POP.h │ │ ├── POPAnimatableProperty.h │ │ ├── POPAnimation.h │ │ ├── POPAnimationEvent.h │ │ ├── POPAnimationExtras.h │ │ ├── POPAnimationTracer.h │ │ ├── POPAnimator.h │ │ ├── POPBasicAnimation.h │ │ ├── POPCustomAnimation.h │ │ ├── POPDecayAnimation.h │ │ ├── POPDefines.h │ │ ├── POPGeometry.h │ │ ├── POPLayerExtras.h │ │ ├── POPPropertyAnimation.h │ │ └── POPSpringAnimation.h ├── Hero │ ├── LICENSE │ ├── README.md │ └── Sources │ │ ├── Animator │ │ ├── HeroAnimatorViewContext.swift │ │ ├── HeroCoreAnimationViewContext.swift │ │ ├── HeroDefaultAnimator.swift │ │ └── HeroViewPropertyViewContext.swift │ │ ├── Debug Plugin │ │ ├── HeroDebugPlugin.swift │ │ └── HeroDebugView.swift │ │ ├── Extensions │ │ ├── Array+HeroModifier.swift │ │ ├── CALayer+Hero.swift │ │ ├── CAMediaTimingFunction+Hero.swift │ │ ├── CG+Hero.swift │ │ ├── DispatchQueue+Hero.swift │ │ ├── Locale+Hero.swift │ │ ├── UIColor+HexString.swift │ │ ├── UIKit+Hero.swift │ │ ├── UIView+Hero.swift │ │ └── UIViewController+Hero.swift │ │ ├── HeroCompatible.swift │ │ ├── HeroContext.swift │ │ ├── HeroModifier+Advanced.swift │ │ ├── HeroModifier+HeroStringConvertible.swift │ │ ├── HeroModifier.swift │ │ ├── HeroPlugin.swift │ │ ├── HeroTargetState.swift │ │ ├── HeroTypes.swift │ │ ├── HeroViewControllerDelegate.swift │ │ ├── Parser │ │ ├── HeroStringConvertible.swift │ │ ├── Lexer.swift │ │ ├── Nodes.swift │ │ ├── Parser.swift │ │ └── Regex.swift │ │ ├── Preprocessors │ │ ├── BasePreprocessor.swift │ │ ├── CascadePreprocessor.swift │ │ ├── ConditionalPreprocessor.swift │ │ ├── DefaultAnimationPreprocessor.swift │ │ ├── IgnoreSubviewModifiersPreprocessor.swift │ │ ├── MatchPreprocessor.swift │ │ └── SourcePreprocessor.swift │ │ ├── SwiftSupport.swift │ │ └── Transition │ │ ├── HeroProgressRunner.swift │ │ ├── HeroTransition+Animate.swift │ │ ├── HeroTransition+Complete.swift │ │ ├── HeroTransition+CustomTransition.swift │ │ ├── HeroTransition+Interactive.swift │ │ ├── HeroTransition+Start.swift │ │ ├── HeroTransition+UINavigationControllerDelegate.swift │ │ ├── HeroTransition+UITabBarControllerDelegate.swift │ │ ├── HeroTransition+UIViewControllerTransitioningDelegate.swift │ │ ├── HeroTransition.swift │ │ └── HeroTransitionState.swift ├── Local Podspecs │ └── ModuleA.podspec.json ├── MJRefresh │ ├── LICENSE │ ├── MJRefresh │ │ ├── Base │ │ │ ├── MJRefreshAutoFooter.h │ │ │ ├── MJRefreshAutoFooter.m │ │ │ ├── MJRefreshBackFooter.h │ │ │ ├── MJRefreshBackFooter.m │ │ │ ├── MJRefreshComponent.h │ │ │ ├── MJRefreshComponent.m │ │ │ ├── MJRefreshFooter.h │ │ │ ├── MJRefreshFooter.m │ │ │ ├── MJRefreshHeader.h │ │ │ ├── MJRefreshHeader.m │ │ │ ├── MJRefreshTrailer.h │ │ │ └── MJRefreshTrailer.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 │ │ │ └── Trailer │ │ │ │ ├── MJRefreshNormalTrailer.h │ │ │ │ ├── MJRefreshNormalTrailer.m │ │ │ │ ├── MJRefreshStateTrailer.h │ │ │ │ └── MJRefreshStateTrailer.m │ │ ├── MJRefresh.bundle │ │ │ ├── arrow@2x.png │ │ │ ├── en.lproj │ │ │ │ └── Localizable.strings │ │ │ ├── ko.lproj │ │ │ │ └── Localizable.strings │ │ │ ├── ru.lproj │ │ │ │ └── Localizable.strings │ │ │ ├── trail_arrow@2x.png │ │ │ ├── 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 │ │ └── include │ │ │ ├── MJRefresh.h │ │ │ ├── MJRefreshAutoFooter.h │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ ├── MJRefreshBackFooter.h │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ ├── MJRefreshComponent.h │ │ │ ├── MJRefreshConfig.h │ │ │ ├── MJRefreshConst.h │ │ │ ├── MJRefreshFooter.h │ │ │ ├── MJRefreshGifHeader.h │ │ │ ├── MJRefreshHeader.h │ │ │ ├── MJRefreshNormalHeader.h │ │ │ ├── MJRefreshNormalTrailer.h │ │ │ ├── MJRefreshStateHeader.h │ │ │ ├── MJRefreshStateTrailer.h │ │ │ ├── MJRefreshTrailer.h │ │ │ ├── NSBundle+MJRefresh.h │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ └── UIView+MJExtension.h │ └── README.md ├── Manifest.lock ├── Masonry.xcodeproj │ └── project.pbxproj ├── 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 ├── SnapKit │ ├── LICENSE │ ├── README.md │ └── Source │ │ ├── Constraint.swift │ │ ├── ConstraintAttributes.swift │ │ ├── ConstraintConfig.swift │ │ ├── ConstraintConstantTarget.swift │ │ ├── ConstraintDSL.swift │ │ ├── ConstraintDescription.swift │ │ ├── ConstraintDirectionalInsetTarget.swift │ │ ├── ConstraintDirectionalInsets.swift │ │ ├── ConstraintInsetTarget.swift │ │ ├── ConstraintInsets.swift │ │ ├── ConstraintItem.swift │ │ ├── ConstraintLayoutGuide+Extensions.swift │ │ ├── ConstraintLayoutGuide.swift │ │ ├── ConstraintLayoutGuideDSL.swift │ │ ├── ConstraintLayoutSupport.swift │ │ ├── ConstraintLayoutSupportDSL.swift │ │ ├── ConstraintMaker.swift │ │ ├── ConstraintMakerEditable.swift │ │ ├── ConstraintMakerExtendable.swift │ │ ├── ConstraintMakerFinalizable.swift │ │ ├── ConstraintMakerPriortizable.swift │ │ ├── ConstraintMakerRelatable.swift │ │ ├── ConstraintMultiplierTarget.swift │ │ ├── ConstraintOffsetTarget.swift │ │ ├── ConstraintPriority.swift │ │ ├── ConstraintPriorityTarget.swift │ │ ├── ConstraintRelatableTarget.swift │ │ ├── ConstraintRelation.swift │ │ ├── ConstraintView+Extensions.swift │ │ ├── ConstraintView.swift │ │ ├── ConstraintViewDSL.swift │ │ ├── Debugging.swift │ │ ├── LayoutConstraint.swift │ │ ├── LayoutConstraintItem.swift │ │ ├── Typealiases.swift │ │ └── UILayoutSupport+Extensions.swift ├── SwiftTheme │ ├── LICENSE │ ├── README.md │ └── Sources │ │ ├── NSAttributedString+Merge.swift │ │ ├── NSObject+Theme.swift │ │ ├── ThemeActivityIndicatorViewStylePicker.swift │ │ ├── ThemeAnyPicker.swift │ │ ├── ThemeAttributedStringPicker.swift │ │ ├── ThemeBarStylePicker.swift │ │ ├── ThemeBlurEffectPicker.swift │ │ ├── ThemeCGColorPicker.swift │ │ ├── ThemeCGFloatPicker.swift │ │ ├── ThemeColorPicker.swift │ │ ├── ThemeDictionaryPicker.swift │ │ ├── ThemeFontPicker.swift │ │ ├── ThemeImagePicker.swift │ │ ├── ThemeKeyboardAppearancePicker.swift │ │ ├── ThemeManager+Index.swift │ │ ├── ThemeManager+OC.swift │ │ ├── ThemeManager+Plist.swift │ │ ├── ThemeManager.swift │ │ ├── ThemeNavigationBarAppearancePicker.swift │ │ ├── ThemePicker.swift │ │ ├── ThemeScrollViewIndicatorStylePicker.swift │ │ ├── ThemeStatePicker.swift │ │ ├── ThemeStatusBarStylePicker.swift │ │ ├── ThemeStringAttributesPicker.swift │ │ ├── ThemeTabBarAppearancePicker.swift │ │ ├── ThemeVisualEffectPicker.swift │ │ ├── UIColorExtension.swift │ │ ├── UIKit+Theme.swift │ │ ├── UILabel+TextAttributes.swift │ │ ├── UIRefreshControl+TitleAttributes.swift │ │ └── UITextField+PlaceholderAttributes.swift ├── Target Support Files │ ├── Alamofire │ │ ├── Alamofire-dummy.m │ │ ├── Alamofire-prefix.pch │ │ ├── Alamofire-umbrella.h │ │ ├── Alamofire.debug.xcconfig │ │ ├── Alamofire.modulemap │ │ └── Alamofire.release.xcconfig │ ├── Hero │ │ ├── Hero-dummy.m │ │ ├── Hero-prefix.pch │ │ ├── Hero-umbrella.h │ │ ├── Hero.debug.xcconfig │ │ ├── Hero.modulemap │ │ └── Hero.release.xcconfig │ ├── MJRefresh │ │ ├── MJRefresh-dummy.m │ │ ├── MJRefresh-prefix.pch │ │ ├── MJRefresh.debug.xcconfig │ │ └── MJRefresh.release.xcconfig │ ├── Masonry │ │ ├── Masonry-dummy.m │ │ ├── Masonry-prefix.pch │ │ ├── Masonry.debug.xcconfig │ │ └── Masonry.release.xcconfig │ ├── Pods-XTAnimations │ │ ├── Pods-XTAnimations-acknowledgements.markdown │ │ ├── Pods-XTAnimations-acknowledgements.plist │ │ ├── Pods-XTAnimations-dummy.m │ │ ├── Pods-XTAnimations-resources.sh │ │ ├── Pods-XTAnimations-umbrella.h │ │ ├── Pods-XTAnimations.debug.xcconfig │ │ ├── Pods-XTAnimations.modulemap │ │ └── Pods-XTAnimations.release.xcconfig │ ├── SnapKit │ │ ├── SnapKit-dummy.m │ │ ├── SnapKit-prefix.pch │ │ ├── SnapKit-umbrella.h │ │ ├── SnapKit.debug.xcconfig │ │ ├── SnapKit.modulemap │ │ └── SnapKit.release.xcconfig │ ├── SwiftTheme │ │ ├── SwiftTheme-dummy.m │ │ ├── SwiftTheme-prefix.pch │ │ ├── SwiftTheme-umbrella.h │ │ ├── SwiftTheme.debug.xcconfig │ │ ├── SwiftTheme.modulemap │ │ └── SwiftTheme.release.xcconfig │ ├── ZLCollectionViewFlowLayout │ │ ├── ZLCollectionViewFlowLayout-dummy.m │ │ ├── ZLCollectionViewFlowLayout-prefix.pch │ │ ├── ZLCollectionViewFlowLayout.debug.xcconfig │ │ └── ZLCollectionViewFlowLayout.release.xcconfig │ └── pop │ │ ├── pop-dummy.m │ │ ├── pop-prefix.pch │ │ ├── pop.debug.xcconfig │ │ └── pop.release.xcconfig ├── ZLCollectionViewFlowLayout │ ├── LICENSE │ ├── README.md │ └── ZLCollectionViewFlowLayout │ │ ├── ZLBaseEventModel.h │ │ ├── ZLBaseEventModel.m │ │ ├── ZLCellFakeView.h │ │ ├── ZLCellFakeView.m │ │ ├── ZLCollectionBaseDecorationView.h │ │ ├── ZLCollectionBaseDecorationView.m │ │ ├── ZLCollectionReusableView.h │ │ ├── ZLCollectionReusableView.m │ │ ├── ZLCollectionViewBackgroundViewLayoutAttributes.h │ │ ├── ZLCollectionViewBackgroundViewLayoutAttributes.m │ │ ├── ZLCollectionViewBaseFlowLayout.h │ │ ├── ZLCollectionViewBaseFlowLayout.m │ │ ├── ZLCollectionViewHorzontalLayout.h │ │ ├── ZLCollectionViewHorzontalLayout.m │ │ ├── ZLCollectionViewLayoutAttributes.h │ │ ├── ZLCollectionViewLayoutAttributes.m │ │ ├── ZLCollectionViewVerticalLayout.h │ │ └── ZLCollectionViewVerticalLayout.m ├── pop.xcodeproj │ └── project.pbxproj └── pop │ ├── LICENSE │ ├── README.md │ └── pop │ ├── POP.h │ ├── POPAction.h │ ├── POPAnimatableProperty.h │ ├── POPAnimatableProperty.mm │ ├── 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 ├── README.md ├── XTAnimations.xcodeproj ├── project.pbxproj └── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── XTAnimations.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── XTAnimations ├── 3D │ └── Transform3DVC.swift ├── AppDelegate.h ├── AppDelegate.m ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── CollectionCircleLayout │ ├── LiveRoomLoopEllipticalView+Gesture.swift │ ├── LiveRoomLoopEllipticalView.swift │ ├── XTCircleCollectionViewTestVC.swift │ ├── cardBack.png │ └── cardFront.png ├── CollectionView填充布局 │ ├── CollectionViewLayoutDemoViewController.swift │ └── HeroTestViewController.swift ├── Info.plist ├── POP实践 │ ├── PopingViewController.h │ ├── PopingViewController.m │ └── View │ │ ├── XTPopingView.h │ │ ├── XTPopingView.m │ │ ├── chenyao.jpg │ │ └── chenyao2.jpg ├── RootViewController │ ├── RootViewController.h │ └── RootViewController.m ├── UIPageVC │ ├── PageSubViewController.swift │ ├── PageViewController.swift │ └── TestViewController.swift ├── XTFoundationSwift │ ├── Array.swift │ ├── AssociatedObject.swift │ ├── CGGeometry.swift │ ├── NSAttributedStringJoiner.swift │ ├── ObjcRuntime.swift │ ├── PixelTransformer.swift │ ├── Then.swift │ └── XTAnimations-Bridging-Header.h ├── XTUIKitSwift │ ├── ButtonUtils.swift │ ├── UICollectionView.swift │ ├── UIColor.swift │ ├── UIFont.swift │ ├── UIImage.swift │ ├── UIScreen.swift │ ├── UITableView.swift │ ├── UIView.swift │ └── UIViewController.swift ├── YY直播点赞 │ ├── XTLoveHeartView.h │ ├── XTLoveHeartView.m │ ├── XTLoveHeartViewController.h │ ├── XTLoveHeartViewController.m │ └── darong.png ├── gift_demo1.mp4 ├── gift_demo2.mp4 ├── gift_demo5.mp4 ├── main.m ├── pip_video.mp4 ├── slience.mp3 ├── 倒计时 │ └── DoubleCardViewController.swift ├── 排序算法的实现 │ ├── SortViewController.swift │ └── TestPersonalPushViewController.swift ├── 烟花 │ ├── FFRing.png │ ├── FFTspark.png │ ├── ViewController1.h │ └── ViewController1.m ├── 画中画Timer │ ├── FloatClockView.swift │ ├── MCGCDTimer.swift │ └── PipTimerViewController.swift ├── 画中画视频 │ ├── PipViewController.swift │ ├── PlayerView.h │ └── PlayerView.m ├── 直播图片动画 │ ├── XTPictureViewController.h │ ├── XTPictureViewController.m │ ├── XTThumbUpAnimation.h │ ├── XTThumbUpAnimation.m │ └── resource.bundle │ │ ├── heart0@2x.png │ │ ├── heart10@2x.png │ │ ├── heart11@2x.png │ │ ├── heart1@2x.png │ │ ├── heart2@2x.png │ │ ├── heart3@2x.png │ │ ├── heart4@2x.png │ │ ├── heart5@2x.png │ │ ├── heart6@2x.png │ │ ├── heart7@2x.png │ │ ├── heart8@2x.png │ │ ├── heart9@2x.png │ │ └── heart@2x.png ├── 直播状态动画 │ ├── GoldCoinCalliperView.swift │ ├── LivingView.swift │ ├── LivingViewController.swift │ ├── PKProgressBar.swift │ └── XTActivityVIew.swift ├── 简单跑马灯 │ └── RunningViewController.swift ├── 跑马灯效果 │ ├── NSString+XTAdd.h │ ├── NSString+XTAdd.m │ ├── XTScrollLabelView.h │ ├── XTScrollLabelView.m │ ├── XTScrollLabelViewController.h │ └── XTScrollLabelViewController.m └── 雪花效果 │ ├── EmitterSnowController.h │ ├── EmitterSnowController.m │ ├── alpha@2x.png │ └── snow@2x.png ├── XTAnimationsTests ├── Info.plist └── XTAnimationsTests.m ├── XTAnimationsUITests ├── Info.plist └── XTAnimationsUITests.m └── XTMovingView ├── XTMovingView.xcodeproj ├── project.pbxproj └── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ └── IDEWorkspaceChecks.plist └── XTMovingView ├── AppDelegate.swift ├── Assets.xcassets ├── AppIcon.appiconset │ └── Contents.json └── Contents.json ├── Base.lproj ├── LaunchScreen.storyboard └── Main.storyboard ├── Info.plist ├── MovingView ├── String+Cal.swift └── XTMovingView.swift ├── SceneDelegate.swift └── ViewController.swift /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xcuserstate 23 | 24 | ## Obj-C/Swift specific 25 | *.hmap 26 | *.ipa 27 | *.dSYM.zip 28 | *.dSYM 29 | 30 | # CocoaPods 31 | # 32 | # We recommend against adding the Pods directory to your .gitignore. However 33 | # you should judge for yourself, the pros and cons are mentioned at: 34 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 35 | # 36 | # Pods/ 37 | 38 | # Carthage 39 | # 40 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 41 | # Carthage/Checkouts 42 | 43 | Carthage/Build 44 | 45 | # fastlane 46 | # 47 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 48 | # screenshots whenever they are needed. 49 | # For more information about the recommended setup visit: 50 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md 51 | 52 | fastlane/report.xml 53 | fastlane/screenshots 54 | 55 | #Code Injection 56 | # 57 | # After new code Injection tools there's a generated folder /iOSInjectionProject 58 | # https://github.com/johnno1962/injectionforxcode 59 | 60 | iOSInjectionProject/ 61 | -------------------------------------------------------------------------------- /Components/ModuleA/Classes/Core/Home/ModuleAViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ModuleAViewController.swift 3 | // ModuleA-DJMine 4 | // 5 | // Created by summerxx on 2022/10/18. 6 | // 7 | 8 | import UIKit 9 | 10 | class ModuleAViewController: UIViewController { 11 | 12 | override func viewDidLoad() { 13 | super.viewDidLoad() 14 | 15 | // Do any additional setup after loading the view. 16 | } 17 | 18 | 19 | /* 20 | // MARK: - Navigation 21 | 22 | // In a storyboard-based application, you will often want to do a little preparation before navigation 23 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 24 | // Get the new view controller using segue.destination. 25 | // Pass the selected object to the new view controller. 26 | } 27 | */ 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Components/ModuleA/ModuleA.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.name = "ModuleA" 4 | s.version = "0.0.1" 5 | s.summary = "ModuleA" 6 | 7 | s.description = <<-DESC 8 | 9 | 模块 A 10 | 11 | DESC 12 | 13 | s.homepage = "summerxx.com" 14 | s.author = { "summerxx" => "summerxx.com" } 15 | s.platform = :ios, "11.0" 16 | s.source = { :git => "" } 17 | 18 | s.resource_bundle = { 19 | 'DJMine' => ['Resources/*'] 20 | } 21 | 22 | s.dependency 'SnapKit' 23 | 24 | s.source_files = "Classes/DJMineModule.{h,m}", "Classes/MineModule.swift" 25 | 26 | s.private_header_files = "Classes/DJMineModule.h" 27 | 28 | s.subspec 'Core' do |ss| 29 | ss.source_files = "Classes/Core/**/*.{swift}" 30 | end 31 | 32 | end 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Zhang Jingwang 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 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | 2 | platform :ios, '11.0' 3 | 4 | def public_pods 5 | 6 | pod 'pop' 7 | pod 'Masonry' 8 | pod 'SnapKit', '5.0.1' 9 | pod 'Alamofire', '5.4.1' 10 | pod 'ZLCollectionViewFlowLayout' 11 | pod 'MJRefresh' 12 | pod 'SwiftTheme' 13 | pod 'Hero' 14 | end 15 | 16 | target 'XTAnimations' do 17 | project 'XTAnimations' 18 | public_pods 19 | end 20 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Alamofire (5.4.1) 3 | - Hero (1.6.2) 4 | - Masonry (1.1.0) 5 | - MJRefresh (3.7.1) 6 | - pop (1.0.9) 7 | - SnapKit (5.0.1) 8 | - SwiftTheme (0.6.4) 9 | - ZLCollectionViewFlowLayout (1.4.8) 10 | 11 | DEPENDENCIES: 12 | - Alamofire (= 5.4.1) 13 | - Hero 14 | - Masonry 15 | - MJRefresh 16 | - pop 17 | - SnapKit (= 5.0.1) 18 | - SwiftTheme 19 | - ZLCollectionViewFlowLayout 20 | 21 | SPEC REPOS: 22 | trunk: 23 | - Alamofire 24 | - Hero 25 | - Masonry 26 | - MJRefresh 27 | - pop 28 | - SnapKit 29 | - SwiftTheme 30 | - ZLCollectionViewFlowLayout 31 | 32 | SPEC CHECKSUMS: 33 | Alamofire: 2291f7d21ca607c491dd17642e5d40fdcda0e65c 34 | Hero: c69009dbc9e2f0472e081adc644dba05fcedae72 35 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 36 | MJRefresh: c7f1edbaa1f401810f2dc356de2355f68c78d4ca 37 | pop: f667631a5108a2e60d9e8797c9b32ddaf2080bce 38 | SnapKit: 97b92857e3df3a0c71833cce143274bf6ef8e5eb 39 | SwiftTheme: 007cbaf1f9e171caf6448a4657533e54c682b285 40 | ZLCollectionViewFlowLayout: 6cd506c05d77cb2ac0772f68155e377d50d39f8a 41 | 42 | PODFILE CHECKSUM: 6b1247e4accc625f7ced8582645fd848234d994b 43 | 44 | COCOAPODS: 1.14.3 45 | -------------------------------------------------------------------------------- /Pods/.project_cache/metadata_cache.yaml: -------------------------------------------------------------------------------- 1 | Masonry: 2 | LABEL: Masonry 3 | PROJECT_PATH: Masonry.xcodeproj 4 | UUID: C0965FF775F51458AD4A8E41ABAB7D1E 5 | ModuleA: 6 | LABEL: ModuleA 7 | PROJECT_PATH: ModuleA.xcodeproj 8 | UUID: 404AC29489A1355F4E68EBABCAC83DCF 9 | Pods-XTAnimations: 10 | LABEL: Pods-XTAnimations 11 | PROJECT_PATH: Pods.xcodeproj 12 | UUID: 6B1BF83CCCF433E16964001D88280EA7 13 | pop: 14 | LABEL: pop 15 | PROJECT_PATH: pop.xcodeproj 16 | UUID: 2340AB03A5C3F4065992D2D56637E54C 17 | SnapKit: 18 | LABEL: SnapKit 19 | PROJECT_PATH: SnapKit.xcodeproj 20 | UUID: 6913FCF4B90C224E55FE5C821AFB90D2 21 | -------------------------------------------------------------------------------- /Pods/.project_cache/version: -------------------------------------------------------------------------------- 1 | 1.11.3.project-cache.003 -------------------------------------------------------------------------------- /Pods/Alamofire/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014-2020 Alamofire Software Foundation (http://alamofire.org/) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pods/Alamofire/Source/Alamofire.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Alamofire.swift 3 | // 4 | // Copyright (c) 2014-2018 Alamofire Software Foundation (http://alamofire.org/) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | /// Reference to `Session.default` for quick bootstrapping and examples. 26 | public let AF = Session.default 27 | 28 | /// Current Alamofire version. Necessary since SPM doesn't use dynamic libraries. Plus this will be more accurate. 29 | let version = "5.4.1" 30 | -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshAutoFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshAutoGifFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshAutoNormalFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshAutoStateFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshBackFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshBackGifFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshBackNormalFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshBackStateFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshComponent.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshComponent.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshConfig.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefreshConfig.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefreshConst.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshGifHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshNormalHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshNormalTrailer.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshNormalTrailer.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshStateHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshStateTrailer.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshStateTrailer.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/MJRefreshTrailer.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshTrailer.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/NSBundle+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/NSBundle+MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Private/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ZLCollectionViewFlowLayout/ZLBaseEventModel.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLBaseEventModel.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ZLCollectionViewFlowLayout/ZLCellFakeView.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCellFakeView.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ZLCollectionViewFlowLayout/ZLCollectionBaseDecorationView.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionBaseDecorationView.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ZLCollectionViewFlowLayout/ZLCollectionReusableView.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionReusableView.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ZLCollectionViewFlowLayout/ZLCollectionViewBackgroundViewLayoutAttributes.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewBackgroundViewLayoutAttributes.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ZLCollectionViewFlowLayout/ZLCollectionViewBaseFlowLayout.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewBaseFlowLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ZLCollectionViewFlowLayout/ZLCollectionViewHorzontalLayout.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewHorzontalLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ZLCollectionViewFlowLayout/ZLCollectionViewLayoutAttributes.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewLayoutAttributes.h -------------------------------------------------------------------------------- /Pods/Headers/Private/ZLCollectionViewFlowLayout/ZLCollectionViewVerticalLayout.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewVerticalLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/FloatConversion.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/WebCore/FloatConversion.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POP.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POP.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAction.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAction.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimatableProperty.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimatableProperty.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimationEvent.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimationEvent.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimationEventInternal.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimationEventInternal.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimationExtras.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimationExtras.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimationInternal.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimationInternal.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimationPrivate.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimationPrivate.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimationRuntime.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimationRuntime.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimationTracer.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimationTracer.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimationTracerInternal.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimationTracerInternal.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimator.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimator.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPAnimatorPrivate.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimatorPrivate.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPBasicAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPBasicAnimation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPBasicAnimationInternal.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPBasicAnimationInternal.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPCGUtils.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPCGUtils.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPCustomAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPCustomAnimation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPDecayAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPDecayAnimation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPDecayAnimationInternal.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPDecayAnimationInternal.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPDefines.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPDefines.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPGeometry.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPGeometry.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPLayerExtras.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPLayerExtras.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPMath.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPMath.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPPropertyAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPPropertyAnimation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPPropertyAnimationInternal.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPPropertyAnimationInternal.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPSpringAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPSpringAnimation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPSpringAnimationInternal.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPSpringAnimationInternal.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPSpringSolver.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPSpringSolver.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/POPVector.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPVector.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/TransformationMatrix.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/WebCore/TransformationMatrix.h -------------------------------------------------------------------------------- /Pods/Headers/Private/pop/UnitBezier.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/WebCore/UnitBezier.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Alamofire/Alamofire-umbrella.h: -------------------------------------------------------------------------------- 1 | ../../../Target Support Files/Alamofire/Alamofire-umbrella.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Alamofire/Alamofire.modulemap: -------------------------------------------------------------------------------- 1 | ../../../Target Support Files/Alamofire/Alamofire.modulemap -------------------------------------------------------------------------------- /Pods/Headers/Public/Hero/Hero-umbrella.h: -------------------------------------------------------------------------------- 1 | ../../../Target Support Files/Hero/Hero-umbrella.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Hero/Hero.modulemap: -------------------------------------------------------------------------------- 1 | ../../../Target Support Files/Hero/Hero.modulemap -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshAutoFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshAutoGifFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshAutoNormalFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshAutoStateFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshBackFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshBackGifFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshBackNormalFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshBackStateFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshComponent.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshComponent.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshConfig.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefreshConfig.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefreshConst.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshFooter.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshGifHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshNormalHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshNormalTrailer.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshNormalTrailer.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshStateHeader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshStateTrailer.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshStateTrailer.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/MJRefreshTrailer.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/include/MJRefreshTrailer.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/NSBundle+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/NSBundle+MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJRefresh.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SnapKit/SnapKit-umbrella.h: -------------------------------------------------------------------------------- 1 | ../../../Target Support Files/SnapKit/SnapKit-umbrella.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SnapKit/SnapKit.modulemap: -------------------------------------------------------------------------------- 1 | ../../../Target Support Files/SnapKit/SnapKit.modulemap -------------------------------------------------------------------------------- /Pods/Headers/Public/SwiftTheme/SwiftTheme-umbrella.h: -------------------------------------------------------------------------------- 1 | ../../../Target Support Files/SwiftTheme/SwiftTheme-umbrella.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SwiftTheme/SwiftTheme.modulemap: -------------------------------------------------------------------------------- 1 | ../../../Target Support Files/SwiftTheme/SwiftTheme.modulemap -------------------------------------------------------------------------------- /Pods/Headers/Public/ZLCollectionViewFlowLayout/ZLBaseEventModel.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLBaseEventModel.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ZLCollectionViewFlowLayout/ZLCellFakeView.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCellFakeView.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ZLCollectionViewFlowLayout/ZLCollectionBaseDecorationView.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionBaseDecorationView.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ZLCollectionViewFlowLayout/ZLCollectionReusableView.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionReusableView.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ZLCollectionViewFlowLayout/ZLCollectionViewBackgroundViewLayoutAttributes.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewBackgroundViewLayoutAttributes.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ZLCollectionViewFlowLayout/ZLCollectionViewBaseFlowLayout.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewBaseFlowLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ZLCollectionViewFlowLayout/ZLCollectionViewHorzontalLayout.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewHorzontalLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ZLCollectionViewFlowLayout/ZLCollectionViewLayoutAttributes.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewLayoutAttributes.h -------------------------------------------------------------------------------- /Pods/Headers/Public/ZLCollectionViewFlowLayout/ZLCollectionViewVerticalLayout.h: -------------------------------------------------------------------------------- 1 | ../../../ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewVerticalLayout.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POP.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POP.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPAnimatableProperty.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimatableProperty.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPAnimationEvent.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimationEvent.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPAnimationExtras.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimationExtras.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPAnimationTracer.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimationTracer.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPAnimator.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPAnimator.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPBasicAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPBasicAnimation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPCustomAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPCustomAnimation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPDecayAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPDecayAnimation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPDefines.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPDefines.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPGeometry.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPGeometry.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPLayerExtras.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPLayerExtras.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPPropertyAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPPropertyAnimation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/pop/POPSpringAnimation.h: -------------------------------------------------------------------------------- 1 | ../../../pop/pop/POPSpringAnimation.h -------------------------------------------------------------------------------- /Pods/Hero/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Luke Zhao 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 13 | all 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 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Pods/Hero/Sources/Extensions/DispatchQueue+Hero.swift: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright (c) 2016 Luke Zhao 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 13 | // all 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 21 | // THE SOFTWARE. 22 | 23 | import Foundation 24 | 25 | func delay(_ time: Double, execute: @escaping () -> Void) { 26 | if time > 0 { 27 | DispatchQueue.main.asyncAfter(deadline: .now() + time, execute: execute) 28 | } else { 29 | DispatchQueue.main.async(execute: execute) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Pods/Hero/Sources/Extensions/Locale+Hero.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Locale+Hero.swift 3 | // Hero 4 | // 5 | // Created by Joseph Mattiello on 4/25/20. 6 | // Copyright © 2020 Luke Zhao. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | internal extension Locale { 12 | static var isDeviceLanguageRightToLeft: Bool { 13 | let currentLocale: Locale = Locale.current 14 | guard let code: String = currentLocale.languageCode else { 15 | return false 16 | } 17 | let direction: Locale.LanguageDirection = Locale.characterDirection(forLanguage: code) 18 | return (direction == .rightToLeft) 19 | } 20 | 21 | static var isDeviceLanguageLeftToRight: Bool { 22 | return !isDeviceLanguageRightToLeft 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Pods/Hero/Sources/Extensions/UIColor+HexString.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIColor+HexString.swift 3 | // Hero 4 | // 5 | // Created by Joseph Mattiello on 10/21/19. 6 | // Copyright © 2019 Luke Zhao. All rights reserved. 7 | // 8 | 9 | #if canImport(UIKit) 10 | import UIKit.UIColor 11 | 12 | extension UIColor { 13 | convenience init?(hexString hex: String) { 14 | var cString: String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased() 15 | 16 | if cString.hasPrefix("#") { 17 | cString.remove(at: cString.startIndex) 18 | } 19 | 20 | guard cString.count == 6 else { 21 | return nil 22 | } 23 | 24 | var rgbValue: UInt64 = 0 25 | Scanner(string: cString).scanHexInt64(&rgbValue) 26 | 27 | self.init( 28 | red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0, 29 | green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0, 30 | blue: CGFloat(rgbValue & 0x0000FF) / 255.0, 31 | alpha: CGFloat(1.0) 32 | ) 33 | } 34 | } 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /Pods/Hero/Sources/Parser/Regex.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Regex.swift 3 | // Kaleidoscope 4 | // 5 | // Created by Matthew Cheok on 15/11/15. 6 | // Copyright © 2015 Matthew Cheok. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | var expressions = [String: NSRegularExpression]() 12 | public extension String { 13 | func match(regex: String) -> (String, CountableRange)? { 14 | let expression: NSRegularExpression 15 | if let exists = expressions[regex] { 16 | expression = exists 17 | } else { 18 | do { 19 | expression = try NSRegularExpression(pattern: "^\(regex)", options: []) 20 | expressions[regex] = expression 21 | } catch { 22 | return nil 23 | } 24 | } 25 | 26 | let range = expression.rangeOfFirstMatch(in: self, options: [], range: NSRange(0 ..< self.utf16.count)) 27 | if range.location != NSNotFound { 28 | return ((self as NSString).substring(with: range), range.location ..< range.location + range.length ) 29 | } 30 | return nil 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Pods/Hero/Sources/SwiftSupport.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SwiftSupport.swift 3 | // Hero 4 | // 5 | // Created by Steven Deutsch on 10/14/18. 6 | // Copyright © 2018 Luke Zhao. All rights reserved. 7 | // 8 | 9 | #if canImport(UIKit) && !(swift(>=4.2)) 10 | import Foundation 11 | import CoreMedia 12 | import CoreGraphics 13 | 14 | extension CMTime { 15 | static let zero = kCMTimeZero 16 | } 17 | 18 | enum CAMediaTimingFillMode { 19 | static let both = kCAFillModeBoth 20 | } 21 | 22 | enum CAMediaTimingFunctionName { 23 | static let linear = kCAMediaTimingFunctionLinear 24 | static let easeIn = kCAMediaTimingFunctionEaseIn 25 | static let easeOut = kCAMediaTimingFunctionEaseOut 26 | static let easeInEaseOut = kCAMediaTimingFunctionEaseInEaseOut 27 | } 28 | 29 | #if canImport(UIKit) 30 | import UIKit 31 | 32 | extension UIControl { 33 | typealias State = UIControlState 34 | } 35 | 36 | public extension UINavigationController { 37 | typealias Operation = UINavigationControllerOperation 38 | } 39 | 40 | extension UIViewController { 41 | var children: [UIViewController] { 42 | return childViewControllers 43 | } 44 | } 45 | #endif 46 | 47 | extension RunLoop { 48 | enum Mode { 49 | static let common = RunLoopMode.commonModes 50 | } 51 | } 52 | 53 | #endif 54 | -------------------------------------------------------------------------------- /Pods/Local Podspecs/ModuleA.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ModuleA", 3 | "version": "0.0.1", 4 | "summary": "ModuleA", 5 | "description": "模块 A", 6 | "homepage": "summerxx.com", 7 | "authors": { 8 | "summerxx": "summerxx.com" 9 | }, 10 | "platforms": { 11 | "ios": "11.0" 12 | }, 13 | "source": { 14 | "git": "" 15 | }, 16 | "resource_bundles": { 17 | "DJMine": [ 18 | "Resources/*" 19 | ] 20 | }, 21 | "dependencies": { 22 | "SnapKit": [ 23 | 24 | ] 25 | }, 26 | "source_files": [ 27 | "Classes/DJMineModule.{h,m}", 28 | "Classes/MineModule.swift" 29 | ], 30 | "private_header_files": "Classes/DJMineModule.h", 31 | "subspecs": [ 32 | { 33 | "name": "Core", 34 | "source_files": "Classes/Core/**/*.{swift}" 35 | } 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // MJRefreshFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/3/5. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 上拉刷新控件 8 | 9 | #import "MJRefreshComponent.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MJRefreshFooter : MJRefreshComponent 14 | /** 创建footer */ 15 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentAction)refreshingBlock; 16 | /** 创建footer */ 17 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 18 | 19 | /** 提示没有更多的数据 */ 20 | - (void)endRefreshingWithNoMoreData; 21 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData"); 22 | 23 | /** 重置没有更多的数据(消除没有更多数据的状态) */ 24 | - (void)resetNoMoreData; 25 | 26 | /** 忽略多少scrollView的contentInset的bottom */ 27 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom; 28 | 29 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */ 30 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden MJRefreshDeprecated("已废弃此属性,开发者请自行控制footer的显示和隐藏"); 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // MJRefreshHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/3/4. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 下拉刷新控件:负责监控用户下拉的状态 8 | 9 | #import "MJRefreshComponent.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MJRefreshHeader : MJRefreshComponent 14 | /** 创建header */ 15 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentAction)refreshingBlock; 16 | /** 创建header */ 17 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 18 | 19 | /** 这个key用来存储上一次下拉刷新成功的时间 */ 20 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey; 21 | /** 上一次下拉刷新成功的时间 */ 22 | @property (strong, nonatomic, readonly, nullable) NSDate *lastUpdatedTime; 23 | 24 | /** 忽略多少scrollView的contentInset的top */ 25 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop; 26 | 27 | /** 默认是关闭状态, 如果遇到 CollectionView 的动画异常问题可以尝试打开 */ 28 | @property (nonatomic) BOOL isCollectionViewAnimationBug; 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Base/MJRefreshTrailer.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshTrailer.h 3 | // MJRefresh 4 | // 5 | // Created by kinarobin on 2020/5/3. 6 | // Copyright © 2020 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshComponent.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MJRefreshTrailer : MJRefreshComponent 14 | 15 | /** 创建trailer*/ 16 | + (instancetype)trailerWithRefreshingBlock:(MJRefreshComponentAction)refreshingBlock; 17 | /** 创建trailer */ 18 | + (instancetype)trailerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 19 | 20 | /** 忽略多少scrollView的contentInset的right */ 21 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetRight; 22 | 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /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 | - (instancetype)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 18 | - (instancetype)setImages:(NSArray *)images forState:(MJRefreshState)state; 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | - (instancetype)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 | -------------------------------------------------------------------------------- /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 | - (instancetype)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 18 | - (instancetype)setImages:(NSArray *)images forState:(MJRefreshState)state; 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | - (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state; 20 | 21 | /** 获取state状态下的title */ 22 | - (NSString *)titleForState:(MJRefreshState)state; 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /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 | - (instancetype)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 18 | - (instancetype)setImages:(NSArray *)images forState:(MJRefreshState)state; 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | - (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state; 27 | @end 28 | 29 | @interface MJRefreshStateHeader (ChainingGrammar) 30 | 31 | - (instancetype)modifyLastUpdatedTimeText:(NSString * (^)(NSDate * _Nullable lastUpdatedTime))handler; 32 | 33 | @end 34 | 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshNormalTrailer.h 3 | // MJRefreshExample 4 | // 5 | // Created by kinarobin on 2020/5/3. 6 | // Copyright © 2020 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateTrailer.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface MJRefreshNormalTrailer : MJRefreshStateTrailer 14 | 15 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshStateTrailer.h 3 | // MJRefreshExample 4 | // 5 | // Created by kinarobin on 2020/5/3. 6 | // Copyright © 2020 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshTrailer.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | 14 | @interface MJRefreshStateTrailer : MJRefreshTrailer 15 | 16 | #pragma mark - 状态相关 17 | /** 显示刷新状态的label */ 18 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 19 | /** 设置state状态下的文字 */ 20 | - (instancetype)setTitle:(NSString *)title forState:(MJRefreshState)state; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/ru.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/ru.lproj/Localizable.strings -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/trail_arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/trail_arrow@2x.png -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/uk.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/uk.lproj/Localizable.strings -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hant.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | "MJRefreshHeaderIdleText" = "下拉可以刷新"; 2 | "MJRefreshHeaderPullingText" = "鬆開立即刷新"; 3 | "MJRefreshHeaderRefreshingText" = "正在刷新數據中..."; 4 | 5 | "MJRefreshTrailerIdleText" = "滑動查看圖文詳情"; 6 | "MJRefreshTrailerPullingText" = "釋放查看圖文詳情"; 7 | 8 | "MJRefreshAutoFooterIdleText" = "點擊或上拉加載更多"; 9 | "MJRefreshAutoFooterRefreshingText" = "正在加載更多的數據..."; 10 | "MJRefreshAutoFooterNoMoreDataText" = "已經全部加載完畢"; 11 | 12 | "MJRefreshBackFooterIdleText" = "上拉可以加載更多"; 13 | "MJRefreshBackFooterPullingText" = "鬆開立即加載更多"; 14 | "MJRefreshBackFooterRefreshingText" = "正在加載更多的數據..."; 15 | "MJRefreshBackFooterNoMoreDataText" = "已經全部加載完畢"; 16 | 17 | "MJRefreshHeaderLastTimeText" = "最後更新:"; 18 | "MJRefreshHeaderDateTodayText" = "今天"; 19 | "MJRefreshHeaderNoneLastDateText" = "無記錄"; 20 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | 3 | #import "UIScrollView+MJRefresh.h" 4 | #import "UIScrollView+MJExtension.h" 5 | #import "UIView+MJExtension.h" 6 | 7 | #import "MJRefreshNormalHeader.h" 8 | #import "MJRefreshGifHeader.h" 9 | 10 | #import "MJRefreshBackNormalFooter.h" 11 | #import "MJRefreshBackGifFooter.h" 12 | #import "MJRefreshAutoNormalFooter.h" 13 | #import "MJRefreshAutoGifFooter.h" 14 | 15 | #import "MJRefreshNormalTrailer.h" 16 | #import "MJRefreshConfig.h" 17 | -------------------------------------------------------------------------------- /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 | /** 默认使用的语言资源文件名, 默认为 nil, 即默认的 Localizable.strings. 18 | 19 | - Attention: 文件名不包含后缀.strings 20 | */ 21 | @property (copy, nonatomic, nullable) NSString *i18nFilename; 22 | /** i18n 多语言资源加载自定义 Bundle. 23 | 24 | - Attention: 默认为 nil 采用内置逻辑. 这里设置后将忽略内置逻辑的多语言模式, 采用自定义的多语言 bundle 25 | */ 26 | @property (nonatomic, nullable) NSBundle *i18nBundle; 27 | 28 | /** Singleton Config instance */ 29 | @property (class, nonatomic, readonly) MJRefreshConfig *defaultConfig; 30 | 31 | - (instancetype)init NS_UNAVAILABLE; 32 | + (instancetype)new NS_UNAVAILABLE; 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /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 | #import "MJRefreshConst.h" 10 | #import "NSBundle+MJRefresh.h" 11 | 12 | @interface MJRefreshConfig (Bundle) 13 | 14 | + (void)resetLanguageResourceCache; 15 | 16 | @end 17 | 18 | @implementation MJRefreshConfig 19 | 20 | static MJRefreshConfig *mj_RefreshConfig = nil; 21 | 22 | + (instancetype)defaultConfig { 23 | static dispatch_once_t onceToken; 24 | dispatch_once(&onceToken, ^{ 25 | mj_RefreshConfig = [[self alloc] init]; 26 | }); 27 | return mj_RefreshConfig; 28 | } 29 | 30 | - (void)setLanguageCode:(NSString *)languageCode { 31 | if ([languageCode isEqualToString:_languageCode]) { 32 | return; 33 | } 34 | 35 | _languageCode = languageCode; 36 | // 重置语言资源 37 | [MJRefreshConfig resetLanguageResourceCache]; 38 | [NSNotificationCenter.defaultCenter 39 | postNotificationName:MJRefreshDidChangeLanguageNotification object:self]; 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /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 | + (UIImage *)mj_trailArrowImage; 17 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(nullable NSString *)value; 18 | + (NSString *)mj_localizedStringForKey:(NSString *)key; 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // UIScrollView+Extension.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 14-5-28. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIScrollView (MJExtension) 14 | @property (readonly, nonatomic) UIEdgeInsets mj_inset; 15 | 16 | @property (assign, nonatomic) CGFloat mj_insetT; 17 | @property (assign, nonatomic) CGFloat mj_insetB; 18 | @property (assign, nonatomic) CGFloat mj_insetL; 19 | @property (assign, nonatomic) CGFloat mj_insetR; 20 | 21 | @property (assign, nonatomic) CGFloat mj_offsetX; 22 | @property (assign, nonatomic) CGFloat mj_offsetY; 23 | 24 | @property (assign, nonatomic) CGFloat mj_contentW; 25 | @property (assign, nonatomic) CGFloat mj_contentH; 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // UIScrollView+MJRefresh.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/3/4. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 给ScrollView增加下拉刷新、上拉刷新、 左滑刷新的功能 8 | 9 | #import 10 | #import "MJRefreshConst.h" 11 | 12 | @class MJRefreshHeader, MJRefreshFooter, MJRefreshTrailer; 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | @interface UIScrollView (MJRefresh) 17 | /** 下拉刷新控件 */ 18 | @property (strong, nonatomic, nullable) MJRefreshHeader *mj_header; 19 | @property (strong, nonatomic, nullable) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header"); 20 | /** 上拉刷新控件 */ 21 | @property (strong, nonatomic, nullable) MJRefreshFooter *mj_footer; 22 | @property (strong, nonatomic, nullable) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer"); 23 | 24 | /** 左滑刷新控件 */ 25 | @property (strong, nonatomic, nullable) MJRefreshTrailer *mj_trailer; 26 | 27 | #pragma mark - other 28 | - (NSInteger)mj_totalDataCount; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // UIView+Extension.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 14-5-28. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIView (MJExtension) 14 | @property (assign, nonatomic) CGFloat mj_x; 15 | @property (assign, nonatomic) CGFloat mj_y; 16 | @property (assign, nonatomic) CGFloat mj_w; 17 | @property (assign, nonatomic) CGFloat mj_h; 18 | @property (assign, nonatomic) CGSize mj_size; 19 | @property (assign, nonatomic) CGPoint mj_origin; 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../MJRefresh.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | ../Base/MJRefreshAutoFooter.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | ../Custom/Footer/Auto/MJRefreshAutoGifFooter.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../Custom/Footer/Auto/MJRefreshAutoNormalFooter.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | ../Custom/Footer/Auto/MJRefreshAutoStateFooter.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | ../Base/MJRefreshBackFooter.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | ../Custom/Footer/Back/MJRefreshBackGifFooter.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../Custom/Footer/Back/MJRefreshBackNormalFooter.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | ../Custom/Footer/Back/MJRefreshBackStateFooter.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshComponent.h: -------------------------------------------------------------------------------- 1 | ../Base/MJRefreshComponent.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshConfig.h: -------------------------------------------------------------------------------- 1 | ../MJRefreshConfig.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshConst.h: -------------------------------------------------------------------------------- 1 | ../MJRefreshConst.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | ../Base/MJRefreshFooter.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | ../Custom/Header/MJRefreshGifHeader.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | ../Base/MJRefreshHeader.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | ../Custom/Header/MJRefreshNormalHeader.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshNormalTrailer.h: -------------------------------------------------------------------------------- 1 | ../Custom/Trailer/MJRefreshNormalTrailer.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | ../Custom/Header/MJRefreshStateHeader.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshStateTrailer.h: -------------------------------------------------------------------------------- 1 | ../Custom/Trailer/MJRefreshStateTrailer.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/MJRefreshTrailer.h: -------------------------------------------------------------------------------- 1 | ../Base/MJRefreshTrailer.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/NSBundle+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../NSBundle+MJRefresh.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../UIScrollView+MJExtension.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../UIScrollView+MJRefresh.h -------------------------------------------------------------------------------- /Pods/MJRefresh/MJRefresh/include/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../UIView+MJExtension.h -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Alamofire (5.4.1) 3 | - Hero (1.6.2) 4 | - Masonry (1.1.0) 5 | - MJRefresh (3.7.1) 6 | - pop (1.0.9) 7 | - SnapKit (5.0.1) 8 | - SwiftTheme (0.6.4) 9 | - ZLCollectionViewFlowLayout (1.4.8) 10 | 11 | DEPENDENCIES: 12 | - Alamofire (= 5.4.1) 13 | - Hero 14 | - Masonry 15 | - MJRefresh 16 | - pop 17 | - SnapKit (= 5.0.1) 18 | - SwiftTheme 19 | - ZLCollectionViewFlowLayout 20 | 21 | SPEC REPOS: 22 | trunk: 23 | - Alamofire 24 | - Hero 25 | - Masonry 26 | - MJRefresh 27 | - pop 28 | - SnapKit 29 | - SwiftTheme 30 | - ZLCollectionViewFlowLayout 31 | 32 | SPEC CHECKSUMS: 33 | Alamofire: 2291f7d21ca607c491dd17642e5d40fdcda0e65c 34 | Hero: c69009dbc9e2f0472e081adc644dba05fcedae72 35 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 36 | MJRefresh: c7f1edbaa1f401810f2dc356de2355f68c78d4ca 37 | pop: f667631a5108a2e60d9e8797c9b32ddaf2080bce 38 | SnapKit: 97b92857e3df3a0c71833cce143274bf6ef8e5eb 39 | SwiftTheme: 007cbaf1f9e171caf6448a4657533e54c682b285 40 | ZLCollectionViewFlowLayout: 6cd506c05d77cb2ac0772f68155e377d50d39f8a 41 | 42 | PODFILE CHECKSUM: 6b1247e4accc625f7ced8582645fd848234d994b 43 | 44 | COCOAPODS: 1.14.3 45 | -------------------------------------------------------------------------------- /Pods/Masonry/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASCompositeConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | #import "MASUtilities.h" 11 | 12 | /** 13 | * A group of MASConstraint objects 14 | */ 15 | @interface MASCompositeConstraint : MASConstraint 16 | 17 | /** 18 | * Creates a composite with a predefined array of children 19 | * 20 | * @param children child MASConstraints 21 | * 22 | * @return a composite constraint 23 | */ 24 | - (id)initWithChildren:(NSArray *)children; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * When you are debugging or printing the constraints attached to a view this subclass 13 | * makes it easier to identify which constraints have been created via Masonry 14 | */ 15 | @interface MASLayoutConstraint : NSLayoutConstraint 16 | 17 | /** 18 | * a key to associate with this constraint 19 | */ 20 | @property (nonatomic, strong) id mas_key; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | // 2 | // Masonry.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for Masonry. 12 | FOUNDATION_EXPORT double MasonryVersionNumber; 13 | 14 | //! Project version string for Masonry. 15 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[]; 16 | 17 | #import "MASUtilities.h" 18 | #import "View+MASAdditions.h" 19 | #import "View+MASShorthandAdditions.h" 20 | #import "ViewController+MASAdditions.h" 21 | #import "NSArray+MASAdditions.h" 22 | #import "NSArray+MASShorthandAdditions.h" 23 | #import "MASConstraint.h" 24 | #import "MASCompositeConstraint.h" 25 | #import "MASViewAttribute.h" 26 | #import "MASViewConstraint.h" 27 | #import "MASConstraintMaker.h" 28 | #import "MASLayoutConstraint.h" 29 | #import "NSLayoutConstraint+MASDebugAdditions.h" 30 | -------------------------------------------------------------------------------- /Pods/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 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+MASDebugAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * makes debug and log output of NSLayoutConstraints more readable 13 | */ 14 | @interface NSLayoutConstraint (MASDebugAdditions) 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.h 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | #ifdef MAS_VIEW_CONTROLLER 14 | 15 | @interface MAS_VIEW_CONTROLLER (MASAdditions) 16 | 17 | /** 18 | * following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute 19 | */ 20 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide; 21 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide; 22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop; 23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom; 24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop; 25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom; 26 | 27 | 28 | @end 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /Pods/Masonry/Masonry/ViewController+MASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.m 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "ViewController+MASAdditions.h" 10 | 11 | #ifdef MAS_VIEW_CONTROLLER 12 | 13 | @implementation MAS_VIEW_CONTROLLER (MASAdditions) 14 | 15 | - (MASViewAttribute *)mas_topLayoutGuide { 16 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 17 | } 18 | - (MASViewAttribute *)mas_topLayoutGuideTop { 19 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 20 | } 21 | - (MASViewAttribute *)mas_topLayoutGuideBottom { 22 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 23 | } 24 | 25 | - (MASViewAttribute *)mas_bottomLayoutGuide { 26 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 27 | } 28 | - (MASViewAttribute *)mas_bottomLayoutGuideTop { 29 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 30 | } 31 | - (MASViewAttribute *)mas_bottomLayoutGuideBottom { 32 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 33 | } 34 | 35 | 36 | 37 | @end 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /Pods/SnapKit/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintDirectionalInsets.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | @available(iOS 11.0, tvOS 11.0, *) 33 | public typealias ConstraintDirectionalInsets = NSDirectionalEdgeInsets 34 | #endif 35 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintInsets.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | public typealias ConstraintInsets = UIEdgeInsets 33 | #else 34 | public typealias ConstraintInsets = NSEdgeInsets 35 | #endif 36 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #endif 27 | 28 | 29 | @available(iOS 9.0, OSX 10.11, *) 30 | public extension ConstraintLayoutGuide { 31 | 32 | var snp: ConstraintLayoutGuideDSL { 33 | return ConstraintLayoutGuideDSL(guide: self) 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintLayoutSupport.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | @available(iOS 8.0, *) 33 | public typealias ConstraintLayoutSupport = UILayoutSupport 34 | #else 35 | public class ConstraintLayoutSupport {} 36 | #endif 37 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | public typealias ConstraintView = UIView 33 | #else 34 | public typealias ConstraintView = NSView 35 | #endif 36 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/UILayoutSupport+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #endif 27 | 28 | 29 | @available(iOS 8.0, *) 30 | public extension ConstraintLayoutSupport { 31 | 32 | var snp: ConstraintLayoutSupportDSL { 33 | return ConstraintLayoutSupportDSL(support: self) 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2019 Gesen 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 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/ThemeAnyPicker.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThemeAnyPicker.swift 3 | // SwiftTheme 4 | // 5 | // Created by Gesen on 2020/8/26. 6 | // Copyright © 2020 Gesen. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @objc public final class ThemeAnyPicker: ThemePicker { 12 | 13 | public convenience init(keyPath: String) { 14 | self.init(v: { ThemeManager.value(for: keyPath) }) 15 | } 16 | 17 | public convenience init(keyPath: String, map: @escaping (Any?) -> Any?) { 18 | self.init(v: { map(ThemeManager.value(for: keyPath)) }) 19 | } 20 | 21 | public convenience init(anys: Any...) { 22 | self.init(v: { ThemeManager.element(for: anys) }) 23 | } 24 | 25 | public required convenience init(arrayLiteral elements: Any...) { 26 | self.init(v: { ThemeManager.element(for: elements) }) 27 | } 28 | 29 | } 30 | 31 | @objc public extension ThemeAnyPicker { 32 | 33 | class func pickerWithKeyPath(_ keyPath: String) -> ThemeAnyPicker { 34 | return ThemeAnyPicker(keyPath: keyPath) 35 | } 36 | 37 | class func pickerWithAnys(_ fonts: [Any]) -> ThemeAnyPicker { 38 | return ThemeAnyPicker(v: { ThemeManager.element(for: fonts) }) 39 | } 40 | 41 | } 42 | 43 | extension ThemeAnyPicker: ExpressibleByArrayLiteral {} 44 | 45 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/ThemeAttributedStringPicker.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThemeAttributedStringPicker.swift 3 | // SwiftTheme 4 | // 5 | // Created by Gesen on 2020/8/26. 6 | // Copyright © 2020 Gesen. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @objc public final class ThemeAttributedStringPicker: ThemePicker { 12 | 13 | public convenience init(keyPath: String, map: @escaping (Any?) -> NSAttributedString?) { 14 | self.init(v: { map(ThemeManager.value(for: keyPath)) }) 15 | } 16 | 17 | public convenience init(_ attributedStrings: [NSAttributedString]...) { 18 | self.init(v: { ThemeManager.element(for: attributedStrings) }) 19 | } 20 | 21 | public required convenience init(arrayLiteral elements: NSAttributedString...) { 22 | self.init(v: { ThemeManager.element(for: elements) }) 23 | } 24 | 25 | } 26 | 27 | @objc public extension ThemeAttributedStringPicker { 28 | 29 | class func pickerWithKeyPath(_ keyPath: String, map: @escaping (Any?) -> NSAttributedString?) -> ThemeAttributedStringPicker { 30 | return ThemeAttributedStringPicker(keyPath: keyPath, map: map) 31 | } 32 | 33 | class func pickerWithAttributedStrings(_ attributedStrings: [NSAttributedString]) -> ThemeAttributedStringPicker { 34 | return ThemeAttributedStringPicker(v: { ThemeManager.element(for: attributedStrings) }) 35 | } 36 | 37 | } 38 | 39 | extension ThemeAttributedStringPicker: ExpressibleByArrayLiteral {} 40 | 41 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/ThemeBlurEffectPicker.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThemeBlurEffectPicker.swift 3 | // SwiftTheme 4 | // 5 | // Created by Kevin on 10/2/19. 6 | // 7 | 8 | import UIKit 9 | 10 | @objc public final class ThemeBlurEffectPicker: ThemePicker { 11 | 12 | public convenience init(keyPath: String, map: @escaping (Any?) -> UIBlurEffect?) { 13 | self.init(v: { map(ThemeManager.value(for: keyPath)) }) 14 | } 15 | 16 | public convenience init(appearances: UIBlurEffect...) { 17 | self.init(v: { ThemeManager.element(for: appearances) }) 18 | } 19 | 20 | public required convenience init(arrayLiteral elements: UIBlurEffect...) { 21 | self.init(v: { ThemeManager.element(for: elements) }) 22 | } 23 | 24 | } 25 | 26 | @objc public extension ThemeBlurEffectPicker { 27 | 28 | class func pickerWithKeyPath(_ keyPath: String, map: @escaping (Any?) -> UIBlurEffect?) -> ThemeBlurEffectPicker { 29 | return ThemeBlurEffectPicker(keyPath: keyPath, map: map) 30 | } 31 | 32 | class func pickerWithAppearances(_ appearances: [UIBlurEffect]) -> ThemeBlurEffectPicker { 33 | return ThemeBlurEffectPicker(v: { ThemeManager.element(for: appearances) }) 34 | } 35 | 36 | } 37 | 38 | extension ThemeBlurEffectPicker: ExpressibleByArrayLiteral {} 39 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/ThemeDictionaryPicker.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThemeDictionaryPicker.swift 3 | // SwiftTheme 4 | // 5 | // Created by Gesen on 2017/1/28. 6 | // Copyright © 2017年 Gesen. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | @objc public final class ThemeDictionaryPicker: ThemePicker { 12 | 13 | public convenience init(keyPath: String, map: @escaping (Any?) -> [T: AnyObject]?) { 14 | self.init(v: { map(ThemeManager.value(for: keyPath)) }) 15 | } 16 | 17 | public convenience init(dicts: [T: AnyObject]...) { 18 | self.init(v: { ThemeManager.element(for: dicts) }) 19 | } 20 | 21 | public required convenience init(arrayLiteral elements: [String: AnyObject]...) { 22 | self.init(v: { ThemeManager.element(for: elements) }) 23 | } 24 | 25 | } 26 | 27 | @objc public extension ThemeDictionaryPicker { 28 | 29 | class func pickerWithKeyPath(_ keyPath: String, map: @escaping (Any?) -> [String: AnyObject]?) -> ThemeDictionaryPicker { 30 | return ThemeDictionaryPicker(keyPath: keyPath, map: map) 31 | } 32 | 33 | class func pickerWithDicts(_ dicts: [[String: AnyObject]]) -> ThemeDictionaryPicker { 34 | return ThemeDictionaryPicker(v: { ThemeManager.element(for: dicts) }) 35 | } 36 | 37 | } 38 | 39 | extension ThemeDictionaryPicker: ExpressibleByArrayLiteral {} 40 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/ThemeFontPicker.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThemeFontPicker.swift 3 | // SwiftTheme 4 | // 5 | // Created by Gesen on 2017/1/28. 6 | // Copyright © 2017年 Gesen. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @objc public final class ThemeFontPicker: ThemePicker { 12 | 13 | public convenience init(keyPath: String, map: @escaping (Any?) -> UIFont?) { 14 | self.init(v: { map(ThemeManager.value(for: keyPath)) }) 15 | } 16 | 17 | public convenience init(fonts: UIFont...) { 18 | self.init(v: { ThemeManager.element(for: fonts) }) 19 | } 20 | 21 | public required convenience init(stringLiteral value: String) { 22 | self.init(v: { ThemeManager.font(for: value) }) 23 | } 24 | 25 | public required convenience init(arrayLiteral elements: UIFont...) { 26 | self.init(v: { ThemeManager.element(for: elements) }) 27 | } 28 | 29 | } 30 | 31 | @objc public extension ThemeFontPicker { 32 | 33 | class func pickerWithKeyPath(_ keyPath: String, map: @escaping (Any?) -> UIFont?) -> ThemeFontPicker { 34 | return ThemeFontPicker(keyPath: keyPath, map: map) 35 | } 36 | 37 | class func pickerWithFonts(_ fonts: [UIFont]) -> ThemeFontPicker { 38 | return ThemeFontPicker(v: { ThemeManager.element(for: fonts) }) 39 | } 40 | 41 | } 42 | 43 | extension ThemeFontPicker: ExpressibleByArrayLiteral {} 44 | extension ThemeFontPicker: ExpressibleByStringLiteral {} 45 | 46 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/ThemeManager+Index.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThemeManager+Index.swift 3 | // SwiftTheme 4 | // 5 | // Created by Gesen on 16/9/18. 6 | // Copyright © 2016年 Gesen. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension ThemeManager { 12 | 13 | public class func colorElement(for array: [String]) -> UIColor? { 14 | guard let rgba = element(for: array) else { return nil } 15 | guard let color = try? UIColor(rgba_throws: rgba as String) else { 16 | print("SwiftTheme WARNING: Not convert rgba \(rgba) in array: \(array)[\(currentThemeIndex)]") 17 | return nil 18 | } 19 | return color 20 | } 21 | 22 | public class func imageElement(for array: [String]) -> UIImage? { 23 | guard let imageName = element(for: array) else { return nil } 24 | guard let image = UIImage(named: imageName as String) else { 25 | print("SwiftTheme WARNING: Not found image name '\(imageName)' in array: \(array)[\(currentThemeIndex)]") 26 | return nil 27 | } 28 | return image 29 | } 30 | 31 | public class func element(for array: [T]) -> T? { 32 | let index = ThemeManager.currentThemeIndex 33 | guard array.indices ~= index else { 34 | print("SwiftTheme WARNING: Not found element in array: \(array)[\(currentThemeIndex)]") 35 | return nil 36 | } 37 | return array[index] 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/ThemeNavigationBarAppearancePicker.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThemeNavigationBarAppearancePicker.swift 3 | // SwiftTheme 4 | // 5 | // Created by Kevin on 10/2/19. 6 | // 7 | 8 | import UIKit 9 | 10 | @available(iOS 13.0, tvOS 13.0, *) 11 | @objc public final class ThemeNavigationBarAppearancePicker: ThemePicker { 12 | 13 | public convenience init(keyPath: String, map: @escaping (Any?) -> UINavigationBarAppearance?) { 14 | self.init(v: { map(ThemeManager.value(for: keyPath)) }) 15 | } 16 | 17 | public convenience init(appearances: UINavigationBarAppearance...) { 18 | self.init(v: { ThemeManager.element(for: appearances) }) 19 | } 20 | 21 | public required convenience init(arrayLiteral elements: UINavigationBarAppearance...) { 22 | self.init(v: { ThemeManager.element(for: elements) }) 23 | } 24 | 25 | } 26 | 27 | @available(iOS 13.0, tvOS 13.0, *) 28 | @objc public extension ThemeNavigationBarAppearancePicker { 29 | 30 | class func pickerWithKeyPath(_ keyPath: String, map: @escaping (Any?) -> UINavigationBarAppearance?) -> ThemeNavigationBarAppearancePicker { 31 | return ThemeNavigationBarAppearancePicker(keyPath: keyPath, map: map) 32 | } 33 | 34 | class func pickerWithAppearances(_ appearances: [UINavigationBarAppearance]) -> ThemeNavigationBarAppearancePicker { 35 | return ThemeNavigationBarAppearancePicker(v: { ThemeManager.element(for: appearances) }) 36 | } 37 | 38 | } 39 | 40 | @available(iOS 13.0, tvOS 13.0, *) 41 | extension ThemeNavigationBarAppearancePicker: ExpressibleByArrayLiteral {} 42 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/ThemeStatePicker.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThemeStatePicker.swift 3 | // SwiftTheme 4 | // 5 | // Created by Gesen on 2017/1/28. 6 | // Copyright © 2017年 Gesen. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | final class ThemeStatePicker: ThemePicker { 12 | 13 | typealias ValuesType = [UInt: ThemePicker] 14 | 15 | var values = ValuesType() 16 | 17 | convenience init?(picker: ThemePicker?, withState state: UIControl.State) { 18 | guard let picker = picker else { return nil } 19 | 20 | self.init(v: { 0 }) 21 | values[state.rawValue] = picker 22 | } 23 | 24 | func setPicker(_ picker: ThemePicker?, forState state: UIControl.State) -> Self { 25 | values[state.rawValue] = picker 26 | return self 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/ThemeStringAttributesPicker.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThemeStringAttributesPicker.swift 3 | // SwiftTheme 4 | // 5 | // Created by Gesen on 2019/9/1. 6 | // Copyright © 2019 Gesen. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @objc public final class ThemeStringAttributesPicker: ThemePicker { 12 | 13 | public convenience init(keyPath: String, map: @escaping (Any?) -> [NSAttributedString.Key: Any]?) { 14 | self.init(v: { map(ThemeManager.value(for: keyPath)) }) 15 | } 16 | 17 | public convenience init(_ attributes: [NSAttributedString.Key: Any]...) { 18 | self.init(v: { ThemeManager.element(for: attributes) }) 19 | } 20 | 21 | public required convenience init(arrayLiteral elements: [NSAttributedString.Key: Any]...) { 22 | self.init(v: { ThemeManager.element(for: elements) }) 23 | } 24 | 25 | } 26 | 27 | @objc public extension ThemeStringAttributesPicker { 28 | 29 | class func pickerWithKeyPath(_ keyPath: String, map: @escaping (Any?) -> [NSAttributedString.Key: Any]?) -> ThemeStringAttributesPicker { 30 | return ThemeStringAttributesPicker(keyPath: keyPath, map: map) 31 | } 32 | 33 | class func pickerWithAttributes(_ attributes: [[NSAttributedString.Key: Any]]) -> ThemeStringAttributesPicker { 34 | return ThemeStringAttributesPicker(v: { ThemeManager.element(for: attributes) }) 35 | } 36 | 37 | } 38 | 39 | extension ThemeStringAttributesPicker: ExpressibleByArrayLiteral {} 40 | 41 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/ThemeTabBarAppearancePicker.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThemeTabBarAppearancePicker.swift 3 | // 4 | // 5 | // Created by Ruslan Popesku on 15.10.2021. 6 | // 7 | 8 | import UIKit 9 | 10 | @available(iOS 13.0, tvOS 13.0, *) 11 | @objc public final class ThemeTabBarAppearancePicker: ThemePicker { 12 | 13 | public convenience init(keyPath: String, map: @escaping (Any?) -> UITabBarAppearance?) { 14 | self.init(v: { map(ThemeManager.value(for: keyPath)) }) 15 | } 16 | 17 | public convenience init(appearances: UITabBarAppearance...) { 18 | self.init(v: { ThemeManager.element(for: appearances) }) 19 | } 20 | 21 | public required convenience init(arrayLiteral elements: UITabBarAppearance...) { 22 | self.init(v: { ThemeManager.element(for: elements) }) 23 | } 24 | 25 | } 26 | 27 | @available(iOS 13.0, tvOS 13.0, *) 28 | @objc public extension ThemeTabBarAppearancePicker { 29 | 30 | class func pickerWithKeyPath(_ keyPath: String, map: @escaping (Any?) -> UITabBarAppearance?) -> ThemeTabBarAppearancePicker { 31 | ThemeTabBarAppearancePicker(keyPath: keyPath, map: map) 32 | } 33 | 34 | class func pickerWithAppearances(_ appearances: [UITabBarAppearance]) -> ThemeTabBarAppearancePicker { 35 | ThemeTabBarAppearancePicker(v: { ThemeManager.element(for: appearances) }) 36 | } 37 | 38 | } 39 | 40 | @available(iOS 13.0, tvOS 13.0, *) 41 | extension ThemeTabBarAppearancePicker: ExpressibleByArrayLiteral {} 42 | 43 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/UILabel+TextAttributes.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+TextAttributes.swift 3 | // SwiftTheme 4 | // 5 | // Created by Gesen on 2019/9/1. 6 | // Copyright © 2019 Gesen. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UILabel { 12 | @objc func updateTextAttributes(_ newAttributes: [NSAttributedString.Key: Any]) { 13 | guard let text = self.attributedText else { return } 14 | 15 | self.attributedText = NSAttributedString( 16 | attributedString: text, 17 | merging: newAttributes 18 | ) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/UIRefreshControl+TitleAttributes.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIRefreshControl+TitleAttributes.swift 3 | // SwiftTheme 4 | // 5 | // Created by kcramer on 4/1/18. 6 | // Copyright © 2018 Gesen. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | #if os(iOS) 12 | extension UIRefreshControl { 13 | @objc func updateTitleAttributes(_ newAttributes: [NSAttributedString.Key: Any]) { 14 | guard let title = self.attributedTitle else { return } 15 | let newString = NSAttributedString(attributedString: title, 16 | merging: newAttributes) 17 | self.attributedTitle = newString 18 | } 19 | } 20 | #endif 21 | -------------------------------------------------------------------------------- /Pods/SwiftTheme/Sources/UITextField+PlaceholderAttributes.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+PlaceholderAttributes.swift 3 | // SwiftTheme 4 | // 5 | // Created by kcramer on 3/6/18. 6 | // Copyright © 2018. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UITextField { 12 | @objc func updatePlaceholderAttributes(_ newAttributes: [NSAttributedString.Key: Any]) { 13 | guard let placeholder = self.attributedPlaceholder else { return } 14 | let newString = NSAttributedString(attributedString: placeholder, 15 | merging: newAttributes) 16 | self.attributedPlaceholder = newString 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Alamofire : NSObject 3 | @end 4 | @implementation PodsDummy_Alamofire 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire-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 AlamofireVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire.modulemap: -------------------------------------------------------------------------------- 1 | module Alamofire { 2 | umbrella header "Alamofire-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Hero/Hero-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Hero : NSObject 3 | @end 4 | @implementation PodsDummy_Hero 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Hero/Hero-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Hero/Hero-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 HeroVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char HeroVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Hero/Hero.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Hero 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Hero 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Hero/Hero.modulemap: -------------------------------------------------------------------------------- 1 | module Hero { 2 | umbrella header "Hero-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Hero/Hero.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Hero 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Hero 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MJRefresh : NSObject 3 | @end 4 | @implementation PodsDummy_MJRefresh 5 | @end 6 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/MJRefresh.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJRefresh" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJRefresh" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MJRefresh/MJRefresh.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJRefresh" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJRefresh" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Masonry-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Masonry : NSObject 3 | @end 4 | @implementation PodsDummy_Masonry 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/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 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Masonry.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Masonry" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Masonry/Masonry.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Masonry" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-XTAnimations/Pods-XTAnimations-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_XTAnimations : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_XTAnimations 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-XTAnimations/Pods-XTAnimations-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_XTAnimationsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_XTAnimationsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-XTAnimations/Pods-XTAnimations.modulemap: -------------------------------------------------------------------------------- 1 | module Pods_XTAnimations { 2 | umbrella header "Pods-XTAnimations-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/SnapKit-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SnapKit : NSObject 3 | @end 4 | @implementation PodsDummy_SnapKit 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/SnapKit-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/SnapKit-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 SnapKitVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char SnapKitVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/SnapKit.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/SnapKit.modulemap: -------------------------------------------------------------------------------- 1 | module SnapKit { 2 | umbrella header "SnapKit-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/SnapKit.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SwiftTheme/SwiftTheme-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SwiftTheme : NSObject 3 | @end 4 | @implementation PodsDummy_SwiftTheme 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SwiftTheme/SwiftTheme-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SwiftTheme/SwiftTheme-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 SwiftThemeVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char SwiftThemeVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SwiftTheme/SwiftTheme.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftTheme 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SwiftTheme 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SwiftTheme/SwiftTheme.modulemap: -------------------------------------------------------------------------------- 1 | module SwiftTheme { 2 | umbrella header "SwiftTheme-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SwiftTheme/SwiftTheme.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftTheme 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SwiftTheme 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_ZLCollectionViewFlowLayout : NSObject 3 | @end 4 | @implementation PodsDummy_ZLCollectionViewFlowLayout 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ZLCollectionViewFlowLayout 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ZLCollectionViewFlowLayout" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/ZLCollectionViewFlowLayout" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/ZLCollectionViewFlowLayout 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ZLCollectionViewFlowLayout 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ZLCollectionViewFlowLayout" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/ZLCollectionViewFlowLayout" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/ZLCollectionViewFlowLayout 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/pop/pop-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_pop : NSObject 3 | @end 4 | @implementation PodsDummy_pop 5 | @end 6 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Pods/Target Support Files/pop/pop.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_CXX_LANGUAGE_STANDARD = c++11 2 | CLANG_CXX_LIBRARY = libc++ 3 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 4 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/pop 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/pop" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/pop" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 10 | PODS_ROOT = ${SRCROOT} 11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/pop 12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 14 | SKIP_INSTALL = YES 15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 16 | -------------------------------------------------------------------------------- /Pods/Target Support Files/pop/pop.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_CXX_LANGUAGE_STANDARD = c++11 2 | CLANG_CXX_LIBRARY = libc++ 3 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 4 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/pop 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/pop" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/pop" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 10 | PODS_ROOT = ${SRCROOT} 11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/pop 12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 14 | SKIP_INSTALL = YES 15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 16 | -------------------------------------------------------------------------------- /Pods/ZLCollectionViewFlowLayout/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 陈昭良 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 | -------------------------------------------------------------------------------- /Pods/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLBaseEventModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZLBaseEventModel.h 3 | // ZLCollectionView 4 | // 5 | // Created by hqtech on 2020/4/18. 6 | // Copyright © 2020 zhaoliang chen. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ZLBaseEventModel : NSObject 14 | 15 | @property(nonatomic,copy)NSString* _Nullable eventName; 16 | @property(nonatomic,strong)id _Nullable parameter; 17 | 18 | - (instancetype)initWithEventName:(NSString* _Nullable)eventName; 19 | - (instancetype)initWithEventName:(NSString* _Nullable)eventName parameter:(id _Nullable)parameter; 20 | + (instancetype)createWithEventName:(NSString* _Nullable)eventName; 21 | + (instancetype)createWithEventName:(NSString* _Nullable)eventName parameter:(id _Nullable)parameter; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /Pods/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLBaseEventModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // ZLBaseEventModel.m 3 | // ZLCollectionView 4 | // 5 | // Created by hqtech on 2020/4/18. 6 | // Copyright © 2020 zhaoliang chen. All rights reserved. 7 | // 8 | 9 | #import "ZLBaseEventModel.h" 10 | 11 | @implementation ZLBaseEventModel 12 | 13 | - (instancetype)initWithEventName:(NSString* _Nullable)eventName { 14 | return [self initWithEventName:eventName parameter:nil]; 15 | } 16 | 17 | - (instancetype)initWithEventName:(NSString* _Nullable)eventName parameter:(id _Nullable)parameter { 18 | if (self == [super init]) { 19 | self.eventName = eventName; 20 | self.parameter = parameter; 21 | } 22 | return self; 23 | } 24 | 25 | + (instancetype)createWithEventName:(NSString* _Nullable)eventName { 26 | ZLBaseEventModel* eventModel = [[ZLBaseEventModel alloc]initWithEventName:eventName parameter:nil]; 27 | return eventModel; 28 | } 29 | 30 | + (instancetype)createWithEventName:(NSString* _Nullable)eventName parameter:(id _Nullable)parameter { 31 | ZLBaseEventModel* eventModel = [[ZLBaseEventModel alloc]initWithEventName:eventName parameter:parameter]; 32 | return eventModel; 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Pods/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCellFakeView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZLCellFakeView.h 3 | // ZLCollectionView 4 | // 5 | // Created by zhaoliang chen on 2018/7/25. 6 | // Copyright © 2018年 zhaoliang chen. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ZLCellFakeView : UIView 12 | 13 | @property (nonatomic, weak)UICollectionViewCell *cell; 14 | @property (nonatomic, strong)UIImageView *cellFakeImageView; 15 | @property (nonatomic, strong)UIImageView *cellFakeHightedView; 16 | @property (nonatomic, strong)NSIndexPath *indexPath; 17 | @property (nonatomic, assign)CGPoint originalCenter; 18 | @property (nonatomic, assign)CGRect cellFrame; 19 | 20 | - (instancetype)initWithCell:(UICollectionViewCell *)cell; 21 | - (void)changeBoundsIfNeeded:(CGRect)bounds; 22 | - (void)pushFowardView; 23 | - (void)pushBackView:(void(^)(void))completion; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionBaseDecorationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZLCollectionBackView.h 3 | // ZLCollectionView 4 | // 5 | // Created by zhaoliang chen on 2020/4/17. 6 | // Copyright © 2020 zhaoliang chen. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ZLCollectionBaseDecorationView : UICollectionReusableView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Pods/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionReusableView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZLCollectionReusableView.h 3 | // ZLCollectionView 4 | // 5 | // Created by zhaoliang chen on 2018/7/9. 6 | // Copyright © 2018年 zhaoliang chen. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ZLCollectionReusableView : UICollectionReusableView 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Pods/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewBackgroundViewLayoutAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZLCollectionViewBackViewLayoutAttributes.h 3 | // ZLCollectionView 4 | // 5 | // Created by zhaoliang chen on 2020/4/17. 6 | // Copyright © 2020 zhaoliang chen. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ZLBaseEventModel.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface ZLCollectionViewBackgroundViewLayoutAttributes : UICollectionViewLayoutAttributes 15 | 16 | //此属性只是header会单独设置,其他均直接返回其frame属性 17 | @property(nonatomic,assign,readonly)CGRect headerFrame; 18 | @property(nonatomic,assign,readonly)CGRect footerFrame; 19 | 20 | @property(nonatomic,copy)NSString* eventName; 21 | @property(nonatomic,copy)id parameter; 22 | 23 | - (void)callMethod:(ZLBaseEventModel*)eventModel; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Pods/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewHorzontalLayout.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZLCollectionViewHorzontalLayout.h 3 | // ZLCollectionView 4 | // 5 | // Created by zhaoliang chen on 2019/1/25. 6 | // Copyright © 2019 zhaoliang chen. All rights reserved. 7 | // 8 | 9 | #import "ZLCollectionViewBaseFlowLayout.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ZLCollectionViewHorzontalLayout : ZLCollectionViewBaseFlowLayout 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Pods/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewLayoutAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZLCollectionViewLayoutAttributes.h 3 | // ZLCollectionView 4 | // 5 | // Created by zhaoliang chen on 2018/7/9. 6 | // Copyright © 2018年 zhaoliang chen. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ZLCollectionViewLayoutAttributes : UICollectionViewLayoutAttributes 12 | 13 | @property(nonatomic,copy)UIColor* color; 14 | @property(nonatomic,copy)UIImage* image; 15 | 16 | //此属性只是header会单独设置,其他均直接返回其frame属性 17 | @property(nonatomic,assign,readonly)CGRect orginalFrame; 18 | 19 | 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Pods/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewLayoutAttributes.m: -------------------------------------------------------------------------------- 1 | // 2 | // ZLCollectionViewLayoutAttributes.m 3 | // ZLCollectionView 4 | // 5 | // Created by zhaoliang chen on 2018/7/9. 6 | // Copyright © 2018年 zhaoliang chen. All rights reserved. 7 | // 8 | 9 | #import "ZLCollectionViewLayoutAttributes.h" 10 | #import "ZLCollectionReusableView.h" 11 | 12 | @implementation ZLCollectionViewLayoutAttributes 13 | @synthesize orginalFrame = _orginalFrame; 14 | 15 | + (instancetype)layoutAttributesForDecorationViewOfKind:(NSString *)decorationViewKind withIndexPath:(NSIndexPath *)indexPath orginalFrmae:(CGRect)orginalFrame{ 16 | ZLCollectionViewLayoutAttributes *layoutAttributes = [super layoutAttributesForDecorationViewOfKind:decorationViewKind withIndexPath:indexPath]; 17 | [layoutAttributes setValue:[NSValue valueWithCGRect:orginalFrame] forKey:@"orginalFrame"]; 18 | layoutAttributes.frame = orginalFrame; 19 | return layoutAttributes; 20 | } 21 | 22 | -(CGRect)orginalFrame { 23 | if ([self.representedElementKind isEqualToString:UICollectionElementKindSectionHeader]) { 24 | return _orginalFrame; 25 | } else { 26 | return self.frame; 27 | } 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/ZLCollectionViewFlowLayout/ZLCollectionViewFlowLayout/ZLCollectionViewVerticalLayout.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZLCollectionViewVerticalLayout.h 3 | // ZLCollectionView 4 | // 5 | // Created by zhaoliang chen on 2019/1/25. 6 | // Copyright © 2019 zhaoliang chen. All rights reserved. 7 | // 8 | 9 | #import "ZLCollectionViewBaseFlowLayout.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ZLCollectionViewVerticalLayout : ZLCollectionViewBaseFlowLayout 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /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 | 29 | #endif /* POP_POP_H */ 30 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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(); 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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | /** 26 | @abstract The optional animator delegate. 27 | */ 28 | @property (weak, nonatomic) id delegate; 29 | 30 | @end 31 | 32 | /** 33 | @abstract The animator delegate. 34 | */ 35 | @protocol POPAnimatorDelegate 36 | 37 | /** 38 | @abstract Called on each frame before animation application. 39 | */ 40 | - (void)animatorWillAnimate:(POPAnimator *)animator; 41 | 42 | /** 43 | @abstract Called on each frame after animation application. 44 | */ 45 | - (void)animatorDidAnimate:(POPAnimator *)animator; 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /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 TARGET_OS_MAC 32 | #define SCENEKIT_SDK_AVAILABLE defined(POP_USE_SCENEKIT) 33 | #elif TARGET_OS_IPHONE 34 | #define SCENEKIT_SDK_AVAILABLE defined(POP_USE_SCENEKIT) 35 | #endif 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # XTAnimations 2 | About the collection of various forms of animation 3 | 4 | example: 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | -------------------------------------------------------------------------------- /XTAnimations.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /XTAnimations.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /XTAnimations.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /XTAnimations.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /XTAnimations/3D/Transform3DVC.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Transform3DVC.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2024/12/6. 6 | // Copyright © 2024 夏天然后. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class Transform3DVC: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /XTAnimations/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/14. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /XTAnimations/CollectionCircleLayout/LiveRoomLoopEllipticalView+Gesture.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LiveRoomLoopEllipticalView+Gesture.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2024/12/10. 6 | // Copyright © 2024 夏天然后. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension LiveRoomLoopEllipticalView { 12 | 13 | func configGusture() { 14 | let pan = UIPanGestureRecognizer.init(target: self, action: #selector(panAction)) 15 | addGestureRecognizer(pan) 16 | } 17 | 18 | @objc func panAction(sender: UIPanGestureRecognizer) { 19 | let translation = sender.translation(in: self) 20 | 21 | // 获取拖动的增量 22 | let deltaX = translation.x - lastTranslation.x 23 | let newX = deltaX / 10 + lastAngle 24 | 25 | if newX > 360 { 26 | lastAngle = newX - 360 27 | } else if newX < 0 { 28 | lastAngle = 360 + newX 29 | } else { 30 | lastAngle = newX 31 | } 32 | rotationAngle = -lastAngle 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /XTAnimations/CollectionCircleLayout/XTCircleCollectionViewTestVC.swift: -------------------------------------------------------------------------------- 1 | // 2 | // XTCircleCollectionViewTestVC.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2024/12/5. 6 | // Copyright © 2024 夏天然后. All rights reserved. 7 | // 8 | import UIKit 9 | 10 | class XTCircleCollectionViewTestVC: UIViewController { 11 | 12 | private var lastTranslation: CGPoint = .zero 13 | 14 | var lastAngle = 0.0 15 | 16 | var awareView = LiveRoomLoopEllipticalView() 17 | 18 | override func viewDidLoad() { 19 | super.viewDidLoad() 20 | self.view += awareView 21 | awareView.backgroundColor = .cyan 22 | awareView.frame = CGRect(x: 0, y: 200, width: UIScreen.width, height: 400) 23 | 24 | let testView = UIView() 25 | view += testView 26 | testView.frame = CGRect(0, 700, 100, 100) 27 | testView.backgroundColor = .yellow 28 | 29 | let angle = CGFloat(30 * Double.pi / 180) // 将 30 度转换为弧度 30 | var transform = CATransform3DIdentity // 初始 Transform 31 | transform.m34 = -1.0 / 500.0 // 设置透视效果 32 | transform = CATransform3DRotate(transform, angle, 0, 1, 0) // 绕 Y 轴旋转 33 | testView.layer.transform = transform 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /XTAnimations/CollectionCircleLayout/cardBack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/CollectionCircleLayout/cardBack.png -------------------------------------------------------------------------------- /XTAnimations/CollectionCircleLayout/cardFront.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/CollectionCircleLayout/cardFront.png -------------------------------------------------------------------------------- /XTAnimations/POP实践/PopingViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PopingViewController.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/29. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface PopingViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /XTAnimations/POP实践/View/XTPopingView.h: -------------------------------------------------------------------------------- 1 | // 2 | // XTViewTips1.h 3 | // POP_Tips 4 | // 5 | // Created by zjwang on 16/7/29. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSInteger, FlyType) { 12 | FlyTypeUToD = 0, 13 | FlyTypeDToD = 1, 14 | }; 15 | @interface XTPopingView : UIView 16 | @property (nonatomic, strong) UIView *flyView; 17 | @property (nonatomic, assign) CGFloat fly_w; 18 | @property (nonatomic, assign) CGFloat fly_h; 19 | 20 | 21 | - (void)startFly:(FlyType)type; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /XTAnimations/POP实践/View/chenyao.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/POP实践/View/chenyao.jpg -------------------------------------------------------------------------------- /XTAnimations/POP实践/View/chenyao2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/POP实践/View/chenyao2.jpg -------------------------------------------------------------------------------- /XTAnimations/RootViewController/RootViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // RootViewController.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/14. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface RootViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /XTAnimations/UIPageVC/PageSubViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PageSubViewController.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/3/28. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import SnapKit 11 | 12 | class PageSubViewController: UIViewController { 13 | 14 | var testVC = TestViewController() 15 | 16 | override func viewDidLoad() { 17 | super.viewDidLoad() 18 | addChild(testVC) 19 | testVC.view.frame = CGRect(0, 200, UIScreen.width, 200) 20 | view.addSubview(testVC.view) 21 | } 22 | } 23 | 24 | 25 | -------------------------------------------------------------------------------- /XTAnimations/XTFoundationSwift/ObjcRuntime.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObjcRuntime.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/2/8. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import ObjectiveC 11 | 12 | /// 封装 Objective-C Runtime 的一些方法 13 | /// 后续有相关于 runtime 的封装都放在这里 14 | 15 | public enum ObjcRuntime { 16 | 17 | /// 交换实例方法的实现 18 | /// - Parameters: 19 | /// - klass: 需要交换的类 20 | /// - original: 原方法 21 | /// - swizzled: 目标方法 22 | public static func swizzleMethod(class klass: AnyClass, from original: Selector, to swizzled: Selector) { 23 | guard let originalMethod = class_getInstanceMethod(klass, original), 24 | let swizzledMethod = class_getInstanceMethod(klass, swizzled) else { 25 | assertionFailure("Method not found") 26 | return 27 | } 28 | 29 | let didAddMethod = class_addMethod(klass, 30 | original, 31 | method_getImplementation(swizzledMethod), 32 | method_getTypeEncoding(swizzledMethod)) 33 | 34 | if didAddMethod { 35 | class_replaceMethod(klass, 36 | swizzled, 37 | method_getImplementation(originalMethod), 38 | method_getTypeEncoding(originalMethod)) 39 | } else { 40 | method_exchangeImplementations(originalMethod, swizzledMethod) 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /XTAnimations/XTFoundationSwift/PixelTransformer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PixelTransformer.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/2/8. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | public extension Float { 13 | /// 像素值转 point 值 14 | var px: CGFloat { 15 | kAdapt(CGFloat(self)) 16 | } 17 | } 18 | 19 | public extension Double { 20 | /// 像素值转 point 值 21 | var px: CGFloat { 22 | kAdapt(CGFloat(self)) 23 | } 24 | } 25 | 26 | public extension Int { 27 | /// 像素值转 point 值 28 | var px: CGFloat { 29 | kAdapt(CGFloat(self)) 30 | } 31 | } 32 | 33 | public extension CGFloat { 34 | /// 像素值转 point 值 35 | var px: CGFloat { 36 | kAdapt(self) 37 | } 38 | } 39 | 40 | public extension CGSize { 41 | /// 像素值转 point 值 42 | var px: CGSize { 43 | CGSize(width: width.px, height: height.px) 44 | } 45 | } 46 | 47 | public extension CGRect { 48 | /// 像素值转 point 值 49 | var px: CGRect { 50 | CGRect(x: origin.x.px, y: origin.y.px, width: size.width.px, height: size.height.px) 51 | } 52 | } 53 | 54 | public extension UIEdgeInsets { 55 | /// 像素值转 point 值 56 | var px: UIEdgeInsets { 57 | UIEdgeInsets(top: top.px, left: left.px, bottom: bottom.px, right: right.px) 58 | } 59 | } 60 | 61 | // MARK: - 62 | 63 | private func kAdapt(_ x: CGFloat) -> CGFloat { 64 | x * kScreenWidth * 1.0 / 750.0 65 | } 66 | 67 | private let kScreenWidth = UIScreen.main.bounds.size.width 68 | -------------------------------------------------------------------------------- /XTAnimations/XTFoundationSwift/XTAnimations-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | #import "ZLCollectionViewVerticalLayout.h" 6 | #import "MJRefresh.h" 7 | #import "PlayerView.h" 8 | -------------------------------------------------------------------------------- /XTAnimations/XTUIKitSwift/UIFont.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIFont.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/3/25. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public extension UIFont { 12 | 13 | // MARK: 阿语字体 14 | 15 | // MARK: 英语字体 16 | 17 | // MARK: 设计字体 18 | @available(iOS 9, *) convenience init?(ubuntu weight: UIFont.Weight, size: CGFloat) { 19 | // 新增设计字体方法,具体字体尚未确定,先用系统字体替代 20 | var fontName: String 21 | switch weight { 22 | case .regular: fontName = "PingFangSC-Regular"; break 23 | case .semibold: fontName = "PingFangSC-Semibold"; break 24 | case .thin: fontName = "PingFangSC-Thin"; break 25 | case .light: fontName = "PingFangSC-Light"; break 26 | case .medium: fontName = "PingFangSC-Medium"; break 27 | case .bold: fontName = "PingFangSC-Medium"; break 28 | case .heavy: fontName = "PingFangSC-Medium"; break 29 | case .black: fontName = "PingFangSC-Medium"; break 30 | case .ultraLight: fontName = "PingFangSC-UltraLight"; break 31 | default: fontName = "PingFangSC-Regular"; break 32 | } 33 | self.init(name: fontName, size: size) 34 | } 35 | } 36 | 37 | extension UIFont { 38 | // MARK: 设计字体 39 | public static func ubuntu(_ weight: UIFont.Weight, pixels: CGFloat) -> UIFont { 40 | UIFont.init(ubuntu: weight, size: pixels) ?? UIFont.systemFont(ofSize: pixels) 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /XTAnimations/XTUIKitSwift/UIImage.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/3/25. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIImage { 12 | 13 | /// 根据分辨率缩放图片 14 | /// - Parameter size: 目标分辨率 15 | /// - Returns: 缩放后的图片对象 16 | func scaling(to size: CGSize) -> UIImage { 17 | let render = UIGraphicsImageRenderer(size: size) 18 | return render.image { _ in 19 | draw(in: CGRect(0, 0, size.rounding)) 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /XTAnimations/XTUIKitSwift/UIScreen.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIScreen.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/3/18. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | public extension UIScreen { 13 | 14 | /// 屏幕宽度 15 | static let width = UIScreen.main.bounds.size.width 16 | 17 | /// 屏幕高度 18 | static let height = UIScreen.main.bounds.size.height 19 | 20 | /// scale 21 | static let scale = UIScreen.main.scale 22 | 23 | /// 是否是异形屏 24 | static let isSpecial = (height - BT_HEIGHT_OF_IPHONE_X) >= -1e-5 25 | 26 | // /// 底部安全区 27 | // static var safeBottom: CGFloat { 28 | // return UIApplication.window?.safeAreaInsets.bottom ?? 0 29 | // } 30 | // 31 | // /// 导航栏高度 32 | // static var navibarHeight: CGFloat { 33 | // return UIApplication.statusBarHeight + 44.0 34 | // } 35 | 36 | /// 底部 tab 高度 37 | static var tabbarHeight: CGFloat { 38 | height >= BT_HEIGHT_OF_IPHONE_X ? 83.0 : 49.0 39 | } 40 | 41 | internal static let BT_HEIGHT_OF_IPHONE_X: CGFloat = 812.0 42 | } 43 | 44 | -------------------------------------------------------------------------------- /XTAnimations/XTUIKitSwift/UITableView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/3/28. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | /* 12 | eg: 13 | 14 | $0.registerCell(UITableViewCell.self) 15 | let cell = tableView.dequeueReusableCell(UITableViewCell.self, for: indexPath) 16 | 17 | */ 18 | extension UITableView { 19 | 20 | /// 注册 cell 类,identifier 为类名字符串 21 | public func registerCell(_ type: T.Type) { 22 | let identifier = NSStringFromClass(type.self) 23 | register(type, forCellReuseIdentifier: identifier) 24 | } 25 | 26 | /// 通过类名获取注册的 cell 27 | public func dequeueReusableCell(_ type: T.Type, for indexPath: IndexPath) -> T { 28 | let identifier = NSStringFromClass(type.self) 29 | guard let cell = dequeueReusableCell(withIdentifier: identifier, for: indexPath) as? T else { 30 | fatalError("\(type.self) was not registered") 31 | } 32 | return cell 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /XTAnimations/XTUIKitSwift/UIViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LogSwiftPointer.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/2/8. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | extension UIViewController { 13 | 14 | /// 打印对象的指针地址 15 | func printPointer(object: AnyObject) { 16 | let pointer = Unmanaged.passUnretained(object).toOpaque() 17 | print("Object pointer: \(pointer)") 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /XTAnimations/YY直播点赞/XTLoveHeartView.h: -------------------------------------------------------------------------------- 1 | // 2 | // XTLoveHeaerView.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/14. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | #define DMRGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] 11 | #define DMRGBAColor(r, g, b ,a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:a] 12 | #define RandColor DMRGBColor(arc4random_uniform(255), arc4random_uniform(255), arc4random_uniform(255)) 13 | @interface XTLoveHeartView : UIView 14 | 15 | - (void)animateInView:(UIView *)view; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /XTAnimations/YY直播点赞/XTLoveHeartViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // XTLoveHeartViewController.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/14. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface XTLoveHeartViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /XTAnimations/YY直播点赞/XTLoveHeartViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // XTLoveHeartViewController.m 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/14. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import "XTLoveHeartViewController.h" 10 | #import "XTLoveHeartView.h" 11 | @interface XTLoveHeartViewController () 12 | 13 | @end 14 | 15 | @implementation XTLoveHeartViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | self.view.backgroundColor = [UIColor whiteColor]; 20 | UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds]; 21 | imageView.image = [UIImage imageNamed:@"darong"]; 22 | [self.view addSubview:imageView]; 23 | 24 | NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(showLoveHeartView) userInfo:nil repeats:YES]; 25 | } 26 | 27 | - (void)showLoveHeartView 28 | { 29 | XTLoveHeartView *heart = [[XTLoveHeartView alloc]initWithFrame:CGRectMake(0, 0, 40, 40)]; 30 | [self.view addSubview:heart]; 31 | CGPoint fountainSource = CGPointMake(self.view.frame.size.width - 80, self.view.bounds.size.height - 30 / 2.0 - 10); 32 | heart.center = fountainSource; 33 | [heart animateInView:self.view]; 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /XTAnimations/YY直播点赞/darong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/YY直播点赞/darong.png -------------------------------------------------------------------------------- /XTAnimations/gift_demo1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/gift_demo1.mp4 -------------------------------------------------------------------------------- /XTAnimations/gift_demo2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/gift_demo2.mp4 -------------------------------------------------------------------------------- /XTAnimations/gift_demo5.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/gift_demo5.mp4 -------------------------------------------------------------------------------- /XTAnimations/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/14. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /XTAnimations/pip_video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/pip_video.mp4 -------------------------------------------------------------------------------- /XTAnimations/slience.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/slience.mp3 -------------------------------------------------------------------------------- /XTAnimations/排序算法的实现/TestPersonalPushViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestPersonalPushViewController.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/12/9. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class TestPersonalPushViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | // Do any additional setup after loading the view. 17 | view.backgroundColor = .yellow 18 | } 19 | 20 | 21 | /* 22 | // MARK: - Navigation 23 | 24 | // In a storyboard-based application, you will often want to do a little preparation before navigation 25 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 26 | // Get the new view controller using segue.destination. 27 | // Pass the selected object to the new view controller. 28 | } 29 | */ 30 | 31 | } 32 | -------------------------------------------------------------------------------- /XTAnimations/烟花/FFRing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/烟花/FFRing.png -------------------------------------------------------------------------------- /XTAnimations/烟花/FFTspark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/烟花/FFTspark.png -------------------------------------------------------------------------------- /XTAnimations/烟花/ViewController1.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/14. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController1 : UIViewController 12 | 13 | @end 14 | 15 | -------------------------------------------------------------------------------- /XTAnimations/画中画视频/PlayerView.h: -------------------------------------------------------------------------------- 1 | // 2 | // PlayerView.h 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/3/31. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface PlayerView : UIView 15 | @property (nonatomic, strong) AVPlayer *player; 16 | @property (nonatomic, strong, readonly) AVPlayerLayer *playerLayer; 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /XTAnimations/画中画视频/PlayerView.m: -------------------------------------------------------------------------------- 1 | // 2 | // PlayerView.m 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/3/31. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | #import "PlayerView.h" 10 | 11 | @implementation PlayerView 12 | 13 | - (AVPlayer *)player { 14 | return self.playerLayer.player; 15 | } 16 | 17 | - (void)setPlayer:(AVPlayer *)player { 18 | self.playerLayer.player = player; 19 | } 20 | 21 | //Override UIView method 22 | + (Class)layerClass { 23 | return [AVPlayerLayer class]; 24 | } 25 | 26 | - (AVPlayerLayer *)playerLayer { 27 | return (AVPlayerLayer *)self.layer; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/XTPictureViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // XTPictureViewController.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/8/15. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface XTPictureViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/XTPictureViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // XTPictureViewController.m 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/8/15. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import "XTPictureViewController.h" 10 | #import "XTThumbUpAnimation.h" 11 | 12 | @implementation XTPictureViewController 13 | - (void)viewDidLoad { 14 | [super viewDidLoad]; 15 | UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds]; 16 | imageView.image = [UIImage imageNamed:@"darong"]; 17 | [self.view addSubview:imageView]; 18 | 19 | NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(showLoveHeartView) userInfo:nil repeats:YES]; 20 | 21 | } 22 | - (void)showLoveHeartView 23 | { 24 | XTThumbUpAnimation *heart = [[XTThumbUpAnimation alloc]initWithFrame:CGRectMake(0, 0, 40, 40)]; 25 | [self.view addSubview:heart]; 26 | CGPoint fountainSource = CGPointMake(self.view.frame.size.width - 80, self.view.bounds.size.height - 30 / 2.0 - 10); 27 | heart.center = fountainSource; 28 | int count = round(random() % 12); 29 | [heart animatePictureInView:self.view Image:[UIImage imageNamed:[NSString stringWithFormat:@"resource.bundle/heart%d.png",count]]]; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/XTThumbUpAnimation.h: -------------------------------------------------------------------------------- 1 | // 2 | // XTLikePictureView.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/8/15. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface XTThumbUpAnimation : UIView 12 | @property (nonatomic, strong) UIImageView *imageView; 13 | 14 | - (void)animatePictureInView:(UIView *)view Image:(UIImage *)image; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart0@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart10@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart10@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart11@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart11@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart1@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart2@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart3@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart4@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart4@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart5@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart6@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart6@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart7@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart7@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart8@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart8@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart9@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart9@2x.png -------------------------------------------------------------------------------- /XTAnimations/直播图片动画/resource.bundle/heart@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/直播图片动画/resource.bundle/heart@2x.png -------------------------------------------------------------------------------- /XTAnimations/简单跑马灯/RunningViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RunningViewController.swift 3 | // XTAnimations 4 | // 5 | // Created by summerxx on 2023/2/9. 6 | // Copyright © 2023 夏天然后. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import Alamofire 11 | 12 | class RunningViewController: UIViewController { 13 | 14 | override func viewDidLoad() { 15 | super.viewDidLoad() 16 | view.backgroundColor = UIColor.white 17 | title = "running text" 18 | view += label 19 | label.snp.makeConstraints { 20 | $0.left.equalTo(50) 21 | $0.top.equalTo(200) 22 | } 23 | // 开始动画 24 | startAnimation() 25 | } 26 | 27 | lazy var label = UILabel().then { 28 | $0.text = "This is a running text." 29 | } 30 | 31 | func startAnimation() { 32 | UIView.animate(withDuration: 3, delay: 0, options: [.repeat, .curveLinear], animations: { 33 | self.label.center.x = self.view.bounds.width - self.label.bounds.width / 2 34 | }, completion: nil) 35 | } 36 | 37 | } 38 | 39 | -------------------------------------------------------------------------------- /XTAnimations/跑马灯效果/NSString+XTAdd.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Width.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/21. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface NSString (XTAdd) 13 | 14 | - (CGFloat)widthWithStringAttribute:(NSDictionary *)attribute; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /XTAnimations/跑马灯效果/NSString+XTAdd.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+Width.m 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/21. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import "NSString+XTAdd.h" 10 | 11 | 12 | @implementation NSString (XTAdd) 13 | 14 | - (CGFloat)widthWithStringAttribute:(NSDictionary *)attribute { 15 | 16 | NSParameterAssert(attribute); 17 | 18 | CGFloat width = 0; 19 | 20 | if (self.length) { 21 | 22 | CGRect rect = [self boundingRectWithSize:CGSizeMake(MAXFLOAT, 0) 23 | options:NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesLineFragmentOrigin | 24 | NSStringDrawingUsesFontLeading 25 | attributes:attribute 26 | context:nil]; 27 | 28 | width = rect.size.width; 29 | } 30 | 31 | return width; 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /XTAnimations/跑马灯效果/XTScrollLabelView.h: -------------------------------------------------------------------------------- 1 | // 2 | // XTScrollLabelView.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/21. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | @class XTScrollLabelView; 11 | 12 | typedef NS_ENUM(NSInteger, ScrollDirectionType) { 13 | FromLeftType = 0, 14 | FromRightType = 1, 15 | 16 | }; 17 | 18 | @protocol XTScrollLabelViewDelegate 19 | 20 | @optional 21 | 22 | - (void)drawMarqueeView:(XTScrollLabelView *)drawMarqueeView animationDidStopFinished:(BOOL)finished; 23 | 24 | @end 25 | 26 | 27 | @interface XTScrollLabelView : UIView 28 | 29 | // 协议 30 | @property (nonatomic, weak) id delegate; 31 | 32 | // 速度 33 | @property (nonatomic) CGFloat speed; 34 | 35 | // 方向 36 | @property (nonatomic) ScrollDirectionType marqueeDirection; 37 | 38 | // 容器 39 | - (void)addContentView:(UIView *)view; 40 | 41 | // 开始 42 | - (void)startAnimation; 43 | 44 | // 停止 45 | - (void)stopAnimation; 46 | 47 | // 暂停 48 | - (void)pauseAnimation; 49 | 50 | // 恢复 51 | - (void)resumeAnimation; 52 | @end 53 | -------------------------------------------------------------------------------- /XTAnimations/跑马灯效果/XTScrollLabelViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // XTScrollLabelViewController.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/21. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface XTScrollLabelViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /XTAnimations/雪花效果/EmitterSnowController.h: -------------------------------------------------------------------------------- 1 | // 2 | // EmitterSnowController.h 3 | // XTAnimations 4 | // 5 | // Created by zjwang on 16/7/21. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface EmitterSnowController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /XTAnimations/雪花效果/alpha@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/雪花效果/alpha@2x.png -------------------------------------------------------------------------------- /XTAnimations/雪花效果/snow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/summerxx27/XTAnimations/e07c28335450e365c435f112988788cc775049b6/XTAnimations/雪花效果/snow@2x.png -------------------------------------------------------------------------------- /XTAnimationsTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /XTAnimationsTests/XTAnimationsTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // XTAnimationsTests.m 3 | // XTAnimationsTests 4 | // 5 | // Created by zjwang on 16/7/14. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface XTAnimationsTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation XTAnimationsTests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | // Put setup code here. This method is called before the invocation of each test method in the class. 20 | } 21 | 22 | - (void)tearDown { 23 | // Put teardown code here. This method is called after the invocation of each test method in the class. 24 | [super tearDown]; 25 | } 26 | 27 | - (void)testExample { 28 | // This is an example of a functional test case. 29 | // Use XCTAssert and related functions to verify your tests produce the correct results. 30 | } 31 | 32 | - (void)testPerformanceExample { 33 | // This is an example of a performance test case. 34 | [self measureBlock:^{ 35 | // Put the code you want to measure the time of here. 36 | }]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /XTAnimationsUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /XTAnimationsUITests/XTAnimationsUITests.m: -------------------------------------------------------------------------------- 1 | // 2 | // XTAnimationsUITests.m 3 | // XTAnimationsUITests 4 | // 5 | // Created by zjwang on 16/7/14. 6 | // Copyright © 2016年 夏天然后. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface XTAnimationsUITests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation XTAnimationsUITests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | 22 | // In UI tests it is usually best to stop immediately when a failure occurs. 23 | self.continueAfterFailure = NO; 24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 25 | [[[XCUIApplication alloc] init] launch]; 26 | 27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 28 | } 29 | 30 | - (void)tearDown { 31 | // Put teardown code here. This method is called after the invocation of each test method in the class. 32 | [super tearDown]; 33 | } 34 | 35 | - (void)testExample { 36 | // Use recording to get started writing UI tests. 37 | // Use XCTAssert and related functions to verify your tests produce the correct results. 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /XTMovingView/XTMovingView.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /XTMovingView/XTMovingView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /XTMovingView/XTMovingView/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // XTMovingView 4 | // 5 | // Created by summerxx on 2020/7/15. 6 | // Copyright © 2020 summerxx. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | 15 | 16 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 17 | // Override point for customization after application launch. 18 | return true 19 | } 20 | 21 | // MARK: UISceneSession Lifecycle 22 | 23 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { 24 | // Called when a new scene session is being created. 25 | // Use this method to select a configuration to create the new scene with. 26 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) 27 | } 28 | 29 | func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { 30 | // Called when the user discards a scene session. 31 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. 32 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return. 33 | } 34 | 35 | 36 | } 37 | 38 | -------------------------------------------------------------------------------- /XTMovingView/XTMovingView/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /XTMovingView/XTMovingView/MovingView/String+Cal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // String+Cal.swift 3 | // XTMovingView 4 | // 5 | // Created by summerxx on 2020/7/16. 6 | // Copyright © 2020 summerxx. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | extension NSString { 13 | func calculateWidthWithAttributeText(dic: Dictionary) -> Double { 14 | let rect = self.boundingRect(with: CGSize.init(width: 1000000000, height: 20), options: NSStringDrawingOptions.usesLineFragmentOrigin.union(NSStringDrawingOptions.usesFontLeading).union(NSStringDrawingOptions.usesDeviceMetrics), attributes: dic, context: nil) 15 | return Double(ceil(rect.size.width)) 16 | } 17 | } 18 | 19 | 20 | --------------------------------------------------------------------------------