├── .DS_Store ├── .travis.yml ├── Example ├── .DS_Store ├── MCPageViewController.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── MCPageViewController-Example.xcscheme │ └── xcuserdata │ │ └── mancong.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── MCPageViewController.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ ├── MC.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ │ └── mancong.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ └── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist ├── MCPageViewController │ ├── .DS_Store │ ├── AppDelegate.swift │ ├── Base.lproj │ │ ├── LaunchScreen.xib │ │ └── Main.storyboard │ ├── Demo │ │ ├── .DS_Store │ │ ├── Badge │ │ │ └── MCBadgeOneViewController.swift │ │ ├── BasicUse(基本使用&属性设置) │ │ │ ├── MCBasicUseFiveViewController.swift │ │ │ ├── MCBasicUseFourViewController.swift │ │ │ ├── MCBasicUseOneViewController.swift │ │ │ ├── MCBasicUseSixViewController.swift │ │ │ ├── MCBasicUseSubViewController.swift │ │ │ ├── MCBasicUseThreeViewController.swift │ │ │ ├── MCBasicUseTwoViewController.swift │ │ │ └── MCBasicUseViewController.swift │ │ ├── SlidingSuspension(滑动悬挂) │ │ │ ├── MCSlidingSuspensionTwoViewController.swift │ │ │ ├── MCSlidingSuspensionViewController.swift │ │ │ ├── NextViewController.swift │ │ │ └── SlidingSuspensionChildViewController.swift │ │ └── ThreeLevel(三级页面) │ │ │ └── MCThreeLevelViewController.swift │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── HOT_bg.imageset │ │ │ ├── Contents.json │ │ │ └── HOT.png │ │ └── hot.imageset │ │ │ ├── Contents.json │ │ │ └── hot.png │ ├── Info.plist │ └── ViewController.swift ├── Podfile ├── Podfile.lock ├── Pods │ ├── Alamofire │ │ ├── LICENSE │ │ ├── README.md │ │ └── Source │ │ │ ├── AFError.swift │ │ │ ├── Alamofire.swift │ │ │ ├── DispatchQueue+Alamofire.swift │ │ │ ├── MultipartFormData.swift │ │ │ ├── NetworkReachabilityManager.swift │ │ │ ├── Notifications.swift │ │ │ ├── ParameterEncoding.swift │ │ │ ├── Request.swift │ │ │ ├── Response.swift │ │ │ ├── ResponseSerialization.swift │ │ │ ├── Result.swift │ │ │ ├── ServerTrustPolicy.swift │ │ │ ├── SessionDelegate.swift │ │ │ ├── SessionManager.swift │ │ │ ├── TaskDelegate.swift │ │ │ ├── Timeline.swift │ │ │ └── Validation.swift │ ├── Kingfisher │ │ ├── LICENSE │ │ ├── README.md │ │ └── Sources │ │ │ ├── AnimatedImageView.swift │ │ │ ├── Box.swift │ │ │ ├── CacheSerializer.swift │ │ │ ├── Filter.swift │ │ │ ├── FormatIndicatedCacheSerializer.swift │ │ │ ├── Image.swift │ │ │ ├── ImageCache.swift │ │ │ ├── ImageDownloader.swift │ │ │ ├── ImageModifier.swift │ │ │ ├── ImagePrefetcher.swift │ │ │ ├── ImageProcessor.swift │ │ │ ├── ImageTransition.swift │ │ │ ├── ImageView+Kingfisher.swift │ │ │ ├── Indicator.swift │ │ │ ├── Kingfisher.h │ │ │ ├── Kingfisher.swift │ │ │ ├── KingfisherManager.swift │ │ │ ├── KingfisherOptionsInfo.swift │ │ │ ├── Placeholder.swift │ │ │ ├── RequestModifier.swift │ │ │ ├── Resource.swift │ │ │ ├── String+MD5.swift │ │ │ ├── ThreadHelper.swift │ │ │ └── UIButton+Kingfisher.swift │ ├── Local Podspecs │ │ └── MCPageViewController.podspec.json │ ├── MCComponentExtension │ │ ├── LICENSE │ │ ├── MCComponentExtension │ │ │ ├── Assets │ │ │ │ └── UIImage │ │ │ │ │ ├── PlaceHolderImage@2x.png │ │ │ │ │ └── PlaceHolderImage@3x.png │ │ │ └── Classes │ │ │ │ ├── Array+Extension.swift │ │ │ │ ├── Bundle+Extension.swift │ │ │ │ ├── DispatchQueue+Extension.swift │ │ │ │ ├── Extension+NotificationCenter.swift │ │ │ │ ├── Int+Extension.swift │ │ │ │ ├── NSMutableAttributedString+Extension.swift │ │ │ │ ├── String+Extension.swift │ │ │ │ ├── Time+Extension.swift │ │ │ │ ├── UIAlertController+Extension.swift │ │ │ │ ├── UIBarButtonItem+Extension.swift │ │ │ │ ├── UIColor+Extension.swift │ │ │ │ ├── UIDevice+Extension.swift │ │ │ │ ├── UIFont+Extension.swift │ │ │ │ ├── UIImage+Extension.swift │ │ │ │ ├── UIView+Extension.swift │ │ │ │ └── UserDefaults+Extension.swift │ │ └── README.md │ ├── MCComponentFunction │ │ ├── LICENSE │ │ ├── MCComponentFunction │ │ │ ├── Assets │ │ │ │ ├── PhotoLibrary │ │ │ │ │ ├── image_not_selected@2x.png │ │ │ │ │ ├── image_not_selected@3x.png │ │ │ │ │ ├── image_selected@2x.png │ │ │ │ │ └── image_selected@3x.png │ │ │ │ ├── Scan │ │ │ │ │ ├── Scan_back.png │ │ │ │ │ └── Scan_scanning.png │ │ │ │ └── Toast │ │ │ │ │ ├── toast_failure@2x.png │ │ │ │ │ ├── toast_failure@3x.png │ │ │ │ │ ├── toast_other@2x.png │ │ │ │ │ ├── toast_other@3x.png │ │ │ │ │ ├── toast_success@2x.png │ │ │ │ │ ├── toast_success@3x.png │ │ │ │ │ ├── toast_wait@2x.png │ │ │ │ │ ├── toast_wait@3x.png │ │ │ │ │ ├── toast_warning@2x.png │ │ │ │ │ └── toast_warning@3x.png │ │ │ └── Classes │ │ │ │ ├── AppStore │ │ │ │ └── MCAppStore.swift │ │ │ │ ├── CountDown │ │ │ │ └── MCCountDown.swift │ │ │ │ ├── Location │ │ │ │ ├── MCLocation.swift │ │ │ │ └── MCLocationHelper.swift │ │ │ │ ├── MCDatePicker │ │ │ │ ├── MCDateManager.swift │ │ │ │ ├── MCDatePicker.swift │ │ │ │ └── MCDatePickerPopupView.swift │ │ │ │ ├── MCGeocoder │ │ │ │ └── MCGeocoder.swift │ │ │ │ ├── MCKingfisher │ │ │ │ └── UIImageView+Kingfisher.swift │ │ │ │ ├── MCNetwork │ │ │ │ ├── MCBaseNetwork.swift │ │ │ │ └── MCNetworkManager.swift │ │ │ │ ├── MCRefresh │ │ │ │ └── UIScrollView+MJRefresh.swift │ │ │ │ ├── PhotoLibrary │ │ │ │ ├── MCPhotoLibraryHelper.swift │ │ │ │ ├── PhotoLibraryDetail │ │ │ │ │ ├── MCPhotoLibraryCompleteButton.swift │ │ │ │ │ ├── MCPhotoLibraryDetailCell.swift │ │ │ │ │ ├── MCPhotoLibraryDetailModel.swift │ │ │ │ │ └── MCPhotoLibraryDetailViewController.swift │ │ │ │ └── PhotoLibraryList │ │ │ │ │ └── MCPhotoLibraryListViewController.swift │ │ │ │ ├── PickerImageHelper │ │ │ │ ├── MCPickerImageHelper.swift │ │ │ │ ├── UIImage+Extension.swift │ │ │ │ └── UIImagePickerController+Extension .swift │ │ │ │ ├── Route │ │ │ │ ├── MCBaseViewController.swift │ │ │ │ ├── MCErrorViewController.swift │ │ │ │ ├── MCNavigationController.swift │ │ │ │ ├── MCRoute+Main.swift │ │ │ │ ├── MCRoute.swift │ │ │ │ ├── MCTabBarController.swift │ │ │ │ └── UIViewController+Route.swift │ │ │ │ ├── Scan │ │ │ │ ├── MCScanView.swift │ │ │ │ ├── MCScanViewController.swift │ │ │ │ └── Route+Scan.swift │ │ │ │ ├── Toast │ │ │ │ ├── MCToast+Extension.swift │ │ │ │ ├── MCToast.swift │ │ │ │ ├── MCToastConfig.swift │ │ │ │ └── MCToastHelper.swift │ │ │ │ └── Tool │ │ │ │ └── MCTool.swift │ │ └── README.md │ ├── MCComponentPublicUI │ │ ├── LICENSE │ │ ├── MCComponentPublicUI │ │ │ ├── Assets │ │ │ │ └── View │ │ │ │ │ ├── EmptyData@2x.png │ │ │ │ │ ├── EmptyData@3x.png │ │ │ │ │ ├── add@2x.png │ │ │ │ │ ├── add@3x.png │ │ │ │ │ ├── arrow@2x.png │ │ │ │ │ ├── arrow@3x.png │ │ │ │ │ ├── notSelected@2x.png │ │ │ │ │ ├── notSelected@3x.png │ │ │ │ │ ├── reduce@2x.png │ │ │ │ │ ├── reduce@3x.png │ │ │ │ │ ├── selected@2x.png │ │ │ │ │ └── selected@3x.png │ │ │ └── Classes │ │ │ │ ├── Button │ │ │ │ ├── Button+Extension.swift │ │ │ │ ├── MCCountdownButton.swift │ │ │ │ └── MCTopAndBottomTextButton.swift │ │ │ │ ├── CollectionView │ │ │ │ ├── MCCollectionView.swift │ │ │ │ ├── MCCollectionViewLeftFlowLayout.swift │ │ │ │ └── MCCollectionViewWaterfallFlowLayout.swift │ │ │ │ ├── TableView │ │ │ │ ├── MCTableView.swift │ │ │ │ └── MCTableViewCell.swift │ │ │ │ ├── TextField │ │ │ │ └── MCTextField.swift │ │ │ │ ├── Textview │ │ │ │ ├── MCTextView.swift │ │ │ │ └── UITextView+Extension.swift │ │ │ │ └── View │ │ │ │ ├── MCEmptyDataView.swift │ │ │ │ ├── MCEventBarView.swift │ │ │ │ ├── MCInputBarView.swift │ │ │ │ ├── MCRadioBarView.swift │ │ │ │ └── MCShowBarView.swift │ │ └── README.md │ ├── MJRefresh │ │ ├── LICENSE │ │ ├── MJRefresh │ │ │ ├── Base │ │ │ │ ├── MJRefreshAutoFooter.h │ │ │ │ ├── MJRefreshAutoFooter.m │ │ │ │ ├── MJRefreshBackFooter.h │ │ │ │ ├── MJRefreshBackFooter.m │ │ │ │ ├── MJRefreshComponent.h │ │ │ │ ├── MJRefreshComponent.m │ │ │ │ ├── MJRefreshFooter.h │ │ │ │ ├── MJRefreshFooter.m │ │ │ │ ├── MJRefreshHeader.h │ │ │ │ └── MJRefreshHeader.m │ │ │ ├── Custom │ │ │ │ ├── Footer │ │ │ │ │ ├── Auto │ │ │ │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ │ │ │ ├── MJRefreshAutoGifFooter.m │ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.m │ │ │ │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ │ │ │ └── MJRefreshAutoStateFooter.m │ │ │ │ │ └── Back │ │ │ │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ │ │ │ ├── MJRefreshBackGifFooter.m │ │ │ │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ │ │ │ ├── MJRefreshBackNormalFooter.m │ │ │ │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ │ │ │ └── MJRefreshBackStateFooter.m │ │ │ │ └── Header │ │ │ │ │ ├── MJRefreshGifHeader.h │ │ │ │ │ ├── MJRefreshGifHeader.m │ │ │ │ │ ├── MJRefreshNormalHeader.h │ │ │ │ │ ├── MJRefreshNormalHeader.m │ │ │ │ │ ├── MJRefreshStateHeader.h │ │ │ │ │ └── MJRefreshStateHeader.m │ │ │ ├── MJRefresh.bundle │ │ │ │ ├── arrow@2x.png │ │ │ │ ├── en.lproj │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── zh-Hans.lproj │ │ │ │ │ └── Localizable.strings │ │ │ │ └── zh-Hant.lproj │ │ │ │ │ └── Localizable.strings │ │ │ ├── MJRefresh.h │ │ │ ├── MJRefreshConst.h │ │ │ ├── MJRefreshConst.m │ │ │ ├── NSBundle+MJRefresh.h │ │ │ ├── NSBundle+MJRefresh.m │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJExtension.m │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ ├── UIScrollView+MJRefresh.m │ │ │ ├── UIView+MJExtension.h │ │ │ └── UIView+MJExtension.m │ │ └── README.md │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ ├── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcuserdata │ │ │ │ └── mancong.xcuserdatad │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── xcuserdata │ │ │ ├── MC.xcuserdatad │ │ │ └── xcschemes │ │ │ │ ├── FLAnimatedImage.xcscheme │ │ │ │ ├── MCPageViewController.xcscheme │ │ │ │ ├── Pods-MCPageViewController_Example.xcscheme │ │ │ │ ├── Pods-MCPageViewController_Tests.xcscheme │ │ │ │ ├── SDWebImage.xcscheme │ │ │ │ └── xcschememanagement.plist │ │ │ └── mancong.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Alamofire.xcscheme │ │ │ ├── Kingfisher.xcscheme │ │ │ ├── MCComponentExtension-MCComponentExtensionBundle.xcscheme │ │ │ ├── MCComponentExtension.xcscheme │ │ │ ├── MCComponentFunction-MCPhotoLibraryBundle.xcscheme │ │ │ ├── MCComponentFunction-MCScanBundle.xcscheme │ │ │ ├── MCComponentFunction-MCToastBundle.xcscheme │ │ │ ├── MCComponentFunction.xcscheme │ │ │ ├── MCComponentPublicUI-MCComponentPublicUIViewBundle.xcscheme │ │ │ ├── MCComponentPublicUI.xcscheme │ │ │ ├── MCPageViewController.xcscheme │ │ │ ├── MJRefresh.xcscheme │ │ │ ├── Pods-MCPageViewController_Example.xcscheme │ │ │ ├── Pods-MCPageViewController_Tests.xcscheme │ │ │ ├── SnapKit.xcscheme │ │ │ └── xcschememanagement.plist │ ├── SnapKit │ │ ├── LICENSE │ │ ├── README.md │ │ └── Source │ │ │ ├── Constraint.swift │ │ │ ├── ConstraintAttributes.swift │ │ │ ├── ConstraintConfig.swift │ │ │ ├── ConstraintConstantTarget.swift │ │ │ ├── ConstraintDSL.swift │ │ │ ├── ConstraintDescription.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 │ └── Target Support Files │ │ ├── Alamofire │ │ ├── Alamofire-Info.plist │ │ ├── Alamofire-dummy.m │ │ ├── Alamofire-prefix.pch │ │ ├── Alamofire-umbrella.h │ │ ├── Alamofire.modulemap │ │ └── Alamofire.xcconfig │ │ ├── Kingfisher │ │ ├── Kingfisher-Info.plist │ │ ├── Kingfisher-dummy.m │ │ ├── Kingfisher-prefix.pch │ │ ├── Kingfisher-umbrella.h │ │ ├── Kingfisher.modulemap │ │ └── Kingfisher.xcconfig │ │ ├── MCComponentExtension │ │ ├── MCComponentExtension-Info.plist │ │ ├── MCComponentExtension-dummy.m │ │ ├── MCComponentExtension-prefix.pch │ │ ├── MCComponentExtension-umbrella.h │ │ ├── MCComponentExtension.modulemap │ │ ├── MCComponentExtension.xcconfig │ │ └── ResourceBundle-MCComponentExtensionBundle-MCComponentExtension-Info.plist │ │ ├── MCComponentFunction │ │ ├── MCComponentFunction-Info.plist │ │ ├── MCComponentFunction-dummy.m │ │ ├── MCComponentFunction-prefix.pch │ │ ├── MCComponentFunction-umbrella.h │ │ ├── MCComponentFunction.modulemap │ │ ├── MCComponentFunction.xcconfig │ │ ├── ResourceBundle-MCClipImageBundle-MCComponentFunction-Info.plist │ │ ├── ResourceBundle-MCPhotoLibraryBundle-MCComponentFunction-Info.plist │ │ ├── ResourceBundle-MCScanBundle-MCComponentFunction-Info.plist │ │ └── ResourceBundle-MCToastBundle-MCComponentFunction-Info.plist │ │ ├── MCComponentPublicUI │ │ ├── MCComponentPublicUI-Info.plist │ │ ├── MCComponentPublicUI-dummy.m │ │ ├── MCComponentPublicUI-prefix.pch │ │ ├── MCComponentPublicUI-umbrella.h │ │ ├── MCComponentPublicUI.modulemap │ │ ├── MCComponentPublicUI.xcconfig │ │ └── ResourceBundle-MCComponentPublicUIViewBundle-MCComponentPublicUI-Info.plist │ │ ├── MCPageViewController │ │ ├── Info.plist │ │ ├── MCPageViewController-Info.plist │ │ ├── MCPageViewController-dummy.m │ │ ├── MCPageViewController-prefix.pch │ │ ├── MCPageViewController-umbrella.h │ │ ├── MCPageViewController.modulemap │ │ └── MCPageViewController.xcconfig │ │ ├── MJRefresh │ │ ├── MJRefresh-Info.plist │ │ ├── MJRefresh-dummy.m │ │ ├── MJRefresh-prefix.pch │ │ ├── MJRefresh-umbrella.h │ │ ├── MJRefresh.modulemap │ │ └── MJRefresh.xcconfig │ │ ├── Pods-MCPageViewController_Example │ │ ├── Info.plist │ │ ├── Pods-MCPageViewController_Example-Info.plist │ │ ├── Pods-MCPageViewController_Example-acknowledgements.markdown │ │ ├── Pods-MCPageViewController_Example-acknowledgements.plist │ │ ├── Pods-MCPageViewController_Example-dummy.m │ │ ├── Pods-MCPageViewController_Example-frameworks.sh │ │ ├── Pods-MCPageViewController_Example-resources.sh │ │ ├── Pods-MCPageViewController_Example-umbrella.h │ │ ├── Pods-MCPageViewController_Example.debug.xcconfig │ │ ├── Pods-MCPageViewController_Example.modulemap │ │ └── Pods-MCPageViewController_Example.release.xcconfig │ │ ├── Pods-MCPageViewController_Tests │ │ ├── Info.plist │ │ ├── Pods-MCPageViewController_Tests-Info.plist │ │ ├── Pods-MCPageViewController_Tests-acknowledgements.markdown │ │ ├── Pods-MCPageViewController_Tests-acknowledgements.plist │ │ ├── Pods-MCPageViewController_Tests-dummy.m │ │ ├── Pods-MCPageViewController_Tests-frameworks.sh │ │ ├── Pods-MCPageViewController_Tests-resources.sh │ │ ├── Pods-MCPageViewController_Tests-umbrella.h │ │ ├── Pods-MCPageViewController_Tests.debug.xcconfig │ │ ├── Pods-MCPageViewController_Tests.modulemap │ │ └── Pods-MCPageViewController_Tests.release.xcconfig │ │ └── SnapKit │ │ ├── SnapKit-Info.plist │ │ ├── SnapKit-dummy.m │ │ ├── SnapKit-prefix.pch │ │ ├── SnapKit-umbrella.h │ │ ├── SnapKit.modulemap │ │ └── SnapKit.xcconfig └── Tests │ ├── Info.plist │ └── Tests.swift ├── LICENSE ├── MCPageViewController.podspec ├── MCPageViewController ├── .DS_Store ├── Assets │ └── .gitkeep └── Classes │ ├── .DS_Store │ ├── .gitkeep │ ├── HangCategory │ ├── MCBaseTableView.swift │ └── MCPageChildViewController.swift │ ├── MCCategoryBar │ ├── MCCategoryBar.swift │ ├── MCCategoryBarCell.swift │ ├── MCCategoryBarModel.swift │ └── MCIndicatorView.swift │ ├── MCContainerView │ └── MCContainerView.swift │ └── MCPageBase │ ├── MCPageConfig.swift │ └── MCPageTool.swift ├── README.md ├── Resources ├── .DS_Store ├── demo1.png ├── demo2.png ├── demo3.png └── demoGif.gif ├── _Pods 2.xcodeproj └── _Pods.xcodeproj /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/.DS_Store -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * https://www.objc.io/issues/6-build-tools/travis-ci/ 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | osx_image: xcode7.3 6 | language: objective-c 7 | # cache: cocoapods 8 | # podfile: Example/Podfile 9 | # before_install: 10 | # - gem install cocoapods # Since Travis is not always on latest version 11 | # - pod install --project-directory=Example 12 | script: 13 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/MCPageViewController.xcworkspace -scheme MCPageViewController-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty 14 | - pod lib lint 15 | -------------------------------------------------------------------------------- /Example/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/.DS_Store -------------------------------------------------------------------------------- /Example/MCPageViewController.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/MCPageViewController.xcodeproj/xcuserdata/mancong.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | MCPageViewController-Example.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Example/MCPageViewController.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/MCPageViewController.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/MCPageViewController.xcworkspace/xcuserdata/MC.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/MCPageViewController.xcworkspace/xcuserdata/MC.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Example/MCPageViewController.xcworkspace/xcuserdata/mancong.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/MCPageViewController.xcworkspace/xcuserdata/mancong.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Example/MCPageViewController/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/MCPageViewController/.DS_Store -------------------------------------------------------------------------------- /Example/MCPageViewController/Demo/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/MCPageViewController/Demo/.DS_Store -------------------------------------------------------------------------------- /Example/MCPageViewController/Demo/BasicUse(基本使用&属性设置)/MCBasicUseFiveViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCBasicUseFiveViewController.swift 3 | // MCPageViewController_Example 4 | // 5 | // Created by 满聪 on 2019/6/20. 6 | // Copyright © 2019 CocoaPods. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import MCPageViewController 11 | 12 | class MCBasicUseFiveViewController: MCBasicUseViewController { 13 | 14 | override func viewDidLoad() { 15 | super.viewDidLoad() 16 | 17 | loadPageViewController() 18 | 19 | initUI() 20 | } 21 | 22 | 23 | func initUI() { 24 | 25 | navigationItem.title = "分类栏在导航栏上" 26 | view.backgroundColor = UIColor.white 27 | 28 | categoryBar.frame = CGRect.init(x: 0, y: 0, width: 300, height: 44) 29 | self.navigationItem.titleView = categoryBar 30 | 31 | 32 | view.addSubview(containerView) 33 | containerView.snp.remakeConstraints { (make) ->Void in 34 | make.edges.equalTo(view) 35 | } 36 | } 37 | 38 | func loadPageViewController() { 39 | 40 | let config = MCPageConfig() 41 | 42 | 43 | config.viewControllers = vcArray 44 | config.categoryModels = modelArray 45 | config.defaultIndex = 0 46 | config.category.maxTitleCount = 10 47 | config.separator.isHidden = true 48 | config.category.itemWidth = 150 49 | config.category.itemSpacing = 0 50 | config.category.barBackgroundColor = UIColor.orange 51 | config.category.itemBackgroundColor = UIColor.yellow 52 | 53 | categoryBar.initCategoryBarWithConfig(config) 54 | containerView.initContainerViewWithConfig(config) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Example/MCPageViewController/Demo/BasicUse(基本使用&属性设置)/MCBasicUseOneViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCBasicUseOneViewController.swift 3 | // MCPageViewController_Example 4 | // 5 | // Created by 满聪 on 2019/6/20. 6 | // Copyright © 2019 CocoaPods. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import MCPageViewController 11 | 12 | 13 | class MCBasicUseOneViewController: MCBasicUseViewController { 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | 18 | loadPageViewController() 19 | 20 | initUI() 21 | } 22 | 23 | 24 | func initUI() { 25 | 26 | navigationItem.title = "简单示例" 27 | view.backgroundColor = UIColor.white 28 | 29 | view.addSubview(categoryBar) 30 | categoryBar.snp.remakeConstraints { (make) ->Void in 31 | make.left.right.top.equalTo(view) 32 | make.height.equalTo(40) 33 | } 34 | 35 | 36 | view.addSubview(containerView) 37 | containerView.snp.remakeConstraints { (make) ->Void in 38 | make.left.right.bottom.equalTo(view) 39 | make.top.equalTo(categoryBar.snp.bottom) 40 | } 41 | } 42 | 43 | func loadPageViewController() { 44 | 45 | let config = MCPageConfig() 46 | 47 | config.viewControllers = vcArray 48 | config.categoryModels = modelArray 49 | config.defaultIndex = 0 50 | config.category.maxTitleCount = 10 51 | config.indicator.height = 20 52 | config.indicator.image = UIImage.init(named: "HOT_bg") 53 | config.isCanScroll = false 54 | 55 | 56 | categoryBar.initCategoryBarWithConfig(config) 57 | containerView.initContainerViewWithConfig(config) 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /Example/MCPageViewController/Demo/BasicUse(基本使用&属性设置)/MCBasicUseSixViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCBasicUseSixViewController.swift 3 | // MCPageViewController_Example 4 | // 5 | // Created by 满聪 on 2019/6/20. 6 | // Copyright © 2019 CocoaPods. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import MCPageViewController 11 | 12 | 13 | class MCBasicUseSixViewController : MCBasicUseViewController { 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | 18 | loadPageViewController() 19 | 20 | initUI() 21 | } 22 | 23 | 24 | func initUI() { 25 | 26 | navigationItem.title = "指示器的设置" 27 | view.backgroundColor = UIColor.white 28 | 29 | view.addSubview(categoryBar) 30 | categoryBar.snp.remakeConstraints { (make) ->Void in 31 | make.left.right.top.equalTo(view) 32 | make.height.equalTo(40) 33 | } 34 | 35 | 36 | view.addSubview(containerView) 37 | containerView.snp.remakeConstraints { (make) ->Void in 38 | make.left.right.bottom.equalTo(view) 39 | make.top.equalTo(categoryBar.snp.bottom) 40 | } 41 | } 42 | 43 | func loadPageViewController() { 44 | 45 | let config = MCPageConfig() 46 | 47 | config.viewControllers = vcArray 48 | config.categoryModels = modelArray 49 | 50 | 51 | config.indicator.isHidden = false 52 | config.indicator.backgroundColor = UIColor.red 53 | config.indicator.height = 4 54 | config.indicator.cornerRadius = 2 55 | 56 | // config.indicator.width = 30 57 | 58 | categoryBar.initCategoryBarWithConfig(config) 59 | containerView.initContainerViewWithConfig(config) 60 | } 61 | } 62 | 63 | -------------------------------------------------------------------------------- /Example/MCPageViewController/Demo/BasicUse(基本使用&属性设置)/MCBasicUseThreeViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCBasicUseThreeViewController.swift 3 | // MCPageViewController_Example 4 | // 5 | // Created by 满聪 on 2019/6/20. 6 | // Copyright © 2019 CocoaPods. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import MCPageViewController 11 | 12 | class MCBasicUseThreeViewController: MCBasicUseViewController { 13 | 14 | override func viewDidLoad() { 15 | super.viewDidLoad() 16 | 17 | loadPageViewController() 18 | 19 | initUI() 20 | } 21 | 22 | func initUI() { 23 | 24 | navigationItem.title = "设置分割线" 25 | view.backgroundColor = UIColor.white 26 | 27 | view.addSubview(categoryBar) 28 | categoryBar.snp.remakeConstraints { (make) ->Void in 29 | make.left.right.top.equalTo(view) 30 | make.height.equalTo(40) 31 | } 32 | 33 | 34 | view.addSubview(containerView) 35 | containerView.snp.remakeConstraints { (make) ->Void in 36 | make.left.right.bottom.equalTo(view) 37 | make.top.equalTo(categoryBar.snp.bottom) 38 | } 39 | } 40 | 41 | func loadPageViewController() { 42 | 43 | let config = MCPageConfig() 44 | 45 | config.viewControllers = vcArray 46 | config.categoryModels = modelArray 47 | 48 | config.separator.backgroundColor = UIColor.red 49 | config.separator.height = 5 50 | 51 | 52 | categoryBar.initCategoryBarWithConfig(config) 53 | containerView.initContainerViewWithConfig(config) 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Example/MCPageViewController/Demo/SlidingSuspension(滑动悬挂)/NextViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NextViewController.swift 3 | // MCPageViewController 4 | // 5 | // Created by MC on 2018/11/6. 6 | // Copyright © 2018年 MC. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class NextViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | title = "跳转的页面" 17 | 18 | view.backgroundColor = UIColor.green 19 | // Do any additional setup after loading the view. 20 | } 21 | 22 | override func didReceiveMemoryWarning() { 23 | super.didReceiveMemoryWarning() 24 | // Dispose of any resources that can be recreated. 25 | } 26 | 27 | 28 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 29 | self.dismiss(animated: true, completion: nil) 30 | } 31 | 32 | /* 33 | // MARK: - Navigation 34 | 35 | // In a storyboard-based application, you will often want to do a little preparation before navigation 36 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 37 | // Get the new view controller using segue.destinationViewController. 38 | // Pass the selected object to the new view controller. 39 | } 40 | */ 41 | 42 | } 43 | -------------------------------------------------------------------------------- /Example/MCPageViewController/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "size" : "1024x1024", 46 | "scale" : "1x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Example/MCPageViewController/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/MCPageViewController/Images.xcassets/HOT_bg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "HOT.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/MCPageViewController/Images.xcassets/HOT_bg.imageset/HOT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/MCPageViewController/Images.xcassets/HOT_bg.imageset/HOT.png -------------------------------------------------------------------------------- /Example/MCPageViewController/Images.xcassets/hot.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "hot.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Example/MCPageViewController/Images.xcassets/hot.imageset/hot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/MCPageViewController/Images.xcassets/hot.imageset/hot.png -------------------------------------------------------------------------------- /Example/MCPageViewController/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | PageViewController 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UISupportedInterfaceOrientations 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationLandscapeLeft 39 | 40 | NSAppTransportSecurity 41 | 42 | NSAllowsArbitraryLoads 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | 2 | source 'https://github.com/CocoaPods/Specs.git' #官方仓库地址 3 | source 'https://gitee.com/mancong/MyPublicRepo.git' 4 | 5 | use_frameworks! 6 | 7 | target 'MCPageViewController_Example' do 8 | pod 'MCPageViewController', :path => '../' 9 | 10 | pod 'SnapKit' 11 | pod 'MJRefresh' 12 | 13 | # ==============扩展库 14 | pod 'MCComponentExtension', '0.8.0' 15 | pod 'MCComponentPublicUI', '~> 0.8.0' 16 | pod 'MCComponentFunction', '0.8.2' 17 | 18 | 19 | target 'MCPageViewController_Tests' do 20 | inherit! :search_paths 21 | 22 | 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /Example/Pods/Alamofire/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 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 | -------------------------------------------------------------------------------- /Example/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Alamofire.swift 3 | // 4 | // Copyright (c) 2014 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 | import Dispatch 26 | import Foundation 27 | 28 | extension DispatchQueue { 29 | static var userInteractive: DispatchQueue { return DispatchQueue.global(qos: .userInteractive) } 30 | static var userInitiated: DispatchQueue { return DispatchQueue.global(qos: .userInitiated) } 31 | static var utility: DispatchQueue { return DispatchQueue.global(qos: .utility) } 32 | static var background: DispatchQueue { return DispatchQueue.global(qos: .background) } 33 | 34 | func after(_ delay: TimeInterval, execute closure: @escaping () -> Void) { 35 | asyncAfter(deadline: .now() + delay, execute: closure) 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Example/Pods/Kingfisher/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Wei Wang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Example/Pods/Kingfisher/Sources/Box.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Box.swift 3 | // Kingfisher 4 | // 5 | // Created by Wei Wang on 2018/3/17. 6 | // Copyright (c) 2018 Wei Wang 7 | // 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | 26 | import Foundation 27 | 28 | class Box { 29 | let value: T 30 | 31 | init(_ value: T) { 32 | self.value = value 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Example/Pods/Kingfisher/Sources/Kingfisher.h: -------------------------------------------------------------------------------- 1 | // 2 | // Kingfisher.h 3 | // Kingfisher 4 | // 5 | // Created by Wei Wang on 15/4/6. 6 | // 7 | // Copyright (c) 2018 Wei Wang 8 | // 9 | // Permission is hereby granted, free of charge, to any person obtaining a copy 10 | // of this software and associated documentation files (the "Software"), to deal 11 | // in the Software without restriction, including without limitation the rights 12 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | // copies of the Software, and to permit persons to whom the Software is 14 | // furnished to do so, subject to the following conditions: 15 | // 16 | // The above copyright notice and this permission notice shall be included in 17 | // all copies or substantial portions of the Software. 18 | // 19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | // THE SOFTWARE. 26 | 27 | #import 28 | 29 | //! Project version number for Kingfisher. 30 | FOUNDATION_EXPORT double KingfisherVersionNumber; 31 | 32 | //! Project version string for Kingfisher. 33 | FOUNDATION_EXPORT const unsigned char KingfisherVersionString[]; 34 | 35 | // In this header, you should import all the public headers of your framework using statements like #import 36 | 37 | 38 | -------------------------------------------------------------------------------- /Example/Pods/Kingfisher/Sources/RequestModifier.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RequestModifier.swift 3 | // Kingfisher 4 | // 5 | // Created by Wei Wang on 2016/09/05. 6 | // 7 | // Copyright (c) 2018 Wei Wang 8 | // 9 | // Permission is hereby granted, free of charge, to any person obtaining a copy 10 | // of this software and associated documentation files (the "Software"), to deal 11 | // in the Software without restriction, including without limitation the rights 12 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | // copies of the Software, and to permit persons to whom the Software is 14 | // furnished to do so, subject to the following conditions: 15 | // 16 | // The above copyright notice and this permission notice shall be included in 17 | // all copies or substantial portions of the Software. 18 | // 19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | // THE SOFTWARE. 26 | 27 | import Foundation 28 | 29 | /// Request modifier of image downloader. 30 | public protocol ImageDownloadRequestModifier { 31 | func modified(for request: URLRequest) -> URLRequest? 32 | } 33 | 34 | struct NoModifier: ImageDownloadRequestModifier { 35 | static let `default` = NoModifier() 36 | private init() {} 37 | func modified(for request: URLRequest) -> URLRequest? { 38 | return request 39 | } 40 | } 41 | 42 | public struct AnyModifier: ImageDownloadRequestModifier { 43 | 44 | let block: (URLRequest) -> URLRequest? 45 | 46 | public func modified(for request: URLRequest) -> URLRequest? { 47 | return block(request) 48 | } 49 | 50 | public init(modify: @escaping (URLRequest) -> URLRequest? ) { 51 | block = modify 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Example/Pods/Kingfisher/Sources/ThreadHelper.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThreadHelper.swift 3 | // Kingfisher 4 | // 5 | // Created by Wei Wang on 15/10/9. 6 | // 7 | // Copyright (c) 2018 Wei Wang 8 | // 9 | // Permission is hereby granted, free of charge, to any person obtaining a copy 10 | // of this software and associated documentation files (the "Software"), to deal 11 | // in the Software without restriction, including without limitation the rights 12 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | // copies of the Software, and to permit persons to whom the Software is 14 | // furnished to do so, subject to the following conditions: 15 | // 16 | // The above copyright notice and this permission notice shall be included in 17 | // all copies or substantial portions of the Software. 18 | // 19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | // THE SOFTWARE. 26 | 27 | import Foundation 28 | 29 | extension DispatchQueue { 30 | // This method will dispatch the `block` to self. 31 | // If `self` is the main queue, and current thread is main thread, the block 32 | // will be invoked immediately instead of being dispatched. 33 | func safeAsync(_ block: @escaping ()->()) { 34 | if self === DispatchQueue.main && Thread.isMainThread { 35 | block() 36 | } else { 37 | async { block() } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/MCPageViewController.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MCPageViewController", 3 | "version": "5.4.3", 4 | "summary": "分页控制器: 支持分类栏在navigationBar上,滑动置顶等功能。", 5 | "homepage": "https://github.com/mancongiOS/MCPageViewController", 6 | "license": "MIT", 7 | "authors": { 8 | "MC": "562863544@qq.com" 9 | }, 10 | "platforms": { 11 | "ios": "8.0" 12 | }, 13 | "source": { 14 | "git": "https://github.com/mancongiOS/MCPageViewController.git", 15 | "tag": "5.4.3" 16 | }, 17 | "source_files": "MCPageViewController/Classes/**/*", 18 | "swift_versions": "5.0", 19 | "dependencies": { 20 | "SnapKit": [ 21 | 22 | ] 23 | }, 24 | "swift_version": "5.0" 25 | } 26 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentExtension/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 mancongiOS 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | 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, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Example/Pods/MCComponentExtension/MCComponentExtension/Assets/UIImage/PlaceHolderImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentExtension/MCComponentExtension/Assets/UIImage/PlaceHolderImage@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentExtension/MCComponentExtension/Assets/UIImage/PlaceHolderImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentExtension/MCComponentExtension/Assets/UIImage/PlaceHolderImage@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentExtension/MCComponentExtension/Classes/Array+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Array+Extension.swift 3 | // GMJKExtension 4 | // 5 | // Created by 满聪 on 2019/7/31. 6 | // 参考至: EFSafeArray created of EyreFree 7 | 8 | import Foundation 9 | 10 | // ~ 11 | postfix operator ~ 12 | 13 | public postfix func ~ (value: Int?) -> JKSafeArray? { 14 | return JKSafeArray(value: value) 15 | } 16 | 17 | public postfix func ~ (value: Range?) -> JKSafeRange? { 18 | return JKSafeRange(value: value) 19 | } 20 | 21 | public postfix func ~ (value: CountableClosedRange?) -> JKSafeRange? { 22 | guard let value = value else { 23 | return nil 24 | } 25 | return JKSafeRange(value: Range(value)) 26 | } 27 | 28 | // Struct 29 | public struct JKSafeArray { 30 | var index: Int 31 | init?(value: Int?) { 32 | guard let value = value else { 33 | return nil 34 | } 35 | self.index = value 36 | } 37 | } 38 | 39 | public struct JKSafeRange { 40 | var range: Range 41 | init?(value: Range?) { 42 | guard let value = value else { 43 | return nil 44 | } 45 | self.range = value 46 | } 47 | } 48 | 49 | // subscript 50 | public extension Array { 51 | 52 | 53 | /// 单个 54 | subscript(index: JKSafeArray?) -> Element? { 55 | get { 56 | if let index = index?.index { 57 | return (self.startIndex.. ArraySlice? { 72 | get { 73 | if let range = bounds?.range { 74 | return self[range.clamped(to: self.startIndex ..< self.endIndex)] 75 | } 76 | return nil 77 | } 78 | set { 79 | if let range = bounds?.range, let newValue = newValue { 80 | self[range.clamped(to: self.startIndex ..< self.endIndex)] = newValue 81 | } 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentExtension/MCComponentExtension/Classes/Bundle+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Bundle+Extension.swift 3 | // MCAPI 4 | // 5 | // Created by MC on 2018/11/26. 6 | // 7 | 8 | import Foundation 9 | import UIKit 10 | 11 | 12 | @objc extension Bundle { 13 | 14 | /** 15 | * 加载指定bundle下的图片资源 16 | * 在哪个pod下的哪个bundle下的image 17 | */ 18 | public static func mc_loadImage(_ imageName: String, from bundleName: String, in podName: String) -> UIImage? { 19 | 20 | 21 | var associateBundleURL = Bundle.main.url(forResource: "Frameworks", withExtension: nil) 22 | associateBundleURL = associateBundleURL?.appendingPathComponent(podName) 23 | associateBundleURL = associateBundleURL?.appendingPathExtension("framework") 24 | 25 | 26 | if associateBundleURL == nil { 27 | print("获取bundle失败") 28 | return nil 29 | } 30 | 31 | 32 | let associateBunle = Bundle.init(url: associateBundleURL!) 33 | associateBundleURL = associateBunle?.url(forResource: bundleName, withExtension: "bundle") 34 | 35 | if associateBundleURL != nil { 36 | let bundle = Bundle.init(url: associateBundleURL!) 37 | let scale = Int(UIScreen.main.scale) 38 | 39 | // 适配2x还是3x图片 40 | let name = imageName + "@" + String(scale) + "x" 41 | let path = bundle?.path(forResource: name, ofType: "png") 42 | 43 | if path == nil { 44 | print("获取bundle失败") 45 | return nil 46 | } 47 | let image1 = UIImage.init(contentsOfFile: path!) 48 | return image1 49 | 50 | } else { 51 | return nil 52 | } 53 | 54 | 55 | 56 | } 57 | } 58 | 59 | 60 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentExtension/MCComponentExtension/Classes/DispatchQueue+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extension.swift 3 | // MCComponentExtension 4 | // 5 | // Created by MC on 2018/12/20. 6 | // 7 | 8 | import Foundation 9 | 10 | 11 | 12 | extension DispatchTime: ExpressibleByIntegerLiteral { 13 | public init(integerLiteral value: Int) { 14 | self = DispatchTime.now() + .seconds(value) 15 | } 16 | } 17 | 18 | extension DispatchTime: ExpressibleByFloatLiteral { 19 | public init(floatLiteral value: Double) { 20 | self = DispatchTime.now() + .milliseconds(Int(value * 1000)) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentExtension/MCComponentExtension/Classes/Extension+NotificationCenter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Extension+NotificationCenter.swift 3 | // CityPlatform 4 | // 5 | // Created by GY on 2018/12/21. 6 | // Copyright © 2018年 MC. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | 13 | /// 可继续扩展 14 | extension Notification.Name { 15 | 16 | /// 通知名的前缀, 请拼接上去,防止重复 17 | public static let notName = "MC.Notification.Name." 18 | 19 | /// 接收到远程推送 20 | public static let remotePush = Notification.Name(notName + "remotePush") 21 | 22 | /// 重新登录 23 | public static let reLogin = NSNotification.Name(notName + "reLogin") 24 | 25 | /// 登陆/退出 26 | public static let login = NSNotification.Name(notName + "login") 27 | } 28 | 29 | 30 | 31 | 32 | 33 | 34 | extension NotificationCenter { 35 | 36 | public static let shared = NotificationCenter.default 37 | 38 | 39 | /// 发送通知 40 | public func mc_post(_ name: Notification.Name, object: Any? = nil) { 41 | 42 | NotificationCenter.default.post(name: name, object: object, userInfo: nil) 43 | } 44 | 45 | /// 监听通知 46 | public func mc_addObserver(_ name: Notification.Name, vc: Any, selector: Selector, object: Any? = nil) { 47 | NotificationCenter.default.addObserver(vc, selector: selector, name: name, object: object) 48 | } 49 | 50 | /// 移除通知 51 | public func mc_remove(_ name: Notification.Name,vc: Any, object: Any? = nil) { 52 | NotificationCenter.default.removeObserver(vc, name: name, object: object) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentExtension/MCComponentExtension/Classes/Int+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Int+Extension.swift 3 | // MCComponentExtension 4 | // 5 | // Created by MC on 2018/12/14. 6 | // 7 | 8 | import UIKit 9 | 10 | 11 | extension Int { 12 | 13 | /// Int类型的分,转为元为单位的 14 | /// 15 | /// - Parameters: 16 | /// - isNeedUnit: 是否需要¥单位 17 | /// - Returns: String 18 | public func toYuanRMB(_ isNeedUnit:Bool = true) -> String { 19 | 20 | // 分为单位 21 | let figure = self 22 | 23 | 24 | let price = CGFloat(figure) 25 | let price1 = String(format: "%.2f", CGFloat(figure)/100) 26 | var price2 = String(format: "%.2f", CGFloat(figure)/100) 27 | let indexOne = price1.index(price1.endIndex, offsetBy: -1) 28 | let lastOne = price1.suffix(from: indexOne) 29 | let indexTwo = price1.index(price1.endIndex, offsetBy: -2) 30 | let lastTwo = price1.suffix(from: indexTwo) 31 | if lastOne == "0" { 32 | price2 = String.init(format: "%.1f", price/100) 33 | } 34 | if lastTwo == "00" { 35 | price2 = String.init(format: "%.0f", price/100) 36 | } 37 | 38 | return isNeedUnit ? ("¥" + price2) : price2 39 | } 40 | } 41 | 42 | //MARK: 类型转换 43 | extension Int { 44 | 45 | /** 46 | * Int -> 字符串 47 | */ 48 | public var stringValue: String { 49 | get { 50 | return String(self) 51 | } 52 | } 53 | 54 | 55 | /** 56 | * Int -> Float 57 | */ 58 | public var folatValue: Float { 59 | get { 60 | return Float(self) 61 | } 62 | } 63 | 64 | /** 65 | * Int -> Double 66 | */ 67 | public var doubleValue: Double { 68 | get { 69 | return Double(self) 70 | } 71 | } 72 | 73 | 74 | /** 75 | * Int -> NSNumber 76 | */ 77 | public var numberValue: NSNumber { 78 | get { 79 | return NSNumber.init(value: self) 80 | } 81 | } 82 | 83 | } 84 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentExtension/MCComponentExtension/Classes/UIView+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Extension.swift 3 | // MCComponentExtension 4 | // 5 | // Created by MC on 2019/1/11. 6 | // 7 | 8 | import Foundation 9 | 10 | extension UIView { 11 | /** 12 | * 将一个UIView视图转为图片 13 | */ 14 | public func mc_makeImage() -> UIImage { 15 | let size = self.bounds.size 16 | 17 | /** 18 | * 第一个参数表示区域大小。 19 | 第二个参数表示是否是非透明的。如果需要显示半透明效果,需要传NO,否则传YES。 20 | 第三个参数就是屏幕密度了 21 | */ 22 | UIGraphicsBeginImageContextWithOptions(size, true, UIScreen.main.scale) 23 | self.layer.render(in: UIGraphicsGetCurrentContext()!) 24 | let image = UIGraphicsGetImageFromCurrentImageContext() 25 | UIGraphicsEndImageContext() 26 | return image! 27 | } 28 | } 29 | 30 | 31 | extension UIView { 32 | /** 33 | * 通过贝塞尔曲线,裁切四个边的任意几个的圆角 34 | */ 35 | public func mc_clipCorners(_ corner:UIRectCorner, cornerRadii:CGSize) { 36 | 37 | let maskPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corner, cornerRadii: cornerRadii) 38 | let maskLayer = CAShapeLayer() 39 | maskLayer.frame = self.bounds 40 | maskLayer.path = maskPath.cgPath 41 | self.layer.mask = maskLayer 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentExtension/MCComponentExtension/Classes/UserDefaults+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UserDefaults+Extension.swift 3 | // MCAPI 4 | // 5 | // Created by MC on 2018/11/26. 6 | // 7 | 8 | import Foundation 9 | 10 | import UIKit 11 | public extension UserDefaults { 12 | 13 | 14 | /** 15 | * 版本信息 16 | */ 17 | struct Version : UserDefaultsSettable { 18 | public enum defaultKeys: String { 19 | case version 20 | case build 21 | } 22 | } 23 | 24 | /** 25 | * 地理位置信息 26 | */ 27 | struct LocationInfo: UserDefaultsSettable { 28 | public enum defaultKeys: String { 29 | case latitude 30 | case longitude 31 | case country 32 | case province 33 | case city 34 | case area 35 | /// 详细地址 36 | case detail 37 | /// 全路径地址 38 | case address 39 | } 40 | } 41 | 42 | 43 | 44 | 45 | } 46 | 47 | 48 | 49 | 50 | public protocol UserDefaultsSettable { 51 | associatedtype defaultKeys: RawRepresentable 52 | } 53 | 54 | extension UserDefaultsSettable where defaultKeys.RawValue==String { 55 | static public func set(value: Any, forKey key: defaultKeys) { 56 | let aKey = key.rawValue 57 | UserDefaults.standard.set(value, forKey: aKey) 58 | } 59 | 60 | 61 | static public func getString(forKey key: defaultKeys) -> String? { 62 | let aKey = key.rawValue 63 | let value = UserDefaults.standard.string(forKey: aKey) 64 | return value 65 | } 66 | 67 | static public func getArray(forKey key: defaultKeys) -> [Any]? { 68 | let aKey = key.rawValue 69 | 70 | let value = UserDefaults.standard.array(forKey: aKey) 71 | 72 | return value 73 | } 74 | 75 | static public func getDictionary(forKey key: defaultKeys) -> [String:Any]? { 76 | let aKey = key.rawValue 77 | 78 | let value = UserDefaults.standard.dictionary(forKey: aKey) 79 | return value 80 | } 81 | } 82 | 83 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentExtension/README.md: -------------------------------------------------------------------------------- 1 | # iOS_Component_extension 2 | 3 | #### 项目介绍 4 | 组件化--常用扩展 5 | 6 | #### 软件架构 7 | 软件架构说明 8 | 9 | 10 | #### 安装教程 11 | 12 | 1. xxxx 13 | 2. xxxx 14 | 3. xxxx 15 | 16 | #### 使用说明 17 | 18 | 1. xxxx 19 | 2. xxxx 20 | 3. xxxx 21 | 22 | #### 参与贡献 23 | 24 | 1. Fork 本项目 25 | 2. 新建 Feat_xxx 分支 26 | 3. 提交代码 27 | 4. 新建 Pull Request 28 | 29 | 30 | #### 码云特技 31 | 32 | 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 33 | 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 34 | 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 35 | 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 36 | 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 37 | 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 562863544@qq.com <13761066392@163.com> 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/PhotoLibrary/image_not_selected@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/PhotoLibrary/image_not_selected@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/PhotoLibrary/image_not_selected@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/PhotoLibrary/image_not_selected@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/PhotoLibrary/image_selected@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/PhotoLibrary/image_selected@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/PhotoLibrary/image_selected@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/PhotoLibrary/image_selected@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Scan/Scan_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Scan/Scan_back.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Scan/Scan_scanning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Scan/Scan_scanning.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_failure@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_failure@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_failure@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_failure@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_other@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_other@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_other@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_other@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_success@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_success@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_success@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_success@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_wait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_wait@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_wait@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_wait@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_warning@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_warning@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_warning@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentFunction/MCComponentFunction/Assets/Toast/toast_warning@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/AppStore/MCAppStore.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCAppStore.swift 3 | // Alamofire 4 | // 5 | // Created by MC on 2018/12/25. 6 | // 7 | 8 | import Foundation 9 | 10 | public class MCAppStore: NSObject { 11 | 12 | public static let shared = MCAppStore.init() 13 | 14 | /** 15 | * 去App Store评分 16 | * @param AppID: app的Id 17 | */ 18 | public func mc_toScore(_ AppID: String) { 19 | let urlStr = "itms-apps://itunes.apple.com/app/id\(AppID)?action=write-review" 20 | UIApplication.shared.openURL(URL.init(string: urlStr)!) 21 | } 22 | 23 | /** 24 | * 去App Store下载 25 | */ 26 | 27 | public func mc_toUpdate(_ AppID: String) { 28 | 29 | let urlStr = "itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=\(AppID)" 30 | UIApplication.shared.openURL(URL.init(string: urlStr)!) 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/MCDatePicker/MCDateManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCDateManager.swift 3 | // MCAPI 4 | // 5 | // Created by MC on 2018/8/15. 6 | // Copyright © 2018年 MC. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | 12 | /** 13 | * 根据时间格式将字符串 -> 时间类 14 | * 默认时间格式:yyyy-MM-dd 15 | */ 16 | public func MCDateManager_getDateFromString(_ dateString:String,dateFormat:String = "yyyy-MM-dd") -> Date { 17 | let dateFormatter = DateFormatter.init() 18 | // dateFormatter.locale = Locale.init(identifier: "zh_CN") 19 | dateFormatter.dateFormat = dateFormat 20 | let date = dateFormatter.date(from: dateString)! 21 | return date 22 | } 23 | 24 | 25 | /** 26 | * 根据时间格式将时间类 -> 字符串 27 | * 默认时间格式:yyyy-MM-dd HH:mm:ss 28 | */ 29 | public func MCDateManager_getTimeStrFromDate (_ date:Date,dateFormat:String = "yyyy-MM-dd") -> String { 30 | // let localDate = MCDateManager_getLocalDateFromWorldDate(date) 31 | let dateFormatter = DateFormatter.init() 32 | dateFormatter.dateFormat = dateFormat 33 | let str = dateFormatter.string(from: date) 34 | return str 35 | } 36 | 37 | 38 | 39 | /** 40 | * 获取日期的年月日对象 41 | */ 42 | public func MCDateManager_getDateComponents(date:Date) -> DateComponents { 43 | let calendar = Calendar.current 44 | let unit:Set = [.year,.month,.day] 45 | let components = calendar.dateComponents(unit, from: date) 46 | return components 47 | } 48 | 49 | 50 | /** 51 | * 世界时间转为本地时间 52 | */ 53 | public func MCDateManager_getLocalDateFromWorldDate(_ date:Date) -> Date { 54 | let localTimeZone = TimeZone.current 55 | let offset = localTimeZone.secondsFromGMT(for: date) 56 | let localDate = date.addingTimeInterval(Double(offset)) 57 | return localDate 58 | } 59 | 60 | 61 | /** 62 | * 比较两个时间大小 63 | * one < two的情况return -1 |||| 64 | * one = two的情况return 0 |||| 65 | * one > two的情况teturn 1 |||| 66 | */ 67 | public func MCDateManager_compareTwoDate(one:Date,two:Date) -> Int { 68 | if one.compare(two) == .orderedAscending { // 升序 69 | return -1 70 | } 71 | 72 | if one.compare(two) == .orderedSame { // 相等 73 | return 0 74 | } 75 | 76 | if one.compare(two) == .orderedDescending { // 降序 77 | return 1 78 | } 79 | 80 | return 0 81 | } 82 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/MCKingfisher/UIImageView+Kingfisher.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+Kingfisher.swift 3 | // MCComponentExtension 4 | // 5 | // Created by 满聪 on 2019/5/24. 6 | // 7 | 8 | import Foundation 9 | 10 | import Kingfisher 11 | 12 | 13 | extension UIImageView { 14 | 15 | /// 加载网络图片 16 | /// 17 | /// - Parameters: 18 | /// - urlString: 图片url字符串 19 | /// - placeholder: 占位图 20 | /// - complete: 返回加载的Image的闭包 21 | public func mc_setImage(with urlString: String?, placeholder: UIImage?, complete: ((_ image: UIImage?) -> ())? = nil) { 22 | 23 | guard let urlString = urlString, 24 | let url = URL(string: urlString) else { 25 | self.image = placeholder 26 | return 27 | } 28 | 29 | self.kf.setImage(with: url, placeholder: placeholder) { (image, _, _, _) in 30 | 31 | if complete != nil { 32 | complete!(image) 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/MCNetwork/MCNetworkManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCNetworkManager.swift 3 | // MCAPI 4 | // 5 | // Created by MC on 2018/10/23. 6 | // Copyright © 2018年 MC. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import Alamofire 11 | 12 | 13 | public class MCNetworkManager { 14 | // 网络监听 15 | //shared instance 16 | public static let shared = MCNetworkManager() 17 | 18 | private let reachabilityManager = Alamofire.NetworkReachabilityManager(host: "www.apple.com") 19 | 20 | public typealias RespnseClosure = (MCNetworkStatus) -> Void 21 | public func startNetworkReachabilityObserver(response:@escaping RespnseClosure) { 22 | 23 | reachabilityManager?.listener = { status in 24 | switch status { 25 | 26 | case .notReachable: 27 | response(.notReachable) 28 | case .unknown : 29 | response(.unknown) 30 | 31 | case .reachable(.ethernetOrWiFi): 32 | response(.WIFI) 33 | 34 | case .reachable(.wwan): 35 | response(.WWAN) 36 | } 37 | } 38 | 39 | // start listening 40 | reachabilityManager?.startListening() 41 | } 42 | // 销毁 43 | deinit { 44 | reachabilityManager?.stopListening() 45 | } 46 | } 47 | 48 | public enum MCNetworkStatus { 49 | case notReachable 50 | case unknown 51 | case WIFI 52 | case WWAN 53 | } 54 | 55 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/MCRefresh/UIScrollView+MJRefresh.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+MJRefresh.swift 3 | // Kingfisher 4 | // 5 | // Created by 满聪 on 2019/5/24. 6 | // 7 | 8 | import Foundation 9 | 10 | 11 | import MCComponentExtension 12 | import MJRefresh 13 | 14 | 15 | // TODO: - MJRefresh 方法封装 16 | extension UIScrollView { 17 | 18 | /// 添加下拉刷新控件 19 | public func mc_header(refreshingBlock: @escaping (() -> ())) { 20 | self.mj_header = MJRefreshNormalHeader.init(refreshingBlock: refreshingBlock) 21 | } 22 | 23 | /// 停止下拉刷新 24 | public func mc_headerEnd() { 25 | self.mj_header.endRefreshing() 26 | } 27 | 28 | 29 | /// 添加上拉加载控件 30 | public func mc_footer(refreshingBlock: @escaping (() -> ())) { 31 | let footer = MJRefreshBackGifFooter.init(refreshingBlock: refreshingBlock) 32 | footer?.stateLabel.textColor = UIColor.mc_lightGray 33 | footer?.stateLabel.font = UIFont.mc15 34 | footer?.setTitle(" 已经到底了 ", for: .noMoreData) 35 | self.mj_footer = footer 36 | } 37 | 38 | /// 停止上拉加载 39 | public func mc_footerEnd() { 40 | 41 | self.mj_footer.endRefreshing() 42 | } 43 | 44 | /// 显示没有更多数据 45 | public func mc_footerNoMoreData() { 46 | self.mj_footer.endRefreshingWithNoMoreData() 47 | } 48 | } 49 | 50 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/PhotoLibrary/MCPhotoLibraryHelper.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCPhotoLibraryHelper.swift 3 | // MCComponentFunction_Example 4 | // 5 | // Created by 满聪 on 2019/7/4. 6 | // Copyright © 2019 CocoaPods. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import Foundation 11 | public class MCPhotoLibraryHelper: NSObject { 12 | 13 | 14 | /// 打开自定义的相册 15 | /// 16 | /// - Parameters: 17 | /// - target: 目标控制器,用来做页面跳转 18 | /// - maxSelectCount: 最大选择图片数量 19 | /// - completeHandler: 回调,图片数组 20 | public static func open(target: UIViewController, maxSelectCount: Int = Int.max, completeHandler:((_ images:[UIImage])->())?) { 21 | 22 | let vc = MCPhotoLibraryListViewController() 23 | vc.maxSelected = maxSelectCount 24 | vc.completeHandler = completeHandler 25 | 26 | let nav = UINavigationController.init(rootViewController: vc) 27 | target.present(nav, animated: true, completion: nil) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/PhotoLibrary/PhotoLibraryDetail/MCPhotoLibraryDetailModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCPhotoLibraryDetailModel.swift 3 | // Alamofire 4 | // 5 | // Created by 满聪 on 2019/7/4. 6 | // 7 | 8 | import UIKit 9 | 10 | import Photos 11 | class MCPhotoLibraryDetailModel: NSObject { 12 | 13 | /// 资源 14 | @objc var asset: PHAsset = PHAsset.init() 15 | 16 | /// 是否选中 17 | @objc var isSelected: Bool = false 18 | 19 | /// 第几个选中的 20 | @objc var selectIndex: Int = 0 21 | 22 | 23 | override func setValue(_ value: Any?, forUndefinedKey key: String) { } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/Route/MCBaseViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCBaseViewController.swift 3 | // Alamofire 4 | // 5 | // Created by MC on 2018/12/6. 6 | // 7 | 8 | import UIKit 9 | 10 | /** 11 | 所有视图控制器的父类 12 | */ 13 | /** 14 | 所有视图控制器的父类 15 | */ 16 | open class MCBaseViewController: UIViewController { 17 | 18 | 19 | /** 20 | * 是否隐藏导航栏上的那条黑线 21 | */ 22 | public var mc_isHiddenNavigationBarLine = false { 23 | didSet{ 24 | navBarHairLine = mc_findLineImageView(under: navigationController?.navigationBar) 25 | } 26 | } 27 | 28 | 29 | 30 | private var navBarHairLine : UIImageView? 31 | 32 | override open func viewWillAppear(_ animated: Bool) { 33 | super.viewWillAppear(animated) 34 | 35 | navBarHairLine?.isHidden = true 36 | } 37 | 38 | override open func viewWillDisappear(_ animated: Bool) { 39 | super.viewWillDisappear(animated) 40 | navBarHairLine?.isHidden = false 41 | } 42 | 43 | override open func viewDidLoad() { 44 | super.viewDidLoad() 45 | 46 | view.backgroundColor = UIColor.white 47 | } 48 | } 49 | 50 | 51 | 52 | extension MCBaseViewController { 53 | /** 54 | * 寻找导航栏下面的黑色细线 55 | */ 56 | public func mc_findLineImageView(under view : UIView?) -> UIImageView? { 57 | 58 | if view == nil { return nil } 59 | if view!.isKind(of: UIImageView.classForCoder()) && view!.bounds.size.height <= 1 { 60 | return view as? UIImageView 61 | } 62 | for subView in view!.subviews { 63 | let imageView : UIImageView? = mc_findLineImageView(under: subView) 64 | if imageView != nil { 65 | return imageView! 66 | } 67 | } 68 | return nil 69 | } 70 | } 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/Route/MCErrorViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCErrorViewController.swift 3 | // MCAPI 4 | // 5 | // Created by MC on 2018/11/26. 6 | // Copyright © 2018 MC. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public class MCErrorViewController: UIViewController { 12 | 13 | var errorView : UIView? = nil 14 | 15 | override public func viewDidLoad() { 16 | super.viewDidLoad() 17 | if errorView != nil { 18 | self.view .addSubview(errorView!) 19 | } 20 | } 21 | 22 | 23 | 24 | /* 25 | // MARK: - Navigation 26 | 27 | // In a storyboard-based application, you will often want to do a little preparation before navigation 28 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 29 | // Get the new view controller using segue.destinationViewController. 30 | // Pass the selected object to the new view controller. 31 | } 32 | */ 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/Route/MCNavigationController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCNavigationController.swift 3 | // WisdomSpace 4 | // 5 | // Created by goulela on 2017/8/29. 6 | // Copyright © 2017年 MC. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public class MCNavigationController: UINavigationController, UIGestureRecognizerDelegate, UINavigationControllerDelegate { 12 | 13 | override public func viewDidLoad() { 14 | super.viewDidLoad() 15 | delegate = self 16 | self.hidesBarsOnTap = false 17 | weak var weakSelf = self 18 | if responds(to: #selector(getter: interactivePopGestureRecognizer)) { 19 | interactivePopGestureRecognizer?.delegate = weakSelf 20 | } 21 | setup() 22 | } 23 | 24 | private func setup() { 25 | navigationBar.isTranslucent = false 26 | } 27 | 28 | override public func pushViewController(_ viewController: UIViewController, animated: Bool) { 29 | super.pushViewController(viewController, animated: animated) 30 | if navigationBar.isHidden { 31 | setNavigationBarHidden(false, animated: false) 32 | } 33 | 34 | if responds(to: #selector(getter: interactivePopGestureRecognizer)) { 35 | interactivePopGestureRecognizer?.isEnabled = false 36 | } 37 | } 38 | 39 | public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) { 40 | if navigationController.responds(to: #selector(getter: interactivePopGestureRecognizer)) { 41 | navigationController.interactivePopGestureRecognizer?.isEnabled = true 42 | } 43 | } 44 | 45 | public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { 46 | if children.count == 1 { 47 | return false 48 | } 49 | return true 50 | } 51 | } 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/Route/MCRoute+Main.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCRoute+Main.swift 3 | // MCAPI 4 | // 5 | // Created by MC on 2018/11/26. 6 | // 7 | 8 | import Foundation 9 | import UIKit 10 | 11 | extension MCRoute { 12 | 13 | public func initRootController(subControllers:[UIViewController]) -> UITabBarController { 14 | let view = UIView(frame: UIScreen.main.bounds) 15 | view.backgroundColor = UIColor.lightGray 16 | configErrorController(view) 17 | tabBar = MCTabBarController(subControllers: subControllers) 18 | configRootController(tabBar!) 19 | return tabBar! 20 | } 21 | 22 | 23 | public static func setupItem(_ title: String, 24 | _ image: UIImage?, 25 | _ selectedImage: UIImage?, 26 | _ titleNormalColor: UIColor, 27 | _ titleSelectClor: UIColor) -> UITabBarItem 28 | { 29 | let item = UITabBarItem(title: title, image: image?.withRenderingMode(.alwaysOriginal), selectedImage: selectedImage?.withRenderingMode(.alwaysOriginal)) 30 | item.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : titleNormalColor], for: .normal) 31 | item.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : titleSelectClor], for: .selected) 32 | return item 33 | } 34 | 35 | } 36 | 37 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/Route/MCTabBarController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCTabBarController.swift 3 | // WisdomSpace 4 | // 5 | // Created by goulela on 2017/8/29. 6 | // Copyright © 2017年 MC. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public class MCTabBarController: UITabBarController,UITabBarControllerDelegate { 12 | 13 | override public func viewDidLoad() { 14 | super.viewDidLoad() 15 | tabBar.barTintColor = UIColor.white 16 | tabBar.isTranslucent = false 17 | } 18 | 19 | init() { 20 | super.init(nibName: nil, bundle: nil) 21 | } 22 | 23 | init(subControllers: [UIViewController]) { 24 | super.init(nibName: nil, bundle: nil) 25 | viewControllers = subControllers 26 | delegate = self 27 | selectedIndex = 0 28 | tabBar.barTintColor = UIColor.white 29 | } 30 | 31 | 32 | required init?(coder aDecoder: NSCoder) { 33 | fatalError("init(coder:) has not been implemented") 34 | } 35 | 36 | public func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { 37 | return true 38 | } 39 | 40 | public func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) { 41 | 42 | } 43 | 44 | override public func didReceiveMemoryWarning() { 45 | super.didReceiveMemoryWarning() 46 | // Dispose of any resources that can be recreated. 47 | } 48 | 49 | } 50 | 51 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/Scan/Route+Scan.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Route+Scan.swift 3 | // Alamofire 4 | // 5 | // Created by MC on 2018/12/26. 6 | // 7 | 8 | import Foundation 9 | 10 | 11 | fileprivate let nameSpace = "MCComponentFunction" 12 | 13 | fileprivate let target_Scan = "Scan" 14 | 15 | 16 | extension MCRoute { 17 | 18 | /** 19 | * 扫一扫页面 20 | */ 21 | public func MCScanViewController(_ params: [String:Any]) -> UIViewController { 22 | let vc = perform(target_Scan, params: params, nameSpace: nameSpace, shouldCacheTarget: false) 23 | guard vc != nil else { 24 | return errorController() 25 | } 26 | 27 | if let vc2 = vc as? MCScanViewController { 28 | return vc2 29 | }else { 30 | return errorController() 31 | } 32 | } 33 | } 34 | 35 | 36 | /** 37 | * 扫一扫页面 38 | */ 39 | class Target_Scan: NSObject,RouteTargetProtocol { 40 | @objc func Action_ViewController(_ params: [String : Any]) -> UIViewController? { 41 | let vc = MCScanViewController(params) 42 | return vc 43 | } 44 | } 45 | 46 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/Toast/MCToastConfig.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCToastConfig.swift 3 | // MCComponentFunction_Example 4 | // 5 | // Created by 满聪 on 2019/7/8. 6 | // Copyright © 2019 CocoaPods. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | public class MCToastConfig: NSObject { 13 | public static let shared = MCToastConfig() 14 | 15 | public var background = Background() 16 | public var icon = Icon() 17 | public var text = Text() 18 | 19 | /// 自动隐藏的时长 20 | public var autoClearTime: CGFloat = 2 21 | 22 | 23 | public struct Background { 24 | /// toast 的背景颜色 25 | public var color: UIColor = UIColor.init(white: 0, alpha: 0.8) 26 | /// toast的size 27 | public var size: CGSize = CGSize.init(width: 150, height: 110) 28 | } 29 | 30 | public struct Icon { 31 | /// toast icon的size 32 | public var size: CGSize = CGSize.init(width: 40, height: 40) 33 | public var successImage: UIImage? 34 | public var failureImage: UIImage? 35 | public var waitImage: UIImage? 36 | public var warningImage: UIImage? 37 | public var otherImage: UIImage? 38 | } 39 | 40 | public struct Text { 41 | public var textColor: UIColor? 42 | public var font: UIFont? 43 | } 44 | } 45 | 46 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/Toast/MCToastHelper.swift: -------------------------------------------------------------------------------- 1 | // 2 | // JKToastHelper.swift 3 | // GMJKExtension 4 | // 5 | // Created by 满聪 on 2019/4/19. 6 | // 7 | 8 | import Foundation 9 | import UIKit 10 | 11 | 12 | extension String { 13 | 14 | func getWidth(font:CGFloat,height:CGFloat) -> CGFloat { 15 | let statusLabelText: NSString = self as NSString 16 | let size = CGSize.init(width: 9999, height: height) 17 | let dic = NSDictionary(object: UIFont.systemFont(ofSize: font), forKey: NSAttributedString.Key.font as NSCopying) 18 | let strSize = statusLabelText.boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: dic as? [NSAttributedString.Key : Any], context: nil).size 19 | return strSize.width 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/MCComponentFunction/Classes/Tool/MCTool.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCTool.swift 3 | // StoreManage 4 | // 5 | // Created by MC on 2018/8/31. 6 | // Copyright © 2018年 MC. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public class MCTool: NSObject { 12 | 13 | } 14 | 15 | 16 | extension MCTool { 17 | /// 获取类名字符串 18 | public static func mc_getClassName(_ obj:Any) -> String { 19 | let mirro = Mirror(reflecting: obj) 20 | let className = String(describing: mirro.subjectType).components(separatedBy: ".").first! 21 | return className 22 | } 23 | } 24 | 25 | 26 | extension MCTool { 27 | 28 | 29 | /// 获取该app的缓存 30 | public static func mc_cacheSize() -> String { 31 | let cachePath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first 32 | let fileArr = FileManager.default.subpaths(atPath: cachePath!) 33 | var size = 0 34 | for file in fileArr! { 35 | let path = cachePath! + "/\(file)" 36 | // 取出文件属性 37 | let floder = try! FileManager.default.attributesOfItem(atPath: path) 38 | // 用元组取出文件大小属性 39 | for (abc, bcd) in floder { 40 | // 累加文件大小 41 | if abc == FileAttributeKey.size { 42 | size += (bcd as AnyObject).integerValue 43 | } 44 | } 45 | } 46 | let mm = size / 1024 / 1024 47 | return String(mm) + "M" 48 | } 49 | 50 | /// 清理该app的缓存 51 | public static func mc_clearCache() { 52 | let cachePath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first 53 | let fileArr = FileManager.default.subpaths(atPath: cachePath!) 54 | // 遍历删除 55 | for file in fileArr! { 56 | let path = cachePath! + "/\(file)" 57 | if FileManager.default.fileExists(atPath: path) { 58 | do { 59 | try FileManager.default.removeItem(atPath: path) 60 | } catch { } 61 | } 62 | } 63 | } 64 | } 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentFunction/README.md: -------------------------------------------------------------------------------- 1 | # iOS_Component_functions 2 | 3 | #### 项目介绍 4 | 项目介绍 5 | 6 | 组件化---小功能集合 7 | 8 | 图片裁切 9 | 倒计时 10 | 自定义选择时间 11 | 地理位置的编码和反编码 12 | 定位功能 13 | 14 | #### 软件架构 15 | 软件架构说明 16 | 17 | 18 | #### 安装教程 19 | 20 | 1. xxxx 21 | 2. xxxx 22 | 3. xxxx 23 | 24 | #### 使用说明 25 | 26 | 1. xxxx 27 | 2. xxxx 28 | 3. xxxx 29 | 30 | #### 参与贡献 31 | 32 | 1. Fork 本项目 33 | 2. 新建 Feat_xxx 分支 34 | 3. 提交代码 35 | 4. 新建 Pull Request 36 | 37 | 38 | #### 码云特技 39 | 40 | 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 41 | 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 42 | 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 43 | 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 44 | 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 45 | 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 562863544@qq.com <13761066392@163.com> 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/EmptyData@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/EmptyData@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/EmptyData@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/EmptyData@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/add@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/add@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/add@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/add@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/arrow@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/arrow@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/arrow@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/notSelected@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/notSelected@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/notSelected@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/notSelected@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/reduce@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/reduce@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/reduce@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/reduce@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/selected@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/selected@2x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/selected@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Assets/View/selected@3x.png -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Classes/Button/MCTopAndBottomTextButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCUpAndDownTextButton.swift 3 | // MCComponentExtension 4 | // 5 | // Created by MC on 2019/1/25. 6 | // 7 | 8 | import Foundation 9 | 10 | import MCComponentExtension 11 | import SnapKit 12 | 13 | public class MCTopAndBottomTextButton: UIButton { 14 | 15 | override public func draw(_ rect: CGRect) { 16 | 17 | self.addSubview(topLabel) 18 | topLabel.snp.remakeConstraints { (make) ->Void in 19 | make.left.right.equalTo(self) 20 | make.bottom.equalTo(self.snp.centerY).offset(-2) 21 | } 22 | 23 | self.addSubview(bottomLabel) 24 | bottomLabel.snp.remakeConstraints { (make) ->Void in 25 | make.left.right.equalTo(self) 26 | make.top.equalTo(self.snp.centerY).offset(3) 27 | } 28 | } 29 | 30 | 31 | public lazy var topLabel: UILabel = { 32 | let label = UILabel() 33 | label.font = UIFont.mc13 34 | label.textColor = UIColor.mc_darkGray 35 | label.text = "Up" 36 | label.textAlignment = .center 37 | return label 38 | }() 39 | 40 | public lazy var bottomLabel: UILabel = { 41 | let label = UILabel() 42 | label.font = UIFont.mc12 43 | label.textColor = UIColor.mc_gray 44 | label.text = "bottom" 45 | label.textAlignment = .center 46 | return label 47 | }() 48 | 49 | } 50 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Classes/TableView/MCTableViewCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCTableViewCell.swift 3 | // MCComponentExtension 4 | // 5 | // Created by MC on 2019/1/15. 6 | // 7 | 8 | import Foundation 9 | 10 | 11 | import UIKit 12 | import SnapKit 13 | import MCComponentExtension 14 | 15 | open class MCTableViewCell: UITableViewCell { 16 | 17 | override public init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { 18 | super.init(style: style, reuseIdentifier: reuseIdentifier) 19 | 20 | self.selectionStyle = UITableViewCell.SelectionStyle.none 21 | self.backgroundColor = UIColor.white 22 | 23 | 24 | self.addSubview(lineView) 25 | lineView.snp.remakeConstraints { (make) ->Void in 26 | make.left.right.bottom.equalTo(self) 27 | make.height.equalTo(1) 28 | } 29 | } 30 | 31 | required public init?(coder aDecoder: NSCoder) { 32 | fatalError("init(coder:) has not been implemented") 33 | } 34 | 35 | public lazy var lineView: UIView = { 36 | let view = UIView() 37 | view.backgroundColor = UIColor.mc_line 38 | return view 39 | }() 40 | } 41 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Classes/Textview/UITextView+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITextView+Extension.swift 3 | // MCComponentExtension 4 | // 5 | // Created by 满聪 on 2019/6/25. 6 | // 7 | 8 | import Foundation 9 | 10 | extension UITextView { 11 | //(链接为空时则表示普通文本) 12 | 13 | /// 添加链接文本 14 | /// 15 | /// - Parameters: 16 | /// - string: 显示的文字内容 17 | /// - withURLString: 链接 为空时则表示普通文本 18 | /// - stringColor: 文字颜色 19 | /// - underlineColor: 下划线的颜色 20 | public func appendLinkString(_ string: String, 21 | withURLString: String = "", 22 | isShowUnderline: Bool = false, 23 | underlineColor: UIColor? = nil) { 24 | //原来的文本内容 25 | let attrString:NSMutableAttributedString = NSMutableAttributedString() 26 | attrString.append(self.attributedText) 27 | 28 | //新增的文本内容(使用默认设置的字体样式) 29 | let attrs = [NSAttributedString.Key.font : self.font!] 30 | let appendString = NSMutableAttributedString(string: string, attributes:attrs) 31 | //判断是否是链接文字 32 | if withURLString != "" { 33 | let range:NSRange = NSMakeRange(0, appendString.length) 34 | appendString.beginEditing() 35 | appendString.addAttribute(NSAttributedString.Key.link, value:withURLString, range:range) 36 | 37 | 38 | if isShowUnderline { 39 | appendString.addAttribute(NSAttributedString.Key.underlineStyle, value:NSUnderlineStyle.single.rawValue, range:range) 40 | 41 | if let color = underlineColor { 42 | appendString.addAttribute(NSAttributedString.Key.underlineColor, value:color, range:range) 43 | } 44 | } 45 | 46 | 47 | appendString.endEditing() 48 | } 49 | //合并新的文本 50 | attrString.append(appendString) 51 | 52 | //设置合并后的文本 53 | self.attributedText = attrString 54 | } 55 | } 56 | 57 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Classes/View/MCInputBarView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCInputBarView.swift 3 | // MCComponentExtension 4 | // 5 | // Created by MC on 2019/1/15. 6 | // 7 | 8 | import Foundation 9 | import UIKit 10 | 11 | public class MCInputBarView: UIView { 12 | 13 | override init(frame: CGRect) { 14 | super.init(frame: frame) 15 | 16 | self.backgroundColor = UIColor.white 17 | 18 | self.addSubview(lineView) 19 | 20 | self.addSubview(leftLabel) 21 | 22 | self.addSubview(rightTextFiled) 23 | } 24 | 25 | override public func layoutSubviews() { 26 | super.layoutSubviews() 27 | 28 | lineView.snp.remakeConstraints { (make) ->Void in 29 | make.left.right.bottom.equalTo(self) 30 | make.height.equalTo(1) 31 | } 32 | 33 | leftLabel.snp.remakeConstraints { (make) ->Void in 34 | make.left.equalTo(0) 35 | make.centerY.equalTo(self) 36 | make.width.equalTo(100) 37 | } 38 | 39 | rightTextFiled.snp.remakeConstraints { (make) ->Void in 40 | make.left.equalTo(leftLabel.snp.right) 41 | make.right.equalTo(0) 42 | make.top.bottom.equalTo(self) 43 | } 44 | } 45 | 46 | required init?(coder aDecoder: NSCoder) { 47 | fatalError("init(coder:) has not been implemented") 48 | } 49 | 50 | public lazy var lineView: UIView = { 51 | let view = UIView() 52 | view.backgroundColor = UIColor.mc_line 53 | return view 54 | }() 55 | 56 | public lazy var leftLabel: UILabel = { 57 | let label = UILabel() 58 | label.font = UIFont.mc14 59 | label.textColor = UIColor.mc_darkGray 60 | return label 61 | }() 62 | 63 | 64 | public lazy var rightTextFiled: UITextField = { 65 | let tf = UITextField() 66 | tf.placeholder = "请填写" 67 | tf.font = UIFont.mc14 68 | tf.textColor = UIColor.mc_gray 69 | tf.textAlignment = .right 70 | return tf 71 | }() 72 | } 73 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/MCComponentPublicUI/Classes/View/MCShowBarView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCShowBarView.swift 3 | // MCComponentExtension 4 | // 5 | // Created by MC on 2019/1/15. 6 | // 7 | 8 | import Foundation 9 | 10 | /** 11 | * 用来做有一个标题和内容的展示 12 | * 。 13 | * 样式 : 14 | * 15 | * leftLabel的内容 rightLabel的内容 16 | * —————————————————————————————————————————————— 17 | */ 18 | public class MCShowBarView: UIView { 19 | 20 | override init(frame: CGRect) { 21 | super.init(frame: frame) 22 | 23 | self.addSubview(leftLabel) 24 | self.addSubview(rightLabel) 25 | self.addSubview(lineView) 26 | } 27 | 28 | override public func layoutSubviews() { 29 | super.layoutSubviews() 30 | 31 | leftLabel.snp.remakeConstraints { (make) ->Void in 32 | make.centerY.equalTo(self) 33 | make.left.equalTo(0) 34 | } 35 | 36 | rightLabel.snp.remakeConstraints { (make) ->Void in 37 | make.centerY.equalTo(self) 38 | make.right.equalTo(0) 39 | } 40 | 41 | lineView.snp.remakeConstraints { (make) ->Void in 42 | make.height.equalTo(1) 43 | make.left.right.bottom.equalTo(0) 44 | } 45 | } 46 | 47 | required init?(coder aDecoder: NSCoder) { 48 | fatalError("init(coder:) has not been implemented") 49 | } 50 | 51 | 52 | public lazy var leftLabel: UILabel = { 53 | let label = UILabel() 54 | label.font = UIFont.mc15 55 | label.text = "xxx" 56 | label.textColor = UIColor.mc_darkGray 57 | return label 58 | }() 59 | 60 | 61 | public lazy var rightLabel: UILabel = { 62 | let label = UILabel() 63 | label.text = "xxx" 64 | label.font = UIFont.mc14 65 | label.textColor = UIColor.mc_gray 66 | return label 67 | }() 68 | 69 | public lazy var lineView: UIView = { 70 | let view = UIView() 71 | view.backgroundColor = UIColor.mc_line 72 | return view 73 | }() 74 | } 75 | -------------------------------------------------------------------------------- /Example/Pods/MCComponentPublicUI/README.md: -------------------------------------------------------------------------------- 1 | # MCComponentPublicUI 2 | 3 | [![CI Status](https://img.shields.io/travis/562863544@qq.com/MCComponentPublicUI.svg?style=flat)](https://travis-ci.org/562863544@qq.com/MCComponentPublicUI) 4 | [![Version](https://img.shields.io/cocoapods/v/MCComponentPublicUI.svg?style=flat)](https://cocoapods.org/pods/MCComponentPublicUI) 5 | [![License](https://img.shields.io/cocoapods/l/MCComponentPublicUI.svg?style=flat)](https://cocoapods.org/pods/MCComponentPublicUI) 6 | [![Platform](https://img.shields.io/cocoapods/p/MCComponentPublicUI.svg?style=flat)](https://cocoapods.org/pods/MCComponentPublicUI) 7 | 8 | ## Example 9 | 10 | To run the example project, clone the repo, and run `pod install` from the Example directory first. 11 | 12 | ## Requirements 13 | 14 | ## Installation 15 | 16 | MCComponentPublicUI is available through [CocoaPods](https://cocoapods.org). To install 17 | it, simply add the following line to your Podfile: 18 | 19 | ```ruby 20 | pod 'MCComponentPublicUI' 21 | ``` 22 | 23 | ## Author 24 | 25 | 562863544@qq.com, 13761066392@163.com 26 | 27 | ## License 28 | 29 | MCComponentPublicUI is available under the MIT license. See the LICENSE file for more info. 30 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshAutoFooter : MJRefreshFooter 12 | /** 是否自动刷新(默认为YES) */ 13 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh; 14 | 15 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 16 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性"); 17 | 18 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 19 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent; 20 | 21 | /** 是否每一次拖拽只发一次请求 */ 22 | @property (assign, nonatomic, getter=isOnlyRefreshPerDrag) BOOL onlyRefreshPerDrag; 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshBackFooter : MJRefreshFooter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshFooter.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 上拉刷新控件 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshFooter : MJRefreshComponent 13 | /** 创建footer */ 14 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建footer */ 16 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 提示没有更多的数据 */ 19 | - (void)endRefreshingWithNoMoreData; 20 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData"); 21 | 22 | /** 重置没有更多的数据(消除没有更多数据的状态) */ 23 | - (void)resetNoMoreData; 24 | 25 | /** 忽略多少scrollView的contentInset的bottom */ 26 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom; 27 | 28 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */ 29 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden MJRefreshDeprecated("已废弃此属性,开发者请自行控制footer的显示和隐藏"); 30 | @end 31 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshHeader.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 下拉刷新控件:负责监控用户下拉的状态 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshHeader : MJRefreshComponent 13 | /** 创建header */ 14 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建header */ 16 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 这个key用来存储上一次下拉刷新成功的时间 */ 19 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey; 20 | /** 上一次下拉刷新成功的时间 */ 21 | @property (strong, nonatomic, readonly) NSDate *lastUpdatedTime; 22 | 23 | /** 忽略多少scrollView的contentInset的top */ 24 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop; 25 | @end 26 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter 12 | /** 菊花的样式 */ 13 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 14 | @end 15 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoNormalFooter.m 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoNormalFooter.h" 10 | 11 | @interface MJRefreshAutoNormalFooter() 12 | @property (weak, nonatomic) UIActivityIndicatorView *loadingView; 13 | @end 14 | 15 | @implementation MJRefreshAutoNormalFooter 16 | #pragma mark - 懒加载子控件 17 | - (UIActivityIndicatorView *)loadingView 18 | { 19 | if (!_loadingView) { 20 | UIActivityIndicatorView *loadingView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:self.activityIndicatorViewStyle]; 21 | loadingView.hidesWhenStopped = YES; 22 | [self addSubview:_loadingView = loadingView]; 23 | } 24 | return _loadingView; 25 | } 26 | 27 | - (void)setActivityIndicatorViewStyle:(UIActivityIndicatorViewStyle)activityIndicatorViewStyle 28 | { 29 | _activityIndicatorViewStyle = activityIndicatorViewStyle; 30 | 31 | self.loadingView = nil; 32 | [self setNeedsLayout]; 33 | } 34 | #pragma mark - 重写父类的方法 35 | - (void)prepare 36 | { 37 | [super prepare]; 38 | 39 | self.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray; 40 | } 41 | 42 | - (void)placeSubviews 43 | { 44 | [super placeSubviews]; 45 | 46 | if (self.loadingView.constraints.count) return; 47 | 48 | // 圈圈 49 | CGFloat loadingCenterX = self.mj_w * 0.5; 50 | if (!self.isRefreshingTitleHidden) { 51 | loadingCenterX -= self.stateLabel.mj_textWith * 0.5 + self.labelLeftInset; 52 | } 53 | CGFloat loadingCenterY = self.mj_h * 0.5; 54 | self.loadingView.center = CGPointMake(loadingCenterX, loadingCenterY); 55 | } 56 | 57 | - (void)setState:(MJRefreshState)state 58 | { 59 | MJRefreshCheckState 60 | 61 | // 根据状态做事情 62 | if (state == MJRefreshStateNoMoreData || state == MJRefreshStateIdle) { 63 | [self.loadingView stopAnimating]; 64 | } else if (state == MJRefreshStateRefreshing) { 65 | [self.loadingView startAnimating]; 66 | } 67 | } 68 | 69 | @end 70 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoFooter.h" 10 | 11 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter 12 | /** 文字距离圈圈、箭头的距离 */ 13 | @property (assign, nonatomic) CGFloat labelLeftInset; 14 | /** 显示刷新状态的label */ 15 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 16 | 17 | /** 设置state状态下的文字 */ 18 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 19 | 20 | /** 隐藏刷新状态的文字 */ 21 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden; 22 | @end 23 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackFooter.h" 10 | 11 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter 12 | /** 文字距离圈圈、箭头的距离 */ 13 | @property (assign, nonatomic) CGFloat labelLeftInset; 14 | /** 显示刷新状态的label */ 15 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 16 | /** 设置state状态下的文字 */ 17 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 18 | 19 | /** 获取state状态下的title */ 20 | - (NSString *)titleForState:(MJRefreshState)state; 21 | @end 22 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshGifHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshGifHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshNormalHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshNormalHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshStateHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshHeader.h" 10 | 11 | @interface MJRefreshStateHeader : MJRefreshHeader 12 | #pragma mark - 刷新时间相关 13 | /** 利用这个block来决定显示的更新时间文字 */ 14 | @property (copy, nonatomic) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime); 15 | /** 显示上一次刷新时间的label */ 16 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel; 17 | 18 | #pragma mark - 状态相关 19 | /** 文字距离圈圈、箭头的距离 */ 20 | @property (assign, nonatomic) CGFloat labelLeftInset; 21 | /** 显示刷新状态的label */ 22 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 23 | /** 设置state状态下的文字 */ 24 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 25 | @end 26 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | "MJRefreshHeaderIdleText" = "Pull down to refresh"; 2 | "MJRefreshHeaderPullingText" = "Release to refresh"; 3 | "MJRefreshHeaderRefreshingText" = "Loading..."; 4 | 5 | "MJRefreshAutoFooterIdleText" = "Tap or pull up to load more"; 6 | "MJRefreshAutoFooterRefreshingText" = "Loading..."; 7 | "MJRefreshAutoFooterNoMoreDataText" = "No more data"; 8 | 9 | "MJRefreshBackFooterIdleText" = "Pull up to load more"; 10 | "MJRefreshBackFooterPullingText" = "Release to load more."; 11 | "MJRefreshBackFooterRefreshingText" = "Loading..."; 12 | "MJRefreshBackFooterNoMoreDataText" = "No more data"; 13 | 14 | "MJRefreshHeaderLastTimeText" = "Last updated: "; 15 | "MJRefreshHeaderDateTodayText" = "Today"; 16 | "MJRefreshHeaderNoneLastDateText" = "No record"; 17 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hant.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | "MJRefreshHeaderIdleText" = "下拉可以刷新"; 2 | "MJRefreshHeaderPullingText" = "鬆開立即刷新"; 3 | "MJRefreshHeaderRefreshingText" = "正在刷新數據中..."; 4 | 5 | "MJRefreshAutoFooterIdleText" = "點擊或上拉加載更多"; 6 | "MJRefreshAutoFooterRefreshingText" = "正在加載更多的數據..."; 7 | "MJRefreshAutoFooterNoMoreDataText" = "已經全部加載完畢"; 8 | 9 | "MJRefreshBackFooterIdleText" = "上拉可以加載更多"; 10 | "MJRefreshBackFooterPullingText" = "鬆開立即加載更多"; 11 | "MJRefreshBackFooterRefreshingText" = "正在加載更多的數據..."; 12 | "MJRefreshBackFooterNoMoreDataText" = "已經全部加載完畢"; 13 | 14 | "MJRefreshHeaderLastTimeText" = "最後更新:"; 15 | "MJRefreshHeaderDateTodayText" = "今天"; 16 | "MJRefreshHeaderNoneLastDateText" = "無記錄"; 17 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | 4 | #import "UIScrollView+MJRefresh.h" 5 | #import "UIScrollView+MJExtension.h" 6 | #import "UIView+MJExtension.h" 7 | 8 | #import "MJRefreshNormalHeader.h" 9 | #import "MJRefreshGifHeader.h" 10 | 11 | #import "MJRefreshBackNormalFooter.h" 12 | #import "MJRefreshBackGifFooter.h" 13 | #import "MJRefreshAutoNormalFooter.h" 14 | #import "MJRefreshAutoGifFooter.h" -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/MJRefreshConst.m: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | #import 4 | 5 | const CGFloat MJRefreshLabelLeftInset = 25; 6 | const CGFloat MJRefreshHeaderHeight = 54.0; 7 | const CGFloat MJRefreshFooterHeight = 44.0; 8 | const CGFloat MJRefreshFastAnimationDuration = 0.25; 9 | const CGFloat MJRefreshSlowAnimationDuration = 0.4; 10 | 11 | NSString *const MJRefreshKeyPathContentOffset = @"contentOffset"; 12 | NSString *const MJRefreshKeyPathContentInset = @"contentInset"; 13 | NSString *const MJRefreshKeyPathContentSize = @"contentSize"; 14 | NSString *const MJRefreshKeyPathPanState = @"state"; 15 | 16 | NSString *const MJRefreshHeaderLastUpdatedTimeKey = @"MJRefreshHeaderLastUpdatedTimeKey"; 17 | 18 | NSString *const MJRefreshHeaderIdleText = @"MJRefreshHeaderIdleText"; 19 | NSString *const MJRefreshHeaderPullingText = @"MJRefreshHeaderPullingText"; 20 | NSString *const MJRefreshHeaderRefreshingText = @"MJRefreshHeaderRefreshingText"; 21 | 22 | NSString *const MJRefreshAutoFooterIdleText = @"MJRefreshAutoFooterIdleText"; 23 | NSString *const MJRefreshAutoFooterRefreshingText = @"MJRefreshAutoFooterRefreshingText"; 24 | NSString *const MJRefreshAutoFooterNoMoreDataText = @"MJRefreshAutoFooterNoMoreDataText"; 25 | 26 | NSString *const MJRefreshBackFooterIdleText = @"MJRefreshBackFooterIdleText"; 27 | NSString *const MJRefreshBackFooterPullingText = @"MJRefreshBackFooterPullingText"; 28 | NSString *const MJRefreshBackFooterRefreshingText = @"MJRefreshBackFooterRefreshingText"; 29 | NSString *const MJRefreshBackFooterNoMoreDataText = @"MJRefreshBackFooterNoMoreDataText"; 30 | 31 | NSString *const MJRefreshHeaderLastTimeText = @"MJRefreshHeaderLastTimeText"; 32 | NSString *const MJRefreshHeaderDateTodayText = @"MJRefreshHeaderDateTodayText"; 33 | NSString *const MJRefreshHeaderNoneLastDateText = @"MJRefreshHeaderNoneLastDateText"; -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+MJRefresh.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 16/6/13. 6 | // Copyright © 2016年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSBundle (MJRefresh) 12 | + (instancetype)mj_refreshBundle; 13 | + (UIImage *)mj_arrowImage; 14 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value; 15 | + (NSString *)mj_localizedStringForKey:(NSString *)key; 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+MJRefresh.m 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 16/6/13. 6 | // Copyright © 2016年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "NSBundle+MJRefresh.h" 10 | #import "MJRefreshComponent.h" 11 | 12 | @implementation NSBundle (MJRefresh) 13 | + (instancetype)mj_refreshBundle 14 | { 15 | static NSBundle *refreshBundle = nil; 16 | if (refreshBundle == nil) { 17 | // 这里不使用mainBundle是为了适配pod 1.x和0.x 18 | refreshBundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[MJRefreshComponent class]] pathForResource:@"MJRefresh" ofType:@"bundle"]]; 19 | } 20 | return refreshBundle; 21 | } 22 | 23 | + (UIImage *)mj_arrowImage 24 | { 25 | static UIImage *arrowImage = nil; 26 | if (arrowImage == nil) { 27 | arrowImage = [[UIImage imageWithContentsOfFile:[[self mj_refreshBundle] pathForResource:@"arrow@2x" ofType:@"png"]] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 28 | } 29 | return arrowImage; 30 | } 31 | 32 | + (NSString *)mj_localizedStringForKey:(NSString *)key 33 | { 34 | return [self mj_localizedStringForKey:key value:nil]; 35 | } 36 | 37 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value 38 | { 39 | static NSBundle *bundle = nil; 40 | if (bundle == nil) { 41 | // (iOS获取的语言字符串比较不稳定)目前框架只处理en、zh-Hans、zh-Hant三种情况,其他按照系统默认处理 42 | NSString *language = [NSLocale preferredLanguages].firstObject; 43 | if ([language hasPrefix:@"en"]) { 44 | language = @"en"; 45 | } else if ([language hasPrefix:@"zh"]) { 46 | if ([language rangeOfString:@"Hans"].location != NSNotFound) { 47 | language = @"zh-Hans"; // 简体中文 48 | } else { // zh-Hant\zh-HK\zh-TW 49 | language = @"zh-Hant"; // 繁體中文 50 | } 51 | } else { 52 | language = @"en"; 53 | } 54 | 55 | // 从MJRefresh.bundle中查找资源 56 | bundle = [NSBundle bundleWithPath:[[NSBundle mj_refreshBundle] pathForResource:language ofType:@"lproj"]]; 57 | } 58 | value = [bundle localizedStringForKey:key value:value table:nil]; 59 | return [[NSBundle mainBundle] localizedStringForKey:key value:value table:nil]; 60 | } 61 | @end 62 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIScrollView (MJExtension) 13 | @property (readonly, nonatomic) UIEdgeInsets mj_inset; 14 | 15 | @property (assign, nonatomic) CGFloat mj_insetT; 16 | @property (assign, nonatomic) CGFloat mj_insetB; 17 | @property (assign, nonatomic) CGFloat mj_insetL; 18 | @property (assign, nonatomic) CGFloat mj_insetR; 19 | 20 | @property (assign, nonatomic) CGFloat mj_offsetX; 21 | @property (assign, nonatomic) CGFloat mj_offsetY; 22 | 23 | @property (assign, nonatomic) CGFloat mj_contentW; 24 | @property (assign, nonatomic) CGFloat mj_contentH; 25 | @end 26 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+MJRefresh.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 给ScrollView增加下拉刷新、上拉刷新的功能 9 | 10 | #import 11 | #import "MJRefreshConst.h" 12 | 13 | @class MJRefreshHeader, MJRefreshFooter; 14 | 15 | @interface UIScrollView (MJRefresh) 16 | /** 下拉刷新控件 */ 17 | @property (strong, nonatomic) MJRefreshHeader *mj_header; 18 | @property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header"); 19 | /** 上拉刷新控件 */ 20 | @property (strong, nonatomic) MJRefreshFooter *mj_footer; 21 | @property (strong, nonatomic) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer"); 22 | 23 | #pragma mark - other 24 | - (NSInteger)mj_totalDataCount; 25 | //@property (copy, nonatomic) void (^mj_reloadDataBlock)(NSInteger totalDataCount); 26 | @end 27 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIView (MJExtension) 13 | @property (assign, nonatomic) CGFloat mj_x; 14 | @property (assign, nonatomic) CGFloat mj_y; 15 | @property (assign, nonatomic) CGFloat mj_w; 16 | @property (assign, nonatomic) CGFloat mj_h; 17 | @property (assign, nonatomic) CGSize mj_size; 18 | @property (assign, nonatomic) CGPoint mj_origin; 19 | @end 20 | -------------------------------------------------------------------------------- /Example/Pods/MJRefresh/MJRefresh/UIView+MJExtension.m: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIView+Extension.m 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import "UIView+MJExtension.h" 11 | 12 | @implementation UIView (MJExtension) 13 | - (void)setMj_x:(CGFloat)mj_x 14 | { 15 | CGRect frame = self.frame; 16 | frame.origin.x = mj_x; 17 | self.frame = frame; 18 | } 19 | 20 | - (CGFloat)mj_x 21 | { 22 | return self.frame.origin.x; 23 | } 24 | 25 | - (void)setMj_y:(CGFloat)mj_y 26 | { 27 | CGRect frame = self.frame; 28 | frame.origin.y = mj_y; 29 | self.frame = frame; 30 | } 31 | 32 | - (CGFloat)mj_y 33 | { 34 | return self.frame.origin.y; 35 | } 36 | 37 | - (void)setMj_w:(CGFloat)mj_w 38 | { 39 | CGRect frame = self.frame; 40 | frame.size.width = mj_w; 41 | self.frame = frame; 42 | } 43 | 44 | - (CGFloat)mj_w 45 | { 46 | return self.frame.size.width; 47 | } 48 | 49 | - (void)setMj_h:(CGFloat)mj_h 50 | { 51 | CGRect frame = self.frame; 52 | frame.size.height = mj_h; 53 | self.frame = frame; 54 | } 55 | 56 | - (CGFloat)mj_h 57 | { 58 | return self.frame.size.height; 59 | } 60 | 61 | - (void)setMj_size:(CGSize)mj_size 62 | { 63 | CGRect frame = self.frame; 64 | frame.size = mj_size; 65 | self.frame = frame; 66 | } 67 | 68 | - (CGSize)mj_size 69 | { 70 | return self.frame.size; 71 | } 72 | 73 | - (void)setMj_origin:(CGPoint)mj_origin 74 | { 75 | CGRect frame = self.frame; 76 | frame.origin = mj_origin; 77 | self.frame = frame; 78 | } 79 | 80 | - (CGPoint)mj_origin 81 | { 82 | return self.frame.origin; 83 | } 84 | @end 85 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.xcworkspace/xcuserdata/mancong.xcuserdatad/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildLocationStyle 6 | UseTargetSettings 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/xcuserdata/MC.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | FLAnimatedImage.xcscheme 8 | 9 | isShown 10 | 11 | 12 | MCPageViewController.xcscheme 13 | 14 | isShown 15 | 16 | 17 | Pods-MCPageViewController_Example.xcscheme 18 | 19 | isShown 20 | 21 | 22 | Pods-MCPageViewController_Tests.xcscheme 23 | 24 | isShown 25 | 26 | 27 | SDWebImage.xcscheme 28 | 29 | isShown 30 | 31 | 32 | 33 | SuppressBuildableAutocreation 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/xcuserdata/mancong.xcuserdatad/xcschemes/MCComponentFunction-MCScanBundle.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 50 | 51 | 53 | 54 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/xcuserdata/mancong.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Alamofire.xcscheme 8 | 9 | isShown 10 | 11 | 12 | Kingfisher.xcscheme 13 | 14 | isShown 15 | 16 | 17 | MCComponentExtension-MCComponentExtensionBundle.xcscheme 18 | 19 | isShown 20 | 21 | 22 | MCComponentExtension.xcscheme 23 | 24 | isShown 25 | 26 | 27 | MCComponentFunction-MCPhotoLibraryBundle.xcscheme 28 | 29 | isShown 30 | 31 | 32 | MCComponentFunction-MCScanBundle.xcscheme 33 | 34 | isShown 35 | 36 | 37 | MCComponentFunction-MCToastBundle.xcscheme 38 | 39 | isShown 40 | 41 | 42 | MCComponentFunction.xcscheme 43 | 44 | isShown 45 | 46 | 47 | MCComponentPublicUI-MCComponentPublicUIViewBundle.xcscheme 48 | 49 | isShown 50 | 51 | 52 | MCComponentPublicUI.xcscheme 53 | 54 | isShown 55 | 56 | 57 | MCPageViewController.xcscheme 58 | 59 | isShown 60 | 61 | 62 | MJRefresh.xcscheme 63 | 64 | isShown 65 | 66 | 67 | Pods-MCPageViewController_Example.xcscheme 68 | 69 | isShown 70 | 71 | 72 | Pods-MCPageViewController_Tests.xcscheme 73 | 74 | isShown 75 | 76 | 77 | SnapKit.xcscheme 78 | 79 | isShown 80 | 81 | 82 | 83 | SuppressBuildableAutocreation 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /Example/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 | -------------------------------------------------------------------------------- /Example/Pods/SnapKit/Source/ConstraintConfig.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 | public typealias ConstraintInterfaceLayoutDirection = UIUserInterfaceLayoutDirection 27 | #else 28 | import AppKit 29 | public typealias ConstraintInterfaceLayoutDirection = NSUserInterfaceLayoutDirection 30 | #endif 31 | 32 | 33 | public struct ConstraintConfig { 34 | 35 | public static var interfaceLayoutDirection: ConstraintInterfaceLayoutDirection = .leftToRight 36 | 37 | } 38 | -------------------------------------------------------------------------------- /Example/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 | -------------------------------------------------------------------------------- /Example/Pods/SnapKit/Source/ConstraintItem.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 | public final class ConstraintItem { 32 | 33 | internal weak var target: AnyObject? 34 | internal let attributes: ConstraintAttributes 35 | 36 | internal init(target: AnyObject?, attributes: ConstraintAttributes) { 37 | self.target = target 38 | self.attributes = attributes 39 | } 40 | 41 | internal var layoutConstraintItem: LayoutConstraintItem? { 42 | return self.target as? LayoutConstraintItem 43 | } 44 | 45 | } 46 | 47 | public func ==(lhs: ConstraintItem, rhs: ConstraintItem) -> Bool { 48 | // pointer equality 49 | guard lhs !== rhs else { 50 | return true 51 | } 52 | 53 | // must both have valid targets and identical attributes 54 | guard let target1 = lhs.target, 55 | let target2 = rhs.target, 56 | target1 === target2 && lhs.attributes == rhs.attributes else { 57 | return false 58 | } 59 | 60 | return true 61 | } 62 | -------------------------------------------------------------------------------- /Example/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 | public var snp: ConstraintLayoutGuideDSL { 33 | return ConstraintLayoutGuideDSL(guide: self) 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Example/Pods/SnapKit/Source/ConstraintLayoutGuide.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 9.0, *) 33 | public typealias ConstraintLayoutGuide = UILayoutGuide 34 | #else 35 | @available(OSX 10.11, *) 36 | public typealias ConstraintLayoutGuide = NSLayoutGuide 37 | #endif 38 | -------------------------------------------------------------------------------- /Example/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 | -------------------------------------------------------------------------------- /Example/Pods/SnapKit/Source/ConstraintLayoutSupportDSL.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 | @available(iOS 8.0, *) 32 | public struct ConstraintLayoutSupportDSL: ConstraintDSL { 33 | 34 | public var target: AnyObject? { 35 | return self.support 36 | } 37 | 38 | internal let support: ConstraintLayoutSupport 39 | 40 | internal init(support: ConstraintLayoutSupport) { 41 | self.support = support 42 | 43 | } 44 | 45 | public var top: ConstraintItem { 46 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.top) 47 | } 48 | 49 | public var bottom: ConstraintItem { 50 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottom) 51 | } 52 | 53 | public var height: ConstraintItem { 54 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.height) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Example/Pods/SnapKit/Source/ConstraintMakerFinalizable.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 | public class ConstraintMakerFinalizable { 32 | 33 | internal let description: ConstraintDescription 34 | 35 | internal init(_ description: ConstraintDescription) { 36 | self.description = description 37 | } 38 | 39 | @discardableResult 40 | public func labeled(_ label: String) -> ConstraintMakerFinalizable { 41 | self.description.label = label 42 | return self 43 | } 44 | 45 | public var constraint: Constraint { 46 | return self.description.constraint! 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /Example/Pods/SnapKit/Source/ConstraintRelatableTarget.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 | public protocol ConstraintRelatableTarget { 32 | } 33 | 34 | extension Int: ConstraintRelatableTarget { 35 | } 36 | 37 | extension UInt: ConstraintRelatableTarget { 38 | } 39 | 40 | extension Float: ConstraintRelatableTarget { 41 | } 42 | 43 | extension Double: ConstraintRelatableTarget { 44 | } 45 | 46 | extension CGFloat: ConstraintRelatableTarget { 47 | } 48 | 49 | extension CGSize: ConstraintRelatableTarget { 50 | } 51 | 52 | extension CGPoint: ConstraintRelatableTarget { 53 | } 54 | 55 | extension ConstraintInsets: ConstraintRelatableTarget { 56 | } 57 | 58 | extension ConstraintItem: ConstraintRelatableTarget { 59 | } 60 | 61 | extension ConstraintView: ConstraintRelatableTarget { 62 | } 63 | 64 | @available(iOS 9.0, OSX 10.11, *) 65 | extension ConstraintLayoutGuide: ConstraintRelatableTarget { 66 | } 67 | -------------------------------------------------------------------------------- /Example/Pods/SnapKit/Source/ConstraintRelation.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 | internal enum ConstraintRelation : Int { 32 | case equal = 1 33 | case lessThanOrEqual 34 | case greaterThanOrEqual 35 | 36 | internal var layoutRelation: LayoutRelation { 37 | get { 38 | switch(self) { 39 | case .equal: 40 | return .equal 41 | case .lessThanOrEqual: 42 | return .lessThanOrEqual 43 | case .greaterThanOrEqual: 44 | return .greaterThanOrEqual 45 | } 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Example/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 | -------------------------------------------------------------------------------- /Example/Pods/SnapKit/Source/LayoutConstraint.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 | public class LayoutConstraint : NSLayoutConstraint { 32 | 33 | public var label: String? { 34 | get { 35 | return self.identifier 36 | } 37 | set { 38 | self.identifier = newValue 39 | } 40 | } 41 | 42 | internal weak var constraint: Constraint? = nil 43 | 44 | } 45 | 46 | internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool { 47 | guard lhs.firstItem === rhs.firstItem && 48 | lhs.secondItem === rhs.secondItem && 49 | lhs.firstAttribute == rhs.firstAttribute && 50 | lhs.secondAttribute == rhs.secondAttribute && 51 | lhs.relation == rhs.relation && 52 | lhs.priority == rhs.priority && 53 | lhs.multiplier == rhs.multiplier else { 54 | return false 55 | } 56 | return true 57 | } 58 | -------------------------------------------------------------------------------- /Example/Pods/SnapKit/Source/Typealiases.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 | import Foundation 25 | 26 | #if os(iOS) || os(tvOS) 27 | import UIKit 28 | #if swift(>=4.2) 29 | typealias LayoutRelation = NSLayoutConstraint.Relation 30 | typealias LayoutAttribute = NSLayoutConstraint.Attribute 31 | #else 32 | typealias LayoutRelation = NSLayoutRelation 33 | typealias LayoutAttribute = NSLayoutAttribute 34 | #endif 35 | typealias LayoutPriority = UILayoutPriority 36 | #else 37 | import AppKit 38 | typealias LayoutRelation = NSLayoutConstraint.Relation 39 | typealias LayoutAttribute = NSLayoutConstraint.Attribute 40 | typealias LayoutPriority = NSLayoutConstraint.Priority 41 | #endif 42 | 43 | -------------------------------------------------------------------------------- /Example/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 | public var snp: ConstraintLayoutSupportDSL { 33 | return ConstraintLayoutSupportDSL(support: self) 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Alamofire/Alamofire-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.8.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Alamofire/Alamofire-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Alamofire : NSObject 3 | @end 4 | @implementation PodsDummy_Alamofire 5 | @end 6 | -------------------------------------------------------------------------------- /Example/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 | -------------------------------------------------------------------------------- /Example/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 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Alamofire/Alamofire.modulemap: -------------------------------------------------------------------------------- 1 | framework module Alamofire { 2 | umbrella header "Alamofire-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Alamofire/Alamofire.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Kingfisher/Kingfisher-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.10.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Kingfisher/Kingfisher-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Kingfisher : NSObject 3 | @end 4 | @implementation PodsDummy_Kingfisher 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Kingfisher/Kingfisher-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Kingfisher/Kingfisher-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "Kingfisher.h" 14 | 15 | FOUNDATION_EXPORT double KingfisherVersionNumber; 16 | FOUNDATION_EXPORT const unsigned char KingfisherVersionString[]; 17 | 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Kingfisher/Kingfisher.modulemap: -------------------------------------------------------------------------------- 1 | framework module Kingfisher { 2 | umbrella header "Kingfisher-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Kingfisher/Kingfisher.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_LDFLAGS = $(inherited) -framework "CFNetwork" 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Kingfisher 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentExtension/MCComponentExtension-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.8.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentExtension/MCComponentExtension-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MCComponentExtension : NSObject 3 | @end 4 | @implementation PodsDummy_MCComponentExtension 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentExtension/MCComponentExtension-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentExtension/MCComponentExtension-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 MCComponentExtensionVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char MCComponentExtensionVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentExtension/MCComponentExtension.modulemap: -------------------------------------------------------------------------------- 1 | framework module MCComponentExtension { 2 | umbrella header "MCComponentExtension-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentExtension/MCComponentExtension.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MCComponentExtension 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MCComponentExtension 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentExtension/ResourceBundle-MCComponentExtensionBundle-MCComponentExtension-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 0.8.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentFunction/MCComponentFunction-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.8.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentFunction/MCComponentFunction-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MCComponentFunction : NSObject 3 | @end 4 | @implementation PodsDummy_MCComponentFunction 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentFunction/MCComponentFunction-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentFunction/MCComponentFunction-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 MCComponentFunctionVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char MCComponentFunctionVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentFunction/MCComponentFunction.modulemap: -------------------------------------------------------------------------------- 1 | framework module MCComponentFunction { 2 | umbrella header "MCComponentFunction-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentFunction/MCComponentFunction.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MCComponentFunction 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MCComponentFunction 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentFunction/ResourceBundle-MCClipImageBundle-MCComponentFunction-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 0.6.8 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentFunction/ResourceBundle-MCPhotoLibraryBundle-MCComponentFunction-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 0.8.2 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentFunction/ResourceBundle-MCScanBundle-MCComponentFunction-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 0.8.2 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentFunction/ResourceBundle-MCToastBundle-MCComponentFunction-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 0.8.2 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentPublicUI/MCComponentPublicUI-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.8.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentPublicUI/MCComponentPublicUI-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MCComponentPublicUI : NSObject 3 | @end 4 | @implementation PodsDummy_MCComponentPublicUI 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentPublicUI/MCComponentPublicUI-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentPublicUI/MCComponentPublicUI-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 MCComponentPublicUIVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char MCComponentPublicUIVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentPublicUI/MCComponentPublicUI.modulemap: -------------------------------------------------------------------------------- 1 | framework module MCComponentPublicUI { 2 | umbrella header "MCComponentPublicUI-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentPublicUI/MCComponentPublicUI.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MCComponentPublicUI 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentExtension" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MCComponentPublicUI 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCComponentPublicUI/ResourceBundle-MCComponentPublicUIViewBundle-MCComponentPublicUI-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 0.8.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCPageViewController/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCPageViewController/MCPageViewController-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 5.4.3 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCPageViewController/MCPageViewController-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MCPageViewController : NSObject 3 | @end 4 | @implementation PodsDummy_MCPageViewController 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCPageViewController/MCPageViewController-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCPageViewController/MCPageViewController-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 MCPageViewControllerVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char MCPageViewControllerVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCPageViewController/MCPageViewController.modulemap: -------------------------------------------------------------------------------- 1 | framework module MCPageViewController { 2 | umbrella header "MCPageViewController-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MCPageViewController/MCPageViewController.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MCPageViewController 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/MJRefresh-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.16 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MJRefresh : NSObject 3 | @end 4 | @implementation PodsDummy_MJRefresh 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/MJRefresh-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/MJRefresh-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "MJRefreshAutoFooter.h" 14 | #import "MJRefreshBackFooter.h" 15 | #import "MJRefreshComponent.h" 16 | #import "MJRefreshFooter.h" 17 | #import "MJRefreshHeader.h" 18 | #import "MJRefreshAutoGifFooter.h" 19 | #import "MJRefreshAutoNormalFooter.h" 20 | #import "MJRefreshAutoStateFooter.h" 21 | #import "MJRefreshBackGifFooter.h" 22 | #import "MJRefreshBackNormalFooter.h" 23 | #import "MJRefreshBackStateFooter.h" 24 | #import "MJRefreshGifHeader.h" 25 | #import "MJRefreshNormalHeader.h" 26 | #import "MJRefreshStateHeader.h" 27 | #import "MJRefresh.h" 28 | #import "MJRefreshConst.h" 29 | #import "NSBundle+MJRefresh.h" 30 | #import "UIScrollView+MJExtension.h" 31 | #import "UIScrollView+MJRefresh.h" 32 | #import "UIView+MJExtension.h" 33 | 34 | FOUNDATION_EXPORT double MJRefreshVersionNumber; 35 | FOUNDATION_EXPORT const unsigned char MJRefreshVersionString[]; 36 | 37 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/MJRefresh.modulemap: -------------------------------------------------------------------------------- 1 | framework module MJRefresh { 2 | umbrella header "MJRefresh-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | PODS_BUILD_DIR = ${BUILD_DIR} 4 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 5 | PODS_ROOT = ${SRCROOT} 6 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh 7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 8 | SKIP_INSTALL = YES 9 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Example/Pods-MCPageViewController_Example-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Example/Pods-MCPageViewController_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_MCPageViewController_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_MCPageViewController_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Example/Pods-MCPageViewController_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_MCPageViewController_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_MCPageViewController_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Example/Pods-MCPageViewController_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentFunction" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentPublicUI" "${PODS_CONFIGURATION_BUILD_DIR}/MCPageViewController" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentExtension/MCComponentExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentFunction/MCComponentFunction.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentPublicUI/MCComponentPublicUI.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCPageViewController/MCPageViewController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CFNetwork" -framework "Kingfisher" -framework "MCComponentExtension" -framework "MCComponentFunction" -framework "MCComponentPublicUI" -framework "MCPageViewController" -framework "MJRefresh" -framework "SnapKit" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Example/Pods-MCPageViewController_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_MCPageViewController_Example { 2 | umbrella header "Pods-MCPageViewController_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Example/Pods-MCPageViewController_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentFunction" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentPublicUI" "${PODS_CONFIGURATION_BUILD_DIR}/MCPageViewController" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentExtension/MCComponentExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentFunction/MCComponentFunction.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentPublicUI/MCComponentPublicUI.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCPageViewController/MCPageViewController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CFNetwork" -framework "Kingfisher" -framework "MCComponentExtension" -framework "MCComponentFunction" -framework "MCComponentPublicUI" -framework "MCPageViewController" -framework "MJRefresh" -framework "SnapKit" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Tests/Pods-MCPageViewController_Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Tests/Pods-MCPageViewController_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Tests/Pods-MCPageViewController_Tests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Tests/Pods-MCPageViewController_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_MCPageViewController_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_MCPageViewController_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Tests/Pods-MCPageViewController_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_MCPageViewController_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_MCPageViewController_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Tests/Pods-MCPageViewController_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentFunction" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentPublicUI" "${PODS_CONFIGURATION_BUILD_DIR}/MCPageViewController" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentExtension/MCComponentExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentFunction/MCComponentFunction.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentPublicUI/MCComponentPublicUI.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCPageViewController/MCPageViewController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CFNetwork" -framework "Kingfisher" -framework "MCComponentExtension" -framework "MCComponentFunction" -framework "MCComponentPublicUI" -framework "MCPageViewController" -framework "MJRefresh" -framework "SnapKit" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Tests/Pods-MCPageViewController_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_MCPageViewController_Tests { 2 | umbrella header "Pods-MCPageViewController_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MCPageViewController_Tests/Pods-MCPageViewController_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentFunction" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentPublicUI" "${PODS_CONFIGURATION_BUILD_DIR}/MCPageViewController" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentExtension/MCComponentExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentFunction/MCComponentFunction.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCComponentPublicUI/MCComponentPublicUI.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MCPageViewController/MCPageViewController.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CFNetwork" -framework "Kingfisher" -framework "MCComponentExtension" -framework "MCComponentFunction" -framework "MCComponentPublicUI" -framework "MCPageViewController" -framework "MJRefresh" -framework "SnapKit" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SnapKit/SnapKit-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.2.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SnapKit/SnapKit-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SnapKit : NSObject 3 | @end 4 | @implementation PodsDummy_SnapKit 5 | @end 6 | -------------------------------------------------------------------------------- /Example/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 | -------------------------------------------------------------------------------- /Example/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 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SnapKit/SnapKit.modulemap: -------------------------------------------------------------------------------- 1 | framework module SnapKit { 2 | umbrella header "SnapKit-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SnapKit/SnapKit.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Example/Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Tests/Tests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | //import MCPageViewController 3 | 4 | class Tests: XCTestCase { 5 | 6 | override func setUp() { 7 | super.setUp() 8 | // Put setup code here. This method is called before the invocation of each test method in the class. 9 | } 10 | 11 | override func tearDown() { 12 | // Put teardown code here. This method is called after the invocation of each test method in the class. 13 | super.tearDown() 14 | } 15 | 16 | func testExample() { 17 | // This is an example of a functional test case. 18 | XCTAssert(true, "Pass") 19 | } 20 | 21 | func testPerformanceExample() { 22 | // This is an example of a performance test case. 23 | self.measure() { 24 | // Put the code you want to measure the time of here. 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 562863544@qq.com <13761066392@163.com> 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /MCPageViewController.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint MCPageViewController.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | 10 | Pod::Spec.new do |s| 11 | s.name = "MCPageViewController" 12 | s.version = "5.4.3" 13 | s.summary = "分页控制器: 支持分类栏在navigationBar上,滑动置顶等功能。" 14 | s.homepage = "https://github.com/mancongiOS/MCPageViewController" 15 | s.license = "MIT" 16 | s.author = { "MC" => "562863544@qq.com" } 17 | s.platform = :ios, "7.0" 18 | s.source = { :git => "https://github.com/mancongiOS/MCPageViewController.git", :tag => "#{s.version}" } 19 | s.source_files = 'MCPageViewController/Classes/**/*' 20 | s.swift_version = '5.0' 21 | s.ios.deployment_target = '8.0' 22 | 23 | s.dependency 'SnapKit' 24 | 25 | 26 | end 27 | -------------------------------------------------------------------------------- /MCPageViewController/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/MCPageViewController/.DS_Store -------------------------------------------------------------------------------- /MCPageViewController/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/MCPageViewController/Assets/.gitkeep -------------------------------------------------------------------------------- /MCPageViewController/Classes/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/MCPageViewController/Classes/.DS_Store -------------------------------------------------------------------------------- /MCPageViewController/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/MCPageViewController/Classes/.gitkeep -------------------------------------------------------------------------------- /MCPageViewController/Classes/HangCategory/MCBaseTableView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCBaseTableView.swift 3 | // MCPageViewController_Example 4 | // 5 | // Created by 满聪 on 2019/4/26. 6 | // Copyright © 2019 CocoaPods. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | 12 | 13 | 14 | open class MCBaseTableView: UITableView, UIGestureRecognizerDelegate { 15 | 16 | public var barHeight: CGFloat = 0 17 | 18 | public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 19 | 20 | 21 | let currentPoint: CGPoint = gestureRecognizer.location(in: self) 22 | 23 | 24 | let height = (self.tableFooterView?.frame.size.height ?? 0) - barHeight 25 | 26 | let segmentViewContentScrollViewHeight: CGFloat = height > 0 ? height : barHeight 27 | 28 | let contentRect = CGRect.init(x: 0, y: self.contentSize.height - segmentViewContentScrollViewHeight, width: UIDevice.width, height: segmentViewContentScrollViewHeight) 29 | 30 | if contentRect.contains(currentPoint) { 31 | return true 32 | } 33 | return false 34 | } 35 | } 36 | 37 | 38 | 39 | extension UIDevice { 40 | 41 | 42 | ///屏幕宽 43 | fileprivate static let width: CGFloat = UIScreen.main.bounds.size.width 44 | 45 | ///屏幕高 46 | fileprivate static let height: CGFloat = UIScreen.main.bounds.size.height 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /MCPageViewController/Classes/HangCategory/MCPageChildViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCPageChildViewController.swift 3 | // FLAnimatedImage 4 | // 5 | // Created by 满聪 on 2019/4/26. 6 | // 7 | 8 | import UIKit 9 | 10 | public protocol MCPageChildViewControllerDelegate: NSObjectProtocol { 11 | func pageChildViewControllerLeaveTop(_ childViewController: MCPageChildViewController) 12 | } 13 | 14 | open class MCPageChildViewController: UIViewController { 15 | 16 | public weak var delegate: MCPageChildViewControllerDelegate? 17 | 18 | 19 | public var pageIndex: Int = 0 20 | 21 | 22 | private var canScroll: Bool = false 23 | 24 | private lazy var scrollView = UIScrollView() 25 | 26 | 27 | public func makePageViewControllerScroll(canScroll: Bool) { 28 | 29 | self.canScroll = canScroll; 30 | self.scrollView.showsVerticalScrollIndicator = canScroll; 31 | if (!canScroll) { 32 | self.scrollView.contentOffset = CGPoint.zero 33 | } 34 | } 35 | 36 | public func makePageViewControllerScrollToTop() { 37 | scrollView.contentOffset = CGPoint.zero 38 | } 39 | 40 | /// 子类重写该方法可以监听scrollViewDidScroll方法 41 | open func pageChildViewControllerScrollViewScroll(_ scrollView: UIScrollView) { 42 | 43 | } 44 | 45 | } 46 | 47 | extension MCPageChildViewController: UIScrollViewDelegate { 48 | public func scrollViewDidScroll(_ scrollView: UIScrollView) { 49 | 50 | self.scrollView = scrollView 51 | 52 | pageChildViewControllerScrollViewScroll(scrollView) 53 | 54 | 55 | if (self.canScroll) { 56 | let offsetY = scrollView.contentOffset.y 57 | if (offsetY <= 0) { 58 | makePageViewControllerScroll(canScroll: false) 59 | delegate?.pageChildViewControllerLeaveTop(self) 60 | } 61 | } else { 62 | makePageViewControllerScroll(canScroll: false) 63 | } 64 | } 65 | } 66 | 67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /MCPageViewController/Classes/MCCategoryBar/MCIndicatorView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MCIndicatorView.swift 3 | // Alamofire 4 | // 5 | // Created by 满聪 on 2019/6/3. 6 | // 7 | 8 | import UIKit 9 | import Foundation 10 | 11 | 12 | open class MCIndicatorView: UIView { 13 | 14 | override init(frame: CGRect) { 15 | super.init(frame: frame) 16 | 17 | } 18 | 19 | required public init?(coder aDecoder: NSCoder) { 20 | fatalError("init(coder:) has not been implemented") 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Resources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Resources/.DS_Store -------------------------------------------------------------------------------- /Resources/demo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Resources/demo1.png -------------------------------------------------------------------------------- /Resources/demo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Resources/demo2.png -------------------------------------------------------------------------------- /Resources/demo3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Resources/demo3.png -------------------------------------------------------------------------------- /Resources/demoGif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAmMccc/MCPageViewController/62fb6565cbba639fddf4f914dfb7edc677c8566a/Resources/demoGif.gif -------------------------------------------------------------------------------- /_Pods 2.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj --------------------------------------------------------------------------------