├── .DS_Store ├── README.md └── swift_project ├── .DS_Store ├── Podfile ├── Podfile.lock ├── Pods ├── .DS_Store ├── 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 ├── 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 │ └── xcuserdata │ │ └── gaojun.xcuserdatad │ │ └── xcschemes │ │ ├── Alamofire.xcscheme │ │ ├── MJRefresh.xcscheme │ │ ├── Pods-swift_project.xcscheme │ │ ├── SDCycleScrollView.xcscheme │ │ ├── SDWebImage.xcscheme │ │ ├── SVProgressHUD.xcscheme │ │ ├── SwiftyJSON.xcscheme │ │ ├── TYAlertController.xcscheme │ │ └── xcschememanagement.plist ├── SDCycleScrollView │ ├── LICENSE │ ├── README.md │ └── SDCycleScrollView │ │ └── Lib │ │ └── SDCycleScrollView │ │ ├── PageControl │ │ ├── TAAbstractDotView.h │ │ ├── TAAbstractDotView.m │ │ ├── TAAnimatedDotView.h │ │ ├── TAAnimatedDotView.m │ │ ├── TADotView.h │ │ ├── TADotView.m │ │ ├── TAPageControl.h │ │ └── TAPageControl.m │ │ ├── SDCollectionViewCell.h │ │ ├── SDCollectionViewCell.m │ │ ├── SDCycleScrollView.h │ │ ├── SDCycleScrollView.m │ │ ├── UIView+SDExtension.h │ │ └── UIView+SDExtension.m ├── SDWebImage │ ├── LICENSE │ ├── README.md │ └── SDWebImage │ │ ├── NSButton+WebCache.h │ │ ├── NSButton+WebCache.m │ │ ├── NSData+ImageContentType.h │ │ ├── NSData+ImageContentType.m │ │ ├── NSImage+WebCache.h │ │ ├── NSImage+WebCache.m │ │ ├── SDAnimatedImageRep.h │ │ ├── SDAnimatedImageRep.m │ │ ├── SDImageCache.h │ │ ├── SDImageCache.m │ │ ├── SDImageCacheConfig.h │ │ ├── SDImageCacheConfig.m │ │ ├── SDWebImageCoder.h │ │ ├── SDWebImageCoder.m │ │ ├── SDWebImageCoderHelper.h │ │ ├── SDWebImageCoderHelper.m │ │ ├── SDWebImageCodersManager.h │ │ ├── SDWebImageCodersManager.m │ │ ├── SDWebImageCompat.h │ │ ├── SDWebImageCompat.m │ │ ├── SDWebImageDownloader.h │ │ ├── SDWebImageDownloader.m │ │ ├── SDWebImageDownloaderOperation.h │ │ ├── SDWebImageDownloaderOperation.m │ │ ├── SDWebImageFrame.h │ │ ├── SDWebImageFrame.m │ │ ├── SDWebImageGIFCoder.h │ │ ├── SDWebImageGIFCoder.m │ │ ├── SDWebImageImageIOCoder.h │ │ ├── SDWebImageImageIOCoder.m │ │ ├── SDWebImageManager.h │ │ ├── SDWebImageManager.m │ │ ├── SDWebImageOperation.h │ │ ├── SDWebImagePrefetcher.h │ │ ├── SDWebImagePrefetcher.m │ │ ├── SDWebImageTransition.h │ │ ├── SDWebImageTransition.m │ │ ├── UIButton+WebCache.h │ │ ├── UIButton+WebCache.m │ │ ├── UIImage+ForceDecode.h │ │ ├── UIImage+ForceDecode.m │ │ ├── UIImage+GIF.h │ │ ├── UIImage+GIF.m │ │ ├── UIImage+MultiFormat.h │ │ ├── UIImage+MultiFormat.m │ │ ├── UIImageView+HighlightedWebCache.h │ │ ├── UIImageView+HighlightedWebCache.m │ │ ├── UIImageView+WebCache.h │ │ ├── UIImageView+WebCache.m │ │ ├── UIView+WebCache.h │ │ ├── UIView+WebCache.m │ │ ├── UIView+WebCacheOperation.h │ │ └── UIView+WebCacheOperation.m ├── SVProgressHUD │ ├── LICENSE │ ├── README.md │ └── SVProgressHUD │ │ ├── SVIndefiniteAnimatedView.h │ │ ├── SVIndefiniteAnimatedView.m │ │ ├── SVProgressAnimatedView.h │ │ ├── SVProgressAnimatedView.m │ │ ├── SVProgressHUD.bundle │ │ ├── angle-mask.png │ │ ├── angle-mask@2x.png │ │ ├── angle-mask@3x.png │ │ ├── error.png │ │ ├── error@2x.png │ │ ├── error@3x.png │ │ ├── info.png │ │ ├── info@2x.png │ │ ├── info@3x.png │ │ ├── success.png │ │ ├── success@2x.png │ │ └── success@3x.png │ │ ├── SVProgressHUD.h │ │ ├── SVProgressHUD.m │ │ ├── SVRadialGradientLayer.h │ │ └── SVRadialGradientLayer.m ├── SwiftyJSON │ ├── LICENSE │ ├── README.md │ └── Source │ │ └── SwiftyJSON.swift ├── TYAlertController │ ├── LICENSE │ ├── README.md │ └── TYAlertControllerDemo │ │ └── TYAlertController │ │ ├── TYAlertController+TransitionAnimate.m │ │ ├── TYAlertController.h │ │ ├── TYAlertController.m │ │ ├── TYAlertDropDownAnimation.h │ │ ├── TYAlertDropDownAnimation.m │ │ ├── TYAlertFadeAnimation.h │ │ ├── TYAlertFadeAnimation.m │ │ ├── TYAlertScaleFadeAnimation.h │ │ ├── TYAlertScaleFadeAnimation.m │ │ ├── TYAlertView.h │ │ ├── TYAlertView.m │ │ ├── TYBaseAnimation.h │ │ ├── TYBaseAnimation.m │ │ ├── TYShowAlertView.h │ │ ├── TYShowAlertView.m │ │ ├── UIView+TYAlertView.h │ │ ├── UIView+TYAlertView.m │ │ ├── UIView+TYAutoLayout.h │ │ └── UIView+TYAutoLayout.m └── Target Support Files │ ├── Alamofire │ ├── Alamofire-dummy.m │ ├── Alamofire-prefix.pch │ ├── Alamofire-umbrella.h │ ├── Alamofire.modulemap │ ├── Alamofire.xcconfig │ └── Info.plist │ ├── MJRefresh │ ├── Info.plist │ ├── MJRefresh-dummy.m │ ├── MJRefresh-prefix.pch │ ├── MJRefresh-umbrella.h │ ├── MJRefresh.modulemap │ └── MJRefresh.xcconfig │ ├── Pods-swift_project │ ├── Info.plist │ ├── Pods-swift_project-acknowledgements.markdown │ ├── Pods-swift_project-acknowledgements.plist │ ├── Pods-swift_project-dummy.m │ ├── Pods-swift_project-frameworks.sh │ ├── Pods-swift_project-resources.sh │ ├── Pods-swift_project-umbrella.h │ ├── Pods-swift_project.debug.xcconfig │ ├── Pods-swift_project.modulemap │ └── Pods-swift_project.release.xcconfig │ ├── SDCycleScrollView │ ├── Info.plist │ ├── SDCycleScrollView-dummy.m │ ├── SDCycleScrollView-prefix.pch │ ├── SDCycleScrollView-umbrella.h │ ├── SDCycleScrollView.modulemap │ └── SDCycleScrollView.xcconfig │ ├── SDWebImage │ ├── Info.plist │ ├── SDWebImage-dummy.m │ ├── SDWebImage-prefix.pch │ ├── SDWebImage-umbrella.h │ ├── SDWebImage.modulemap │ └── SDWebImage.xcconfig │ ├── SVProgressHUD │ ├── Info.plist │ ├── SVProgressHUD-dummy.m │ ├── SVProgressHUD-prefix.pch │ ├── SVProgressHUD-umbrella.h │ ├── SVProgressHUD.modulemap │ └── SVProgressHUD.xcconfig │ ├── SwiftyJSON │ ├── Info.plist │ ├── SwiftyJSON-dummy.m │ ├── SwiftyJSON-prefix.pch │ ├── SwiftyJSON-umbrella.h │ ├── SwiftyJSON.modulemap │ └── SwiftyJSON.xcconfig │ └── TYAlertController │ ├── Info.plist │ ├── TYAlertController-dummy.m │ ├── TYAlertController-prefix.pch │ ├── TYAlertController-umbrella.h │ ├── TYAlertController.modulemap │ └── TYAlertController.xcconfig ├── swift_project.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── gaojun.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── gaojun.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── swift_project.xcworkspace ├── contents.xcworkspacedata └── xcuserdata │ └── gaojun.xcuserdatad │ └── UserInterfaceState.xcuserstate ├── swift_project ├── .DS_Store ├── AppDelegate.swift ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist ├── PrefixHeader.pch ├── RealPro │ ├── .DS_Store │ ├── Base │ │ ├── GJBaseViewController.swift │ │ ├── GJBaseWebViewController.swift │ │ ├── GJNavigationController.swift │ │ └── GJTabbarController.swift │ ├── Common │ │ ├── .DS_Store │ │ ├── Custom │ │ │ ├── GJAlertLabel.swift │ │ │ ├── GJPictureShow.swift │ │ │ ├── GJProgressView.swift │ │ │ ├── GJRefreshFooter.swift │ │ │ ├── GJRefreshHeader.swift │ │ │ └── GJSegment.swift │ │ ├── Extension │ │ │ └── UIBarButtonItem+Extension.swift │ │ ├── GJUtil.swift │ │ ├── NetWorkFile.swift │ │ └── VariableDefineFile.swift │ ├── NetWork │ │ ├── GJNetWorkTool.swift │ │ ├── GJNetwork.swift │ │ └── GJNetworkReachability.swift │ └── ViewControllers │ │ ├── .DS_Store │ │ ├── InvestViewController │ │ ├── .DS_Store │ │ ├── Model │ │ │ ├── .DS_Store │ │ │ ├── CompanyInvestDetailModel.swift │ │ │ ├── InvestDetailModel.swift │ │ │ ├── InvestHistoryModel.swift │ │ │ └── PersonInvestDetailModel.swift │ │ ├── View │ │ │ ├── .DS_Store │ │ │ ├── CompanyInvestDetailCell.swift │ │ │ ├── InvestCommitView.swift │ │ │ ├── InvestDetailCell.swift │ │ │ ├── InvestHistoryCell.swift │ │ │ ├── InvestListCell.swift │ │ │ └── PersonInvestDetailCell.swift │ │ └── ViewController │ │ │ ├── .DS_Store │ │ │ ├── CompanyInvestDetailViewController.swift │ │ │ ├── CunguanWebViewController.swift │ │ │ ├── InvestDetailContainerViewController.swift │ │ │ ├── InvestDetailViewController.swift │ │ │ ├── InvestHistoryViewController.swift │ │ │ ├── InvestListViewController.swift │ │ │ ├── InvestViewController.swift │ │ │ └── PersonInvestDetailViewController.swift │ │ ├── LoginAboutViewController │ │ ├── ForgetPasswordViewController.swift │ │ ├── LoginViewController.swift │ │ ├── RegisterSuccessViewController.swift │ │ ├── RegisterViewController.swift │ │ ├── ResetPasswordViewController.swift │ │ └── UserAgreementViewController.swift │ │ ├── MainViewController │ │ ├── .DS_Store │ │ ├── Model │ │ │ ├── AnnouceModel.swift │ │ │ ├── BannarModel.swift │ │ │ └── InvestListCellModel.swift │ │ ├── View │ │ │ └── MainInvestListCell.swift │ │ └── ViewController │ │ │ ├── AnnounceDetailController.swift │ │ │ ├── BannarDetailViewController.swift │ │ │ └── MainViewController.swift │ │ └── MineViewController │ │ ├── .DS_Store │ │ ├── Model │ │ ├── .DS_Store │ │ └── MineViewModel.swift │ │ ├── View │ │ ├── .DS_Store │ │ └── MineViewCell.swift │ │ └── ViewController │ │ ├── .DS_Store │ │ ├── AddMoneyViewController.swift │ │ ├── DeleteMoneyViewController.swift │ │ ├── InvatationViewController.swift │ │ ├── MessageViewController.swift │ │ ├── MineInvestHistoryListViewController.swift │ │ ├── MineInvestHistoryViewController.swift │ │ ├── MineViewController.swift │ │ ├── MoneyHistoryViewController.swift │ │ ├── MyTicketViewController.swift │ │ └── SafetyCenterViewController.swift ├── UserAgreement.html ├── ViewController.swift └── swift_project_briding_Header.h ├── swift_projectTests ├── Info.plist └── swift_project.swift └── swift_projectUITests ├── Info.plist └── swift_project.swift /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/.DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # swift_project 2 | 之前的项目,用swift敲了一遍,目前主体已经完成,只剩下一些小页面了,算是自己认真对待的一份代码。有意见和建议请指出,万分感谢。 3 | 4 | 另外,目前运行项目会报错,原因是由于版权问题,所以里面的接口和图片名称都没加上。后面我会加上运行效果图,到时候大家可以根据效果图查看代码了。 5 | 6 | ## 自定义控件 7 | *这里面,我自己封装了一些经常用到的控件,如Segment、Refresh、PictureShow、Progress等,可以很方便地调用。* 8 | * #### GJSegment 9 | ![GJSegment](https://github.com/manofit/ScreenPics/blob/master/swfit_pro_pics/segment.gif) 10 | * #### GJRefresh 11 | ![GJRefresh](https://github.com/manofit/ScreenPics/blob/master/swfit_pro_pics/mj_footer.gif)![GJRefresh](https://github.com/manofit/ScreenPics/blob/master/swfit_pro_pics/mj_header.gif) 12 | * #### GJPictureShow 13 | ![GJPictureShow](https://github.com/manofit/ScreenPics/blob/master/swfit_pro_pics/pic_show.gif) 14 | * #### GJProgressView 15 | ![GJProgressView](https://github.com/manofit/ScreenPics/blob/master/swfit_pro_pics/progress.gif) 16 | 17 | *后面还会继续对项目里面的一些其他内容,比如倒计时按钮进行封装。* 18 | 19 | ## 代码结构 20 | * 项目主要采用MVC的设计模式,在ViewControllers文件夹中包含所有的页面:登录相关、主页、出借、个人中心。每一块下面又分为三个文件夹:Model、View、Controller。 21 | 22 | * 封装了网络请求,基于Alamofire。文件夹NetWork下有GJNetwork、GJNetWorkTool、GJNetworkReachability三个类,其中GJNetworkReachability用来检查网络状态,GJNetWorkTool用来实现每一个网络请求,GJNetwork是直接与Alamofire交互的类。 23 | 24 | * NetWorkFile类存放所有请求的URL;VariableDefineFile类存放所有的变量,相当于宏。 25 | 26 | * GJUtil是工厂类,里面封装了几个常用UI控件的创建方法,还包含一些类似于检测手机号码、MD5加密、base64加密等常用方法。 27 | 28 | * Base文件夹下是几个基类。GJBaseViewController是所有视图的父类,GJBaseWebViewController是所有需要加载H5页面的父类。 29 | 30 | ## 项目才创建不久,平时编写的时候难免会有纰漏的地方,请大家不吝赐教。 31 | -------------------------------------------------------------------------------- /swift_project/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/.DS_Store -------------------------------------------------------------------------------- /swift_project/Podfile: -------------------------------------------------------------------------------- 1 | project 'swift_project.xcodeproj' 2 | platform :ios, '9.0' 3 | use_frameworks! 4 | 5 | target 'swift_project' do 6 | 7 | pod 'Alamofire' 8 | pod 'SVProgressHUD' 9 | pod 'SwiftyJSON' 10 | pod 'TYAlertController' 11 | pod 'SDCycleScrollView' 12 | pod 'MJRefresh' 13 | pod 'SDWebImage' 14 | end 15 | -------------------------------------------------------------------------------- /swift_project/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Alamofire (4.7.1) 3 | - MJRefresh (3.1.15.3) 4 | - SDCycleScrollView (1.75): 5 | - SDWebImage (>= 4.0.0) 6 | - SDWebImage (4.3.3): 7 | - SDWebImage/Core (= 4.3.3) 8 | - SDWebImage/Core (4.3.3) 9 | - SVProgressHUD (2.2.5) 10 | - SwiftyJSON (4.0.0) 11 | - TYAlertController (1.2.0) 12 | 13 | DEPENDENCIES: 14 | - Alamofire 15 | - MJRefresh 16 | - SDCycleScrollView 17 | - SDWebImage 18 | - SVProgressHUD 19 | - SwiftyJSON 20 | - TYAlertController 21 | 22 | SPEC CHECKSUMS: 23 | Alamofire: 68d7d521118d49c615a8d2214d87cdf525599d30 24 | MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7 25 | SDCycleScrollView: 884b88f0266dd4708a0e1934975c69cb971707b1 26 | SDWebImage: de4d90b5bff3571eae7bd16202b1f43135409fa5 27 | SVProgressHUD: 1428aafac632c1f86f62aa4243ec12008d7a51d6 28 | SwiftyJSON: 070dabdcb1beb81b247c65ffa3a79dbbfb3b48aa 29 | TYAlertController: c121090edb0bea7426f987da94cdddd81eef4231 30 | 31 | PODFILE CHECKSUM: 981ae8e343307a8be34c29ae8958325dc2d6030f 32 | 33 | COCOAPODS: 1.4.0 34 | -------------------------------------------------------------------------------- /swift_project/Pods/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/.DS_Store -------------------------------------------------------------------------------- /swift_project/Pods/Alamofire/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014-2018 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 | -------------------------------------------------------------------------------- /swift_project/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Alamofire.swift 3 | // 4 | // Copyright (c) 2014-2018 Alamofire Software Foundation (http://alamofire.org/) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | 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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.m: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshFooter.m 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 9 | 10 | #import "MJRefreshFooter.h" 11 | #include "UIScrollView+MJRefresh.h" 12 | 13 | @interface MJRefreshFooter() 14 | 15 | @end 16 | 17 | @implementation MJRefreshFooter 18 | #pragma mark - 构造方法 19 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock 20 | { 21 | MJRefreshFooter *cmp = [[self alloc] init]; 22 | cmp.refreshingBlock = refreshingBlock; 23 | return cmp; 24 | } 25 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action 26 | { 27 | MJRefreshFooter *cmp = [[self alloc] init]; 28 | [cmp setRefreshingTarget:target refreshingAction:action]; 29 | return cmp; 30 | } 31 | 32 | #pragma mark - 重写父类的方法 33 | - (void)prepare 34 | { 35 | [super prepare]; 36 | 37 | // 设置自己的高度 38 | self.mj_h = MJRefreshFooterHeight; 39 | 40 | // 默认不会自动隐藏 41 | self.automaticallyHidden = NO; 42 | } 43 | 44 | - (void)willMoveToSuperview:(UIView *)newSuperview 45 | { 46 | [super willMoveToSuperview:newSuperview]; 47 | 48 | if (newSuperview) { 49 | // 监听scrollView数据的变化 50 | if ([self.scrollView isKindOfClass:[UITableView class]] || [self.scrollView isKindOfClass:[UICollectionView class]]) { 51 | [self.scrollView setMj_reloadDataBlock:^(NSInteger totalDataCount) { 52 | if (self.isAutomaticallyHidden) { 53 | self.hidden = (totalDataCount == 0); 54 | } 55 | }]; 56 | } 57 | } 58 | } 59 | 60 | #pragma mark - 公共方法 61 | - (void)endRefreshingWithNoMoreData 62 | { 63 | dispatch_async(dispatch_get_main_queue(), ^{ 64 | self.state = MJRefreshStateNoMoreData; 65 | }); 66 | } 67 | 68 | - (void)noticeNoMoreData 69 | { 70 | [self endRefreshingWithNoMoreData]; 71 | } 72 | 73 | - (void)resetNoMoreData 74 | { 75 | dispatch_async(dispatch_get_main_queue(), ^{ 76 | self.state = MJRefreshStateIdle; 77 | }); 78 | } 79 | 80 | - (void)setAutomaticallyHidden:(BOOL)automaticallyHidden 81 | { 82 | _automaticallyHidden = automaticallyHidden; 83 | } 84 | @end 85 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackStateFooter.m 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackStateFooter() 12 | { 13 | /** 显示刷新状态的label */ 14 | __unsafe_unretained UILabel *_stateLabel; 15 | } 16 | /** 所有状态对应的文字 */ 17 | @property (strong, nonatomic) NSMutableDictionary *stateTitles; 18 | @end 19 | 20 | @implementation MJRefreshBackStateFooter 21 | #pragma mark - 懒加载 22 | - (NSMutableDictionary *)stateTitles 23 | { 24 | if (!_stateTitles) { 25 | self.stateTitles = [NSMutableDictionary dictionary]; 26 | } 27 | return _stateTitles; 28 | } 29 | 30 | - (UILabel *)stateLabel 31 | { 32 | if (!_stateLabel) { 33 | [self addSubview:_stateLabel = [UILabel mj_label]]; 34 | } 35 | return _stateLabel; 36 | } 37 | 38 | #pragma mark - 公共方法 39 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state 40 | { 41 | if (title == nil) return; 42 | self.stateTitles[@(state)] = title; 43 | self.stateLabel.text = self.stateTitles[@(self.state)]; 44 | } 45 | 46 | - (NSString *)titleForState:(MJRefreshState)state { 47 | return self.stateTitles[@(state)]; 48 | } 49 | 50 | #pragma mark - 重写父类的方法 51 | - (void)prepare 52 | { 53 | [super prepare]; 54 | 55 | // 初始化间距 56 | self.labelLeftInset = MJRefreshLabelLeftInset; 57 | 58 | // 初始化文字 59 | [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterIdleText] forState:MJRefreshStateIdle]; 60 | [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterPullingText] forState:MJRefreshStatePulling]; 61 | [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterRefreshingText] forState:MJRefreshStateRefreshing]; 62 | [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterNoMoreDataText] forState:MJRefreshStateNoMoreData]; 63 | } 64 | 65 | - (void)placeSubviews 66 | { 67 | [super placeSubviews]; 68 | 69 | if (self.stateLabel.constraints.count) return; 70 | 71 | // 状态标签 72 | self.stateLabel.frame = self.bounds; 73 | } 74 | 75 | - (void)setState:(MJRefreshState)state 76 | { 77 | MJRefreshCheckState 78 | 79 | // 设置状态文字 80 | self.stateLabel.text = self.stateTitles[@(state)]; 81 | } 82 | @end 83 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /swift_project/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /swift_project/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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" -------------------------------------------------------------------------------- /swift_project/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"; -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Alamofire (4.7.1) 3 | - MJRefresh (3.1.15.3) 4 | - SDCycleScrollView (1.75): 5 | - SDWebImage (>= 4.0.0) 6 | - SDWebImage (4.3.3): 7 | - SDWebImage/Core (= 4.3.3) 8 | - SDWebImage/Core (4.3.3) 9 | - SVProgressHUD (2.2.5) 10 | - SwiftyJSON (4.0.0) 11 | - TYAlertController (1.2.0) 12 | 13 | DEPENDENCIES: 14 | - Alamofire 15 | - MJRefresh 16 | - SDCycleScrollView 17 | - SDWebImage 18 | - SVProgressHUD 19 | - SwiftyJSON 20 | - TYAlertController 21 | 22 | SPEC CHECKSUMS: 23 | Alamofire: 68d7d521118d49c615a8d2214d87cdf525599d30 24 | MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7 25 | SDCycleScrollView: 884b88f0266dd4708a0e1934975c69cb971707b1 26 | SDWebImage: de4d90b5bff3571eae7bd16202b1f43135409fa5 27 | SVProgressHUD: 1428aafac632c1f86f62aa4243ec12008d7a51d6 28 | SwiftyJSON: 070dabdcb1beb81b247c65ffa3a79dbbfb3b48aa 29 | TYAlertController: c121090edb0bea7426f987da94cdddd81eef4231 30 | 31 | PODFILE CHECKSUM: 981ae8e343307a8be34c29ae8958325dc2d6030f 32 | 33 | COCOAPODS: 1.4.0 34 | -------------------------------------------------------------------------------- /swift_project/Pods/Pods.xcodeproj/xcuserdata/gaojun.xcuserdatad/xcschemes/Alamofire.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /swift_project/Pods/Pods.xcodeproj/xcuserdata/gaojun.xcuserdatad/xcschemes/MJRefresh.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /swift_project/Pods/Pods.xcodeproj/xcuserdata/gaojun.xcuserdatad/xcschemes/SDCycleScrollView.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /swift_project/Pods/Pods.xcodeproj/xcuserdata/gaojun.xcuserdatad/xcschemes/SDWebImage.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /swift_project/Pods/Pods.xcodeproj/xcuserdata/gaojun.xcuserdatad/xcschemes/SVProgressHUD.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /swift_project/Pods/Pods.xcodeproj/xcuserdata/gaojun.xcuserdatad/xcschemes/SwiftyJSON.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /swift_project/Pods/Pods.xcodeproj/xcuserdata/gaojun.xcuserdatad/xcschemes/TYAlertController.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /swift_project/Pods/Pods.xcodeproj/xcuserdata/gaojun.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Alamofire.xcscheme 8 | 9 | isShown 10 | 11 | orderHint 12 | 0 13 | 14 | MJRefresh.xcscheme 15 | 16 | isShown 17 | 18 | orderHint 19 | 1 20 | 21 | Pods-swift_project.xcscheme 22 | 23 | isShown 24 | 25 | orderHint 26 | 2 27 | 28 | SDCycleScrollView.xcscheme 29 | 30 | isShown 31 | 32 | orderHint 33 | 3 34 | 35 | SDWebImage.xcscheme 36 | 37 | isShown 38 | 39 | orderHint 40 | 4 41 | 42 | SVProgressHUD.xcscheme 43 | 44 | isShown 45 | 46 | orderHint 47 | 5 48 | 49 | SwiftyJSON.xcscheme 50 | 51 | isShown 52 | 53 | orderHint 54 | 6 55 | 56 | TYAlertController.xcscheme 57 | 58 | isShown 59 | 60 | orderHint 61 | 7 62 | 63 | 64 | SuppressBuildableAutocreation 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /swift_project/Pods/SDCycleScrollView/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 GSD_iOS 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 | -------------------------------------------------------------------------------- /swift_project/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAbstractDotView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TAAbstractDotView.h 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface TAAbstractDotView : UIView 13 | 14 | 15 | /** 16 | * A method call let view know which state appearance it should take. Active meaning it's current page. Inactive not the current page. 17 | * 18 | * @param active BOOL to tell if view is active or not 19 | */ 20 | - (void)changeActivityState:(BOOL)active; 21 | 22 | 23 | @end 24 | 25 | -------------------------------------------------------------------------------- /swift_project/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAbstractDotView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TAAbstractDotView.m 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TAAbstractDotView.h" 10 | 11 | 12 | @implementation TAAbstractDotView 13 | 14 | 15 | - (id)init 16 | { 17 | @throw [NSException exceptionWithName:NSInternalInconsistencyException 18 | reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class] 19 | userInfo:nil]; 20 | } 21 | 22 | 23 | - (void)changeActivityState:(BOOL)active 24 | { 25 | @throw [NSException exceptionWithName:NSInternalInconsistencyException 26 | reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class] 27 | userInfo:nil]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /swift_project/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAnimatedDotView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TAAnimatedDotView.h 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TAAbstractDotView.h" 10 | 11 | @interface TAAnimatedDotView : TAAbstractDotView 12 | 13 | @property (nonatomic, strong) UIColor *dotColor; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /swift_project/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAnimatedDotView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TAAnimatedDotView.m 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TAAnimatedDotView.h" 10 | 11 | static CGFloat const kAnimateDuration = 1; 12 | 13 | @implementation TAAnimatedDotView 14 | 15 | - (instancetype)init 16 | { 17 | self = [super init]; 18 | if (self) { 19 | [self initialization]; 20 | } 21 | 22 | return self; 23 | } 24 | 25 | 26 | - (id)initWithFrame:(CGRect)frame 27 | { 28 | self = [super initWithFrame:frame]; 29 | if (self) { 30 | [self initialization]; 31 | } 32 | return self; 33 | } 34 | 35 | 36 | - (id)initWithCoder:(NSCoder *)aDecoder 37 | { 38 | self = [super initWithCoder:aDecoder]; 39 | if (self) { 40 | [self initialization]; 41 | } 42 | 43 | return self; 44 | } 45 | 46 | - (void)setDotColor:(UIColor *)dotColor 47 | { 48 | _dotColor = dotColor; 49 | self.layer.borderColor = dotColor.CGColor; 50 | } 51 | 52 | - (void)initialization 53 | { 54 | _dotColor = [UIColor whiteColor]; 55 | self.backgroundColor = [UIColor clearColor]; 56 | self.layer.cornerRadius = CGRectGetWidth(self.frame) / 2; 57 | self.layer.borderColor = [UIColor whiteColor].CGColor; 58 | self.layer.borderWidth = 2; 59 | } 60 | 61 | 62 | - (void)changeActivityState:(BOOL)active 63 | { 64 | if (active) { 65 | [self animateToActiveState]; 66 | } else { 67 | [self animateToDeactiveState]; 68 | } 69 | } 70 | 71 | 72 | - (void)animateToActiveState 73 | { 74 | [UIView animateWithDuration:kAnimateDuration delay:0 usingSpringWithDamping:.5 initialSpringVelocity:-20 options:UIViewAnimationOptionCurveLinear animations:^{ 75 | self.backgroundColor = _dotColor; 76 | self.transform = CGAffineTransformMakeScale(1.4, 1.4); 77 | } completion:nil]; 78 | } 79 | 80 | - (void)animateToDeactiveState 81 | { 82 | [UIView animateWithDuration:kAnimateDuration delay:0 usingSpringWithDamping:.5 initialSpringVelocity:0 options:UIViewAnimationOptionCurveLinear animations:^{ 83 | self.backgroundColor = [UIColor clearColor]; 84 | self.transform = CGAffineTransformIdentity; 85 | } completion:nil]; 86 | } 87 | 88 | @end 89 | -------------------------------------------------------------------------------- /swift_project/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TADotView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TADotView.h 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TAAbstractDotView.h" 10 | 11 | @interface TADotView : TAAbstractDotView 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /swift_project/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TADotView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TADotView.m 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TADotView.h" 10 | 11 | @implementation TADotView 12 | 13 | 14 | - (instancetype)init 15 | { 16 | self = [super init]; 17 | if (self) { 18 | [self initialization]; 19 | } 20 | 21 | return self; 22 | } 23 | 24 | 25 | - (id)initWithFrame:(CGRect)frame 26 | { 27 | self = [super initWithFrame:frame]; 28 | if (self) { 29 | [self initialization]; 30 | } 31 | return self; 32 | } 33 | 34 | 35 | - (id)initWithCoder:(NSCoder *)aDecoder 36 | { 37 | self = [super initWithCoder:aDecoder]; 38 | if (self) { 39 | [self initialization]; 40 | } 41 | 42 | return self; 43 | } 44 | 45 | - (void)initialization 46 | { 47 | self.backgroundColor = [UIColor clearColor]; 48 | self.layer.cornerRadius = CGRectGetWidth(self.frame) / 2; 49 | self.layer.borderColor = [UIColor whiteColor].CGColor; 50 | self.layer.borderWidth = 2; 51 | } 52 | 53 | 54 | - (void)changeActivityState:(BOOL)active 55 | { 56 | if (active) { 57 | self.backgroundColor = [UIColor whiteColor]; 58 | } else { 59 | self.backgroundColor = [UIColor clearColor]; 60 | } 61 | } 62 | 63 | @end 64 | -------------------------------------------------------------------------------- /swift_project/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SDCollectionViewCell.h 3 | // SDCycleScrollView 4 | // 5 | // Created by aier on 15-3-22. 6 | // Copyright (c) 2015年 GSD. All rights reserved. 7 | // 8 | 9 | /* 10 | 11 | ********************************************************************************* 12 | * 13 | * 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟 14 | * 15 | * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并 16 | * 帮您解决问题。 17 | * 新浪微博:GSD_iOS 18 | * Email : gsdios@126.com 19 | * GitHub: https://github.com/gsdios 20 | * 21 | * 另(我的自动布局库SDAutoLayout): 22 | * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于 23 | * 做最简单易用的AutoLayout库。 24 | * 视频教程:http://www.letv.com/ptv/vplay/24038772.html 25 | * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md 26 | * GitHub:https://github.com/gsdios/SDAutoLayout 27 | ********************************************************************************* 28 | 29 | */ 30 | 31 | 32 | 33 | #import 34 | 35 | @interface SDCollectionViewCell : UICollectionViewCell 36 | 37 | @property (weak, nonatomic) UIImageView *imageView; 38 | @property (copy, nonatomic) NSString *title; 39 | 40 | @property (nonatomic, strong) UIColor *titleLabelTextColor; 41 | @property (nonatomic, strong) UIFont *titleLabelTextFont; 42 | @property (nonatomic, strong) UIColor *titleLabelBackgroundColor; 43 | @property (nonatomic, assign) CGFloat titleLabelHeight; 44 | @property (nonatomic, assign) NSTextAlignment titleLabelTextAlignment; 45 | 46 | @property (nonatomic, assign) BOOL hasConfigured; 47 | 48 | /** 只展示文字轮播 */ 49 | @property (nonatomic, assign) BOOL onlyDisplayText; 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /swift_project/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/UIView+SDExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+SDExtension.h 3 | // SDRefreshView 4 | // 5 | // Created by aier on 15-2-23. 6 | // Copyright (c) 2015年 GSD. All rights reserved. 7 | // 8 | 9 | /* 10 | 11 | ********************************************************************************* 12 | * 13 | * 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟 14 | * 15 | * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并 16 | * 帮您解决问题。 17 | * 新浪微博:GSD_iOS 18 | * Email : gsdios@126.com 19 | * GitHub: https://github.com/gsdios 20 | * 21 | * 另(我的自动布局库SDAutoLayout): 22 | * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于 23 | * 做最简单易用的AutoLayout库。 24 | * 视频教程:http://www.letv.com/ptv/vplay/24038772.html 25 | * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md 26 | * GitHub:https://github.com/gsdios/SDAutoLayout 27 | ********************************************************************************* 28 | 29 | */ 30 | 31 | #import 32 | 33 | #define SDColorCreater(r, g, b, a) [UIColor colorWithRed:(r / 255.0) green:(g / 255.0) blue:(b / 255.0) alpha:a] 34 | 35 | 36 | @interface UIView (SDExtension) 37 | 38 | @property (nonatomic, assign) CGFloat sd_height; 39 | @property (nonatomic, assign) CGFloat sd_width; 40 | 41 | @property (nonatomic, assign) CGFloat sd_y; 42 | @property (nonatomic, assign) CGFloat sd_x; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | 21 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Fabrice Aneche 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import 11 | #import "SDWebImageCompat.h" 12 | 13 | typedef NS_ENUM(NSInteger, SDImageFormat) { 14 | SDImageFormatUndefined = -1, 15 | SDImageFormatJPEG = 0, 16 | SDImageFormatPNG, 17 | SDImageFormatGIF, 18 | SDImageFormatTIFF, 19 | SDImageFormatWebP, 20 | SDImageFormatHEIC 21 | }; 22 | 23 | @interface NSData (ImageContentType) 24 | 25 | /** 26 | * Return image format 27 | * 28 | * @param data the input image data 29 | * 30 | * @return the image format as `SDImageFormat` (enum) 31 | */ 32 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data; 33 | 34 | /** 35 | Convert SDImageFormat to UTType 36 | 37 | @param format Format as SDImageFormat 38 | @return The UTType as CFStringRef 39 | */ 40 | + (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/NSImage+WebCache.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | #if SD_MAC 12 | 13 | #import 14 | 15 | @interface NSImage (WebCache) 16 | 17 | - (CGImageRef)CGImage; 18 | - (NSArray *)images; 19 | - (BOOL)isGIF; 20 | 21 | @end 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/NSImage+WebCache.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "NSImage+WebCache.h" 10 | 11 | #if SD_MAC 12 | 13 | @implementation NSImage (WebCache) 14 | 15 | - (CGImageRef)CGImage { 16 | NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); 17 | CGImageRef cgImage = [self CGImageForProposedRect:&imageRect context:NULL hints:nil]; 18 | return cgImage; 19 | } 20 | 21 | - (NSArray *)images { 22 | return nil; 23 | } 24 | 25 | - (BOOL)isGIF { 26 | BOOL isGIF = NO; 27 | for (NSImageRep *rep in self.representations) { 28 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) { 29 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep; 30 | NSUInteger frameCount = [[bitmapRep valueForProperty:NSImageFrameCount] unsignedIntegerValue]; 31 | isGIF = frameCount > 1 ? YES : NO; 32 | break; 33 | } 34 | } 35 | return isGIF; 36 | } 37 | 38 | @end 39 | 40 | #endif 41 | 42 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDAnimatedImageRep.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | #if SD_MAC 12 | 13 | // A subclass of `NSBitmapImageRep` to fix that GIF loop count issue because `NSBitmapImageRep` will reset `NSImageCurrentFrameDuration` by using `kCGImagePropertyGIFDelayTime` but not `kCGImagePropertyGIFUnclampedDelayTime`. 14 | // Built in GIF coder use this instead of `NSBitmapImageRep` for better GIF rendering. If you do not want this, only enable `SDWebImageImageIOCoder`, which just call `NSImage` API and actually use `NSBitmapImageRep` for GIF image. 15 | 16 | @interface SDAnimatedImageRep : NSBitmapImageRep 17 | 18 | @end 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDAnimatedImageRep.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDAnimatedImageRep.h" 10 | 11 | #if SD_MAC 12 | 13 | #import "SDWebImageGIFCoder.h" 14 | 15 | @interface SDWebImageGIFCoder () 16 | 17 | - (float)sd_frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source; 18 | 19 | @end 20 | 21 | @interface SDAnimatedImageRep () 22 | 23 | @property (nonatomic, assign, readonly, nullable) CGImageSourceRef imageSource; 24 | 25 | @end 26 | 27 | @implementation SDAnimatedImageRep 28 | 29 | // `NSBitmapImageRep` will use `kCGImagePropertyGIFDelayTime` whenever you call `setProperty:withValue:` with `NSImageCurrentFrame` to change the current frame. We override it and use the actual `kCGImagePropertyGIFUnclampedDelayTime` if need. 30 | - (void)setProperty:(NSBitmapImageRepPropertyKey)property withValue:(id)value { 31 | [super setProperty:property withValue:value]; 32 | if ([property isEqualToString:NSImageCurrentFrame]) { 33 | // Access the image source 34 | CGImageSourceRef imageSource = self.imageSource; 35 | if (!imageSource) { 36 | return; 37 | } 38 | // Check format type 39 | CFStringRef type = CGImageSourceGetType(imageSource); 40 | if (!type) { 41 | return; 42 | } 43 | NSUInteger index = [value unsignedIntegerValue]; 44 | float frameDuration = 0; 45 | // Through we currently process GIF only, in the 5.x we support APNG so we keep the extensibility 46 | if (CFStringCompare(type, kUTTypeGIF, 0) == kCFCompareEqualTo) { 47 | frameDuration = [[SDWebImageGIFCoder sharedCoder] sd_frameDurationAtIndex:index source:imageSource]; 48 | } 49 | if (!frameDuration) { 50 | return; 51 | } 52 | // Reset super frame duration with the actual frame duration 53 | [super setProperty:NSImageCurrentFrameDuration withValue:@(frameDuration)]; 54 | } 55 | } 56 | 57 | - (CGImageSourceRef)imageSource { 58 | if (_tiffData) { 59 | return (__bridge CGImageSourceRef)(_tiffData); 60 | } 61 | return NULL; 62 | } 63 | 64 | @end 65 | 66 | #endif 67 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCompat.h" 11 | 12 | @interface SDImageCacheConfig : NSObject 13 | 14 | /** 15 | * Decompressing images that are downloaded and cached can improve performance but can consume lot of memory. 16 | * Defaults to YES. Set this to NO if you are experiencing a crash due to excessive memory consumption. 17 | */ 18 | @property (assign, nonatomic) BOOL shouldDecompressImages; 19 | 20 | /** 21 | * disable iCloud backup [defaults to YES] 22 | */ 23 | @property (assign, nonatomic) BOOL shouldDisableiCloud; 24 | 25 | /** 26 | * use memory cache [defaults to YES] 27 | */ 28 | @property (assign, nonatomic) BOOL shouldCacheImagesInMemory; 29 | 30 | /** 31 | * The reading options while reading cache from disk. 32 | * Defaults to 0. You can set this to `NSDataReadingMappedIfSafe` to improve performance. 33 | */ 34 | @property (assign, nonatomic) NSDataReadingOptions diskCacheReadingOptions; 35 | 36 | /** 37 | * The writing options while writing cache to disk. 38 | * Defaults to `NSDataWritingAtomic`. You can set this to `NSDataWritingWithoutOverwriting` to prevent overwriting an existing file. 39 | */ 40 | @property (assign, nonatomic) NSDataWritingOptions diskCacheWritingOptions; 41 | 42 | /** 43 | * The maximum length of time to keep an image in the cache, in seconds. 44 | */ 45 | @property (assign, nonatomic) NSInteger maxCacheAge; 46 | 47 | /** 48 | * The maximum size of the cache, in bytes. 49 | */ 50 | @property (assign, nonatomic) NSUInteger maxCacheSize; 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDImageCacheConfig.h" 10 | 11 | static const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week 12 | 13 | @implementation SDImageCacheConfig 14 | 15 | - (instancetype)init { 16 | if (self = [super init]) { 17 | _shouldDecompressImages = YES; 18 | _shouldDisableiCloud = YES; 19 | _shouldCacheImagesInMemory = YES; 20 | _diskCacheReadingOptions = 0; 21 | _diskCacheWritingOptions = NSDataWritingAtomic; 22 | _maxCacheAge = kDefaultCacheMaxCacheAge; 23 | _maxCacheSize = 0; 24 | } 25 | return self; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDWebImageCoder.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCoder.h" 10 | 11 | NSString * const SDWebImageCoderScaleDownLargeImagesKey = @"scaleDownLargeImages"; 12 | 13 | CGColorSpaceRef SDCGColorSpaceGetDeviceRGB(void) { 14 | static CGColorSpaceRef colorSpace; 15 | static dispatch_once_t onceToken; 16 | dispatch_once(&onceToken, ^{ 17 | colorSpace = CGColorSpaceCreateDeviceRGB(); 18 | }); 19 | return colorSpace; 20 | } 21 | 22 | BOOL SDCGImageRefContainsAlpha(CGImageRef imageRef) { 23 | if (!imageRef) { 24 | return NO; 25 | } 26 | CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef); 27 | BOOL hasAlpha = !(alphaInfo == kCGImageAlphaNone || 28 | alphaInfo == kCGImageAlphaNoneSkipFirst || 29 | alphaInfo == kCGImageAlphaNoneSkipLast); 30 | return hasAlpha; 31 | } 32 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDWebImageCoderHelper.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCompat.h" 11 | #import "SDWebImageFrame.h" 12 | 13 | @interface SDWebImageCoderHelper : NSObject 14 | 15 | /** 16 | Return an animated image with frames array. 17 | For UIKit, this will apply the patch and then create animated UIImage. The patch is because that `+[UIImage animatedImageWithImages:duration:]` just use the average of duration for each image. So it will not work if different frame has different duration. Therefore we repeat the specify frame for specify times to let it work. 18 | For AppKit, NSImage does not support animates other than GIF. This will try to encode the frames to GIF format and then create an animated NSImage for rendering. Attention the animated image may loss some detail if the input frames contain full alpha channel because GIF only supports 1 bit alpha channel. (For 1 pixel, either transparent or not) 19 | 20 | @param frames The frames array. If no frames or frames is empty, return nil 21 | @return A animated image for rendering on UIImageView(UIKit) or NSImageView(AppKit) 22 | */ 23 | + (UIImage * _Nullable)animatedImageWithFrames:(NSArray * _Nullable)frames; 24 | 25 | /** 26 | Return frames array from an animated image. 27 | For UIKit, this will unapply the patch for the description above and then create frames array. This will also work for normal animated UIImage. 28 | For AppKit, NSImage does not support animates other than GIF. This will try to decode the GIF imageRep and then create frames array. 29 | 30 | @param animatedImage A animated image. If it's not animated, return nil 31 | @return The frames array 32 | */ 33 | + (NSArray * _Nullable)framesFromAnimatedImage:(UIImage * _Nullable)animatedImage; 34 | 35 | #if SD_UIKIT || SD_WATCH 36 | /** 37 | Convert an EXIF image orientation to an iOS one. 38 | 39 | @param exifOrientation EXIF orientation 40 | @return iOS orientation 41 | */ 42 | + (UIImageOrientation)imageOrientationFromEXIFOrientation:(NSInteger)exifOrientation; 43 | /** 44 | Convert an iOS orientation to an EXIF image orientation. 45 | 46 | @param imageOrientation iOS orientation 47 | @return EXIF orientation 48 | */ 49 | + (NSInteger)exifOrientationFromImageOrientation:(UIImageOrientation)imageOrientation; 50 | #endif 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDWebImageCodersManager.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCoder.h" 11 | 12 | /** 13 | Global object holding the array of coders, so that we avoid passing them from object to object. 14 | Uses a priority queue behind scenes, which means the latest added coders have the highest priority. 15 | This is done so when encoding/decoding something, we go through the list and ask each coder if they can handle the current data. 16 | That way, users can add their custom coders while preserving our existing prebuilt ones 17 | 18 | Note: the `coders` getter will return the coders in their reversed order 19 | Example: 20 | - by default we internally set coders = `IOCoder`, `WebPCoder`. (`GIFCoder` is not recommended to add only if you want to get GIF support without `FLAnimatedImage`) 21 | - calling `coders` will return `@[WebPCoder, IOCoder]` 22 | - call `[addCoder:[MyCrazyCoder new]]` 23 | - calling `coders` now returns `@[MyCrazyCoder, WebPCoder, IOCoder]` 24 | 25 | Coders 26 | ------ 27 | A coder must conform to the `SDWebImageCoder` protocol or even to `SDWebImageProgressiveCoder` if it supports progressive decoding 28 | Conformance is important because that way, they will implement `canDecodeFromData` or `canEncodeToFormat` 29 | Those methods are called on each coder in the array (using the priority order) until one of them returns YES. 30 | That means that coder can decode that data / encode to that format 31 | */ 32 | @interface SDWebImageCodersManager : NSObject 33 | 34 | /** 35 | Shared reusable instance 36 | */ 37 | + (nonnull instancetype)sharedInstance; 38 | 39 | /** 40 | All coders in coders manager. The coders array is a priority queue, which means the later added coder will have the highest priority 41 | */ 42 | @property (nonatomic, strong, readwrite, nullable) NSArray* coders; 43 | 44 | /** 45 | Add a new coder to the end of coders array. Which has the highest priority. 46 | 47 | @param coder coder 48 | */ 49 | - (void)addCoder:(nonnull id)coder; 50 | 51 | /** 52 | Remove a coder in the coders array. 53 | 54 | @param coder coder 55 | */ 56 | - (void)removeCoder:(nonnull id)coder; 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | #import "UIImage+MultiFormat.h" 11 | 12 | #if !__has_feature(objc_arc) 13 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag 14 | #endif 15 | 16 | #if !OS_OBJECT_USE_OBJC 17 | #error SDWebImage need ARC for dispatch object 18 | #endif 19 | 20 | inline UIImage *SDScaledImageForKey(NSString * _Nullable key, UIImage * _Nullable image) { 21 | if (!image) { 22 | return nil; 23 | } 24 | 25 | #if SD_MAC 26 | return image; 27 | #elif SD_UIKIT || SD_WATCH 28 | if ((image.images).count > 0) { 29 | NSMutableArray *scaledImages = [NSMutableArray array]; 30 | 31 | for (UIImage *tempImage in image.images) { 32 | [scaledImages addObject:SDScaledImageForKey(key, tempImage)]; 33 | } 34 | 35 | UIImage *animatedImage = [UIImage animatedImageWithImages:scaledImages duration:image.duration]; 36 | if (animatedImage) { 37 | animatedImage.sd_imageLoopCount = image.sd_imageLoopCount; 38 | } 39 | return animatedImage; 40 | } else { 41 | #if SD_WATCH 42 | if ([[WKInterfaceDevice currentDevice] respondsToSelector:@selector(screenScale)]) { 43 | #elif SD_UIKIT 44 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { 45 | #endif 46 | CGFloat scale = 1; 47 | if (key.length >= 8) { 48 | NSRange range = [key rangeOfString:@"@2x."]; 49 | if (range.location != NSNotFound) { 50 | scale = 2.0; 51 | } 52 | 53 | range = [key rangeOfString:@"@3x."]; 54 | if (range.location != NSNotFound) { 55 | scale = 3.0; 56 | } 57 | } 58 | 59 | UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; 60 | image = scaledImage; 61 | } 62 | return image; 63 | } 64 | #endif 65 | } 66 | 67 | NSString *const SDWebImageErrorDomain = @"SDWebImageErrorDomain"; 68 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDWebImageFrame.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCompat.h" 11 | 12 | @interface SDWebImageFrame : NSObject 13 | 14 | // This class is used for creating animated images via `animatedImageWithFrames` in `SDWebImageCoderHelper`. Attention if you need to specify animated images loop count, use `sd_imageLoopCount` property in `UIImage+MultiFormat`. 15 | 16 | /** 17 | The image of current frame. You should not set an animated image. 18 | */ 19 | @property (nonatomic, strong, readonly, nonnull) UIImage *image; 20 | /** 21 | The duration of current frame to be displayed. The number is seconds but not milliseconds. You should not set this to zero. 22 | */ 23 | @property (nonatomic, readonly, assign) NSTimeInterval duration; 24 | 25 | /** 26 | Create a frame instance with specify image and duration 27 | 28 | @param image current frame's image 29 | @param duration current frame's duration 30 | @return frame instance 31 | */ 32 | + (instancetype _Nonnull)frameWithImage:(UIImage * _Nonnull)image duration:(NSTimeInterval)duration; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDWebImageFrame.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageFrame.h" 10 | 11 | @interface SDWebImageFrame () 12 | 13 | @property (nonatomic, strong, readwrite, nonnull) UIImage *image; 14 | @property (nonatomic, readwrite, assign) NSTimeInterval duration; 15 | 16 | @end 17 | 18 | @implementation SDWebImageFrame 19 | 20 | + (instancetype)frameWithImage:(UIImage *)image duration:(NSTimeInterval)duration { 21 | SDWebImageFrame *frame = [[SDWebImageFrame alloc] init]; 22 | frame.image = image; 23 | frame.duration = duration; 24 | 25 | return frame; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDWebImageGIFCoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCoder.h" 11 | 12 | /** 13 | Built in coder using ImageIO that supports GIF encoding/decoding 14 | @note `SDWebImageIOCoder` supports GIF but only as static (will use the 1st frame). 15 | @note Use `SDWebImageGIFCoder` for fully animated GIFs - less performant than `FLAnimatedImage` 16 | @note If you decide to make all `UIImageView`(including `FLAnimatedImageView`) instance support GIF. You should add this coder to `SDWebImageCodersManager` and make sure that it has a higher priority than `SDWebImageIOCoder` 17 | @note The recommended approach for animated GIFs is using `FLAnimatedImage`. It's more performant than `UIImageView` for GIF displaying 18 | */ 19 | @interface SDWebImageGIFCoder : NSObject 20 | 21 | + (nonnull instancetype)sharedCoder; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDWebImageImageIOCoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCoder.h" 11 | 12 | /** 13 | Built in coder that supports PNG, JPEG, TIFF, includes support for progressive decoding. 14 | 15 | GIF 16 | Also supports static GIF (meaning will only handle the 1st frame). 17 | For a full GIF support, we recommend `FLAnimatedImage` or our less performant `SDWebImageGIFCoder` 18 | 19 | HEIC 20 | This coder also supports HEIC format because ImageIO supports it natively. But it depends on the system capabilities, so it won't work on all devices, see: https://devstreaming-cdn.apple.com/videos/wwdc/2017/511tj33587vdhds/511/511_working_with_heif_and_hevc.pdf 21 | Decode(Software): !Simulator && (iOS 11 || tvOS 11 || macOS 10.13) 22 | Decode(Hardware): !Simulator && ((iOS 11 && A9Chip) || (macOS 10.13 && 6thGenerationIntelCPU)) 23 | Encode(Software): macOS 10.13 24 | Encode(Hardware): !Simulator && ((iOS 11 && A10FusionChip) || (macOS 10.13 && 6thGenerationIntelCPU)) 25 | */ 26 | @interface SDWebImageImageIOCoder : NSObject 27 | 28 | + (nonnull instancetype)sharedCoder; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | 11 | @protocol SDWebImageOperation 12 | 13 | - (void)cancel; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | @interface UIImage (ForceDecode) 12 | 13 | + (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image; 14 | 15 | + (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIImage+ForceDecode.h" 10 | #import "SDWebImageCodersManager.h" 11 | 12 | @implementation UIImage (ForceDecode) 13 | 14 | + (UIImage *)decodedImageWithImage:(UIImage *)image { 15 | if (!image) { 16 | return nil; 17 | } 18 | NSData *tempData; 19 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(NO)}]; 20 | } 21 | 22 | + (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image { 23 | if (!image) { 24 | return nil; 25 | } 26 | NSData *tempData; 27 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(YES)}]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Laurin Brandner 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import "SDWebImageCompat.h" 11 | 12 | @interface UIImage (GIF) 13 | 14 | /** 15 | * Creates an animated UIImage from an NSData. 16 | * For static GIF, will create an UIImage with `images` array set to nil. For animated GIF, will create an UIImage with valid `images` array. 17 | */ 18 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data; 19 | 20 | /** 21 | * Checks if an UIImage instance is a GIF. Will use the `images` array. 22 | */ 23 | - (BOOL)isGIF; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/UIImage+GIF.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Laurin Brandner 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import "UIImage+GIF.h" 11 | #import "SDWebImageGIFCoder.h" 12 | #import "NSImage+WebCache.h" 13 | 14 | @implementation UIImage (GIF) 15 | 16 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data { 17 | if (!data) { 18 | return nil; 19 | } 20 | return [[SDWebImageGIFCoder sharedCoder] decodedImageWithData:data]; 21 | } 22 | 23 | - (BOOL)isGIF { 24 | return (self.images != nil); 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | #import "NSData+ImageContentType.h" 11 | 12 | @interface UIImage (MultiFormat) 13 | 14 | /** 15 | * UIKit: 16 | * For static image format, this value is always 0. 17 | * For animated image format, 0 means infinite looping. 18 | * Note that because of the limitations of categories this property can get out of sync if you create another instance with CGImage or other methods. 19 | * AppKit: 20 | * NSImage currently only support animated via GIF imageRep unlike UIImage. 21 | * The getter of this property will get the loop count from GIF imageRep 22 | * The setter of this property will set the loop count from GIF imageRep 23 | */ 24 | @property (nonatomic, assign) NSUInteger sd_imageLoopCount; 25 | 26 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data; 27 | - (nullable NSData *)sd_imageData; 28 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIImage+MultiFormat.h" 10 | 11 | #import "objc/runtime.h" 12 | #import "SDWebImageCodersManager.h" 13 | 14 | @implementation UIImage (MultiFormat) 15 | 16 | #if SD_MAC 17 | - (NSUInteger)sd_imageLoopCount { 18 | NSUInteger imageLoopCount = 0; 19 | for (NSImageRep *rep in self.representations) { 20 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) { 21 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep; 22 | imageLoopCount = [[bitmapRep valueForProperty:NSImageLoopCount] unsignedIntegerValue]; 23 | break; 24 | } 25 | } 26 | return imageLoopCount; 27 | } 28 | 29 | - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { 30 | for (NSImageRep *rep in self.representations) { 31 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) { 32 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep; 33 | [bitmapRep setProperty:NSImageLoopCount withValue:@(sd_imageLoopCount)]; 34 | break; 35 | } 36 | } 37 | } 38 | 39 | #else 40 | 41 | - (NSUInteger)sd_imageLoopCount { 42 | NSUInteger imageLoopCount = 0; 43 | NSNumber *value = objc_getAssociatedObject(self, @selector(sd_imageLoopCount)); 44 | if ([value isKindOfClass:[NSNumber class]]) { 45 | imageLoopCount = value.unsignedIntegerValue; 46 | } 47 | return imageLoopCount; 48 | } 49 | 50 | - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { 51 | NSNumber *value = @(sd_imageLoopCount); 52 | objc_setAssociatedObject(self, @selector(sd_imageLoopCount), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 53 | } 54 | #endif 55 | 56 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data { 57 | return [[SDWebImageCodersManager sharedInstance] decodedImageWithData:data]; 58 | } 59 | 60 | - (nullable NSData *)sd_imageData { 61 | return [self sd_imageDataAsFormat:SDImageFormatUndefined]; 62 | } 63 | 64 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat { 65 | NSData *imageData = nil; 66 | if (self) { 67 | imageData = [[SDWebImageCodersManager sharedInstance] encodedDataWithImage:self format:imageFormat]; 68 | } 69 | return imageData; 70 | } 71 | 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIImageView+HighlightedWebCache.h" 10 | 11 | #if SD_UIKIT 12 | 13 | #import "UIView+WebCacheOperation.h" 14 | #import "UIView+WebCache.h" 15 | 16 | @implementation UIImageView (HighlightedWebCache) 17 | 18 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url { 19 | [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:nil]; 20 | } 21 | 22 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options { 23 | [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:nil]; 24 | } 25 | 26 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock { 27 | [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:completedBlock]; 28 | } 29 | 30 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock { 31 | [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:completedBlock]; 32 | } 33 | 34 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url 35 | options:(SDWebImageOptions)options 36 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock 37 | completed:(nullable SDExternalCompletionBlock)completedBlock { 38 | __weak typeof(self)weakSelf = self; 39 | [self sd_internalSetImageWithURL:url 40 | placeholderImage:nil 41 | options:options 42 | operationKey:@"UIImageViewImageOperationHighlighted" 43 | setImageBlock:^(UIImage *image, NSData *imageData) { 44 | weakSelf.highlightedImage = image; 45 | } 46 | progress:progressBlock 47 | completed:completedBlock]; 48 | } 49 | 50 | @end 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /swift_project/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | #if SD_UIKIT || SD_MAC 12 | 13 | #import "SDWebImageManager.h" 14 | 15 | // These methods are used to support canceling for UIView image loading, it's designed to be used internal but not external. 16 | // All the stored operations are weak, so it will be dalloced after image loading finished. If you need to store operations, use your own class to keep a strong reference for them. 17 | @interface UIView (WebCacheOperation) 18 | 19 | /** 20 | * Set the image load operation (storage in a UIView based weak map table) 21 | * 22 | * @param operation the operation 23 | * @param key key for storing the operation 24 | */ 25 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key; 26 | 27 | /** 28 | * Cancel all operations for the current UIView and key 29 | * 30 | * @param key key for identifying the operations 31 | */ 32 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key; 33 | 34 | /** 35 | * Just remove the operations corresponding to the current UIView and key without cancelling them 36 | * 37 | * @param key key for identifying the operations 38 | */ 39 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key; 40 | 41 | @end 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2011-2018 Sam Vermette, Tobias Tiemerding and contributors. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVIndefiniteAnimatedView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVIndefiniteAnimatedView.h 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2014-2018 Guillaume Campagna. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface SVIndefiniteAnimatedView : UIView 11 | 12 | @property (nonatomic, assign) CGFloat strokeThickness; 13 | @property (nonatomic, assign) CGFloat radius; 14 | @property (nonatomic, strong) UIColor *strokeColor; 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressAnimatedView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVProgressAnimatedView.h 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2017-2018 Tobias Tiemerding. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface SVProgressAnimatedView : UIView 11 | 12 | @property (nonatomic, assign) CGFloat radius; 13 | @property (nonatomic, assign) CGFloat strokeThickness; 14 | @property (nonatomic, strong) UIColor *strokeColor; 15 | @property (nonatomic, assign) CGFloat strokeEnd; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@2x.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@3x.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@2x.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@3x.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@2x.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@3x.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@2x.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@3x.png -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVRadialGradientLayer.h 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2014-2018 Tobias Tiemerding. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface SVRadialGradientLayer : CALayer 11 | 12 | @property (nonatomic) CGPoint gradientCenter; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /swift_project/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.m: -------------------------------------------------------------------------------- 1 | // 2 | // SVRadialGradientLayer.m 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2014-2018 Tobias Tiemerding. All rights reserved. 6 | // 7 | 8 | #import "SVRadialGradientLayer.h" 9 | 10 | @implementation SVRadialGradientLayer 11 | 12 | - (void)drawInContext:(CGContextRef)context { 13 | size_t locationsCount = 2; 14 | CGFloat locations[2] = {0.0f, 1.0f}; 15 | CGFloat colors[8] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.75f}; 16 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 17 | CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, colors, locations, locationsCount); 18 | CGColorSpaceRelease(colorSpace); 19 | 20 | float radius = MIN(self.bounds.size.width , self.bounds.size.height); 21 | CGContextDrawRadialGradient (context, gradient, self.gradientCenter, 0, self.gradientCenter, radius, kCGGradientDrawsAfterEndLocation); 22 | CGGradientRelease(gradient); 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /swift_project/Pods/SwiftyJSON/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Ruoyu Fu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /swift_project/Pods/TYAlertController/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 tany 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 | -------------------------------------------------------------------------------- /swift_project/Pods/TYAlertController/TYAlertControllerDemo/TYAlertController/TYAlertController+TransitionAnimate.m: -------------------------------------------------------------------------------- 1 | // 2 | // TYAlertController+TransitionAnimate.m 3 | // TYAlertControllerDemo 4 | // 5 | // Created by tanyang on 15/9/1. 6 | // Copyright (c) 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "TYAlertController.h" 10 | #import "TYAlertFadeAnimation.h" 11 | #import "TYAlertScaleFadeAnimation.h" 12 | #import "TYAlertDropDownAnimation.h" 13 | 14 | @implementation TYAlertController (TransitionAnimate) 15 | 16 | #pragma mark - UIViewControllerTransitioningDelegate 17 | 18 | - (id)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source 19 | { 20 | switch (self.transitionAnimation) { 21 | case TYAlertTransitionAnimationFade: 22 | return [TYAlertFadeAnimation alertAnimationIsPresenting:YES]; 23 | case TYAlertTransitionAnimationScaleFade: 24 | return [TYAlertScaleFadeAnimation alertAnimationIsPresenting:YES]; 25 | case TYAlertTransitionAnimationDropDown: 26 | return [TYAlertDropDownAnimation alertAnimationIsPresenting:YES]; 27 | case TYAlertTransitionAnimationCustom: 28 | return [self.transitionAnimationClass alertAnimationIsPresenting:YES preferredStyle:self.preferredStyle]; 29 | default: 30 | return nil; 31 | } 32 | } 33 | 34 | - (id)animationControllerForDismissedController:(UIViewController *)dismissed 35 | { 36 | switch (self.transitionAnimation) { 37 | case TYAlertTransitionAnimationFade: 38 | return [TYAlertFadeAnimation alertAnimationIsPresenting:NO]; 39 | case TYAlertTransitionAnimationScaleFade: 40 | return [TYAlertScaleFadeAnimation alertAnimationIsPresenting:NO]; 41 | case TYAlertTransitionAnimationDropDown: 42 | return [TYAlertDropDownAnimation alertAnimationIsPresenting:NO]; 43 | case TYAlertTransitionAnimationCustom: 44 | return [self.transitionAnimationClass alertAnimationIsPresenting:NO preferredStyle:self.preferredStyle]; 45 | default: 46 | return nil; 47 | } 48 | } 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /swift_project/Pods/TYAlertController/TYAlertControllerDemo/TYAlertController/TYAlertDropDownAnimation.h: -------------------------------------------------------------------------------- 1 | // 2 | // TYAlertDropDownAnimation.h 3 | // TYAlertControllerDemo 4 | // 5 | // Created by tanyang on 15/10/27. 6 | // Copyright © 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "TYBaseAnimation.h" 10 | 11 | @interface TYAlertDropDownAnimation : TYBaseAnimation 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /swift_project/Pods/TYAlertController/TYAlertControllerDemo/TYAlertController/TYAlertFadeAnimation.h: -------------------------------------------------------------------------------- 1 | // 2 | // TYAlertDefaultAnimation.h 3 | // TYAlertControllerDemo 4 | // 5 | // Created by SunYong on 15/9/1. 6 | // Copyright (c) 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "TYBaseAnimation.h" 10 | 11 | @interface TYAlertFadeAnimation : TYBaseAnimation 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /swift_project/Pods/TYAlertController/TYAlertControllerDemo/TYAlertController/TYAlertScaleFadeAnimation.h: -------------------------------------------------------------------------------- 1 | // 2 | // TYAlertScaleFadeAnimation.h 3 | // TYAlertControllerDemo 4 | // 5 | // Created by SunYong on 15/9/2. 6 | // Copyright (c) 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "TYBaseAnimation.h" 10 | 11 | @interface TYAlertScaleFadeAnimation : TYBaseAnimation 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /swift_project/Pods/TYAlertController/TYAlertControllerDemo/TYAlertController/TYBaseAnimation.h: -------------------------------------------------------------------------------- 1 | // 2 | // TYBaseAnimation.h 3 | // TYAlertControllerDemo 4 | // 5 | // Created by SunYong on 15/9/1. 6 | // Copyright (c) 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TYAlertController.h" 11 | 12 | @interface TYBaseAnimation : NSObject 13 | 14 | @property (nonatomic, assign, readonly) BOOL isPresenting; // present . dismiss 15 | 16 | + (instancetype)alertAnimationIsPresenting:(BOOL)isPresenting; 17 | 18 | // if you only want alert or actionsheet style ,you can judge that you don't need and return nil 19 | // code : only support alert style 20 | // if (preferredStyle == TYAlertControllerStyleAlert) { 21 | // return [super alertAnimationIsPresenting:isPresenting]; 22 | // } 23 | // return nil; 24 | + (instancetype)alertAnimationIsPresenting:(BOOL)isPresenting preferredStyle:(TYAlertControllerStyle) preferredStyle; 25 | 26 | 27 | // override transiton time 28 | - (NSTimeInterval)transitionDuration:(id)transitionContext; 29 | 30 | // override present 31 | - (void)presentAnimateTransition:(id)transitionContext; 32 | 33 | // override dismiss 34 | - (void)dismissAnimateTransition:(id)transitionContext; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /swift_project/Pods/TYAlertController/TYAlertControllerDemo/TYAlertController/TYBaseAnimation.m: -------------------------------------------------------------------------------- 1 | // 2 | // TYBaseAnimation.m 3 | // TYAlertControllerDemo 4 | // 5 | // Created by SunYong on 15/9/1. 6 | // Copyright (c) 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import "TYBaseAnimation.h" 10 | 11 | @interface TYBaseAnimation () 12 | @property (nonatomic, assign) BOOL isPresenting; 13 | @end 14 | 15 | @implementation TYBaseAnimation 16 | 17 | - (instancetype)initWithIsPresenting:(BOOL)isPresenting 18 | { 19 | if (self = [super init]) { 20 | self.isPresenting = isPresenting; 21 | } 22 | return self; 23 | } 24 | 25 | + (instancetype)alertAnimationIsPresenting:(BOOL)isPresenting 26 | { 27 | return [[self alloc]initWithIsPresenting:isPresenting]; 28 | } 29 | 30 | + (instancetype)alertAnimationIsPresenting:(BOOL)isPresenting preferredStyle:(TYAlertControllerStyle)preferredStyle 31 | { 32 | return [[self alloc]initWithIsPresenting:isPresenting]; 33 | } 34 | 35 | // override this moethod 36 | - (NSTimeInterval)transitionDuration:(id)transitionContext 37 | { 38 | return 0.4; 39 | } 40 | 41 | - (void)animateTransition:(id)transitionContext 42 | { 43 | if (_isPresenting) { 44 | [self presentAnimateTransition:transitionContext]; 45 | }else { 46 | [self dismissAnimateTransition:transitionContext]; 47 | } 48 | } 49 | 50 | - (void)presentAnimateTransition:(id)transitionContext 51 | { 52 | 53 | } 54 | 55 | - (void)dismissAnimateTransition:(id)transitionContext 56 | { 57 | 58 | } 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /swift_project/Pods/TYAlertController/TYAlertControllerDemo/TYAlertController/TYShowAlertView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TYShowAlertView.h 3 | // TYAlertControllerDemo 4 | // 5 | // Created by tanyang on 15/3/16. 6 | // Copyright (c) 2015年 mark. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TYShowAlertView : UIView 12 | 13 | @property (nonatomic, weak, readonly) UIView *alertView; 14 | @property (nonatomic, strong) UIView *backgroundView; 15 | 16 | @property (nonatomic, assign) BOOL backgoundTapDismissEnable; // default NO 17 | @property (nonatomic, assign) CGFloat alertViewOriginY; // default center Y 18 | @property (nonatomic, assign) CGFloat alertViewEdging; // default 15 19 | 20 | +(void)showAlertViewWithView:(UIView *)alertView; 21 | 22 | + (void)showAlertViewWithView:(UIView *)alertView backgoundTapDismissEnable:(BOOL)backgoundTapDismissEnable; 23 | 24 | +(void)showAlertViewWithView:(UIView *)alertView originY:(CGFloat)originY; 25 | 26 | +(void)showAlertViewWithView:(UIView *)alertView originY:(CGFloat)originY backgoundTapDismissEnable:(BOOL)backgoundTapDismissEnable; 27 | 28 | + (instancetype)alertViewWithView:(UIView *)alertView; 29 | 30 | - (void)show; 31 | 32 | - (void)hide; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /swift_project/Pods/TYAlertController/TYAlertControllerDemo/TYAlertController/UIView+TYAlertView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+TYAlertView.h 3 | // TYAlertControllerDemo 4 | // 5 | // Created by tanyang on 15/9/7. 6 | // Copyright (c) 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TYAlertController.h" 11 | #import "TYShowAlertView.h" 12 | 13 | @interface UIView (TYAlertView) 14 | 15 | + (instancetype)createViewFromNib; 16 | 17 | + (instancetype)createViewFromNibName:(NSString *)nibName; 18 | 19 | - (UIViewController*)viewController; 20 | 21 | #pragma mark - show in controller 22 | 23 | - (void)showInController:(UIViewController *)viewController; 24 | 25 | - (void)showInController:(UIViewController *)viewController preferredStyle:(TYAlertControllerStyle)preferredStyle; 26 | 27 | // backgoundTapDismissEnable default NO 28 | - (void)showInController:(UIViewController *)viewController preferredStyle:(TYAlertControllerStyle)preferredStyle backgoundTapDismissEnable:(BOOL)backgoundTapDismissEnable; 29 | 30 | - (void)showInController:(UIViewController *)viewController preferredStyle:(TYAlertControllerStyle)preferredStyle transitionAnimation:(TYAlertTransitionAnimation)transitionAnimation; 31 | 32 | - (void)showInController:(UIViewController *)viewController preferredStyle:(TYAlertControllerStyle)preferredStyle transitionAnimation:(TYAlertTransitionAnimation)transitionAnimation backgoundTapDismissEnable:(BOOL)backgoundTapDismissEnable; 33 | 34 | #pragma mark - show in window 35 | 36 | - (void)showInWindow; 37 | 38 | // backgoundTapDismissEnable default NO 39 | - (void)showInWindowWithBackgoundTapDismissEnable:(BOOL)backgoundTapDismissEnable; 40 | 41 | - (void)showInWindowWithOriginY:(CGFloat)OriginY; 42 | 43 | - (void)showInWindowWithOriginY:(CGFloat)OriginY backgoundTapDismissEnable:(BOOL)backgoundTapDismissEnable; 44 | 45 | 46 | #pragma mark - hide 47 | 48 | // this will judge and call right method 49 | - (void)hideView; 50 | 51 | - (void)hideInController; 52 | 53 | - (void)hideInWindow; 54 | 55 | @end -------------------------------------------------------------------------------- /swift_project/Pods/TYAlertController/TYAlertControllerDemo/TYAlertController/UIView+TYAutoLayout.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+TYAutoLayout.h 3 | // TYAlertControllerDemo 4 | // 5 | // Created by tanyang on 15/9/8. 6 | // Copyright (c) 2015年 tanyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (TYAutoLayout) 12 | 13 | - (void)addConstraintToView:(UIView *)view edgeInset:(UIEdgeInsets)edgeInset; 14 | 15 | - (void)addConstraintWithView:(UIView *)view topView:(UIView *)topView leftView:(UIView *)leftView 16 | bottomView:(UIView *)bottomView rightView:(UIView *)rightView edgeInset:(UIEdgeInsets)edgeInset; 17 | 18 | - (void)addConstraintWithLeftView:(UIView *)leftView toRightView:(UIView *)rightView constant:(CGFloat)constant; 19 | 20 | - (NSLayoutConstraint *)addConstraintWithTopView:(UIView *)topView toBottomView:(UIView *)bottomView constant:(CGFloat)constant; 21 | 22 | - (void)addConstraintWidth:(CGFloat)width height:(CGFloat)height; 23 | 24 | - (void)addConstraintEqualWithView:(UIView *)view widthToView:(UIView *)wView heightToView:(UIView *)hView; 25 | 26 | - (NSLayoutConstraint *)addConstraintCenterYToView:(UIView *)yView constant:(CGFloat)constant; 27 | 28 | - (void)addConstraintCenterXToView:(UIView *)xView centerYToView:(UIView *)yView; 29 | 30 | - (void)removeConstraintWithAttribte:(NSLayoutAttribute)attr; 31 | 32 | - (void)removeConstraintWithView:(UIView *)view attribute:(NSLayoutAttribute)attr; 33 | 34 | - (void)removeAllConstraints; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/Alamofire/Alamofire-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Alamofire : NSObject 3 | @end 4 | @implementation PodsDummy_Alamofire 5 | @end 6 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/Alamofire/Alamofire.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 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}/Alamofire 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/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.7.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/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.15 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MJRefresh : NSObject 3 | @end 4 | @implementation PodsDummy_MJRefresh 5 | @end 6 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/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 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 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}/MJRefresh 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/Pods-swift_project/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 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/Pods-swift_project/Pods-swift_project-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_swift_project : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_swift_project 5 | @end 6 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/Pods-swift_project/Pods-swift_project-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_swift_projectVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_swift_projectVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/Pods-swift_project/Pods-swift_project.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/TYAlertController" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD/SVProgressHUD.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/TYAlertController/TYAlertController.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "MJRefresh" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "SVProgressHUD" -framework "SwiftyJSON" -framework "TYAlertController" 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 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/Pods-swift_project/Pods-swift_project.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_swift_project { 2 | umbrella header "Pods-swift_project-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/Pods-swift_project/Pods-swift_project.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/TYAlertController" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD/SVProgressHUD.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/TYAlertController/TYAlertController.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "MJRefresh" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "SVProgressHUD" -framework "SwiftyJSON" -framework "TYAlertController" 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 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDCycleScrollView/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.75.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SDCycleScrollView : NSObject 3 | @end 4 | @implementation PodsDummy_SDCycleScrollView 5 | @end 6 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView-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 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView-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 "TAAbstractDotView.h" 14 | #import "TAAnimatedDotView.h" 15 | #import "TADotView.h" 16 | #import "TAPageControl.h" 17 | #import "SDCollectionViewCell.h" 18 | #import "SDCycleScrollView.h" 19 | #import "UIView+SDExtension.h" 20 | 21 | FOUNDATION_EXPORT double SDCycleScrollViewVersionNumber; 22 | FOUNDATION_EXPORT const unsigned char SDCycleScrollViewVersionString[]; 23 | 24 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView.modulemap: -------------------------------------------------------------------------------- 1 | framework module SDCycleScrollView { 2 | umbrella header "SDCycleScrollView-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDCycleScrollView/SDCycleScrollView.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 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}/SDCycleScrollView 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDWebImage/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.3.3 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SDWebImage : NSObject 3 | @end 4 | @implementation PodsDummy_SDWebImage 5 | @end 6 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDWebImage/SDWebImage-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 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDWebImage/SDWebImage-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 "NSButton+WebCache.h" 14 | #import "NSData+ImageContentType.h" 15 | #import "NSImage+WebCache.h" 16 | #import "SDAnimatedImageRep.h" 17 | #import "SDImageCache.h" 18 | #import "SDImageCacheConfig.h" 19 | #import "SDWebImageCoder.h" 20 | #import "SDWebImageCoderHelper.h" 21 | #import "SDWebImageCodersManager.h" 22 | #import "SDWebImageCompat.h" 23 | #import "SDWebImageDownloader.h" 24 | #import "SDWebImageDownloaderOperation.h" 25 | #import "SDWebImageFrame.h" 26 | #import "SDWebImageGIFCoder.h" 27 | #import "SDWebImageImageIOCoder.h" 28 | #import "SDWebImageManager.h" 29 | #import "SDWebImageOperation.h" 30 | #import "SDWebImagePrefetcher.h" 31 | #import "SDWebImageTransition.h" 32 | #import "UIButton+WebCache.h" 33 | #import "UIImage+ForceDecode.h" 34 | #import "UIImage+GIF.h" 35 | #import "UIImage+MultiFormat.h" 36 | #import "UIImageView+HighlightedWebCache.h" 37 | #import "UIImageView+WebCache.h" 38 | #import "UIView+WebCache.h" 39 | #import "UIView+WebCacheOperation.h" 40 | 41 | FOUNDATION_EXPORT double SDWebImageVersionNumber; 42 | FOUNDATION_EXPORT const unsigned char SDWebImageVersionString[]; 43 | 44 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap: -------------------------------------------------------------------------------- 1 | framework module SDWebImage { 2 | umbrella header "SDWebImage-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "ImageIO" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SVProgressHUD/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.2.5 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SVProgressHUD : NSObject 3 | @end 4 | @implementation PodsDummy_SVProgressHUD 5 | @end 6 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "SVIndefiniteAnimatedView.h" 14 | #import "SVProgressAnimatedView.h" 15 | #import "SVProgressHUD.h" 16 | #import "SVRadialGradientLayer.h" 17 | 18 | FOUNDATION_EXPORT double SVProgressHUDVersionNumber; 19 | FOUNDATION_EXPORT const unsigned char SVProgressHUDVersionString[]; 20 | 21 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SVProgressHUD/SVProgressHUD.modulemap: -------------------------------------------------------------------------------- 1 | framework module SVProgressHUD { 2 | umbrella header "SVProgressHUD-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SVProgressHUD/SVProgressHUD.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_LDFLAGS = -framework "QuartzCore" 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}/SVProgressHUD 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SwiftyJSON/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.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SwiftyJSON : NSObject 3 | @end 4 | @implementation PodsDummy_SwiftyJSON 5 | @end 6 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-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 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-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 SwiftyJSONVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char SwiftyJSONVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap: -------------------------------------------------------------------------------- 1 | framework module SwiftyJSON { 2 | umbrella header "SwiftyJSON-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 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}/SwiftyJSON 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/TYAlertController/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.2.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/TYAlertController/TYAlertController-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_TYAlertController : NSObject 3 | @end 4 | @implementation PodsDummy_TYAlertController 5 | @end 6 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/TYAlertController/TYAlertController-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 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/TYAlertController/TYAlertController-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 "TYAlertController.h" 14 | #import "TYAlertDropDownAnimation.h" 15 | #import "TYAlertFadeAnimation.h" 16 | #import "TYAlertScaleFadeAnimation.h" 17 | #import "TYAlertView.h" 18 | #import "TYBaseAnimation.h" 19 | #import "TYShowAlertView.h" 20 | #import "UIView+TYAlertView.h" 21 | #import "UIView+TYAutoLayout.h" 22 | 23 | FOUNDATION_EXPORT double TYAlertControllerVersionNumber; 24 | FOUNDATION_EXPORT const unsigned char TYAlertControllerVersionString[]; 25 | 26 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/TYAlertController/TYAlertController.modulemap: -------------------------------------------------------------------------------- 1 | framework module TYAlertController { 2 | umbrella header "TYAlertController-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /swift_project/Pods/Target Support Files/TYAlertController/TYAlertController.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/TYAlertController 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 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}/TYAlertController 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /swift_project/swift_project.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /swift_project/swift_project.xcodeproj/project.xcworkspace/xcuserdata/gaojun.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project.xcodeproj/project.xcworkspace/xcuserdata/gaojun.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /swift_project/swift_project.xcodeproj/xcuserdata/gaojun.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Zhsyd_Swift.xcscheme 8 | 9 | orderHint 10 | 8 11 | 12 | swift_project.xcscheme 13 | 14 | orderHint 15 | 8 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /swift_project/swift_project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /swift_project/swift_project.xcworkspace/xcuserdata/gaojun.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project.xcworkspace/xcuserdata/gaojun.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /swift_project/swift_project/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/Assets.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" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /swift_project/swift_project/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /swift_project/swift_project/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /swift_project/swift_project/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /swift_project/swift_project/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /swift_project/swift_project/PrefixHeader.pch: -------------------------------------------------------------------------------- 1 | // 2 | // PrefixHeader.pch 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/2. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | #ifndef PrefixHeader_pch 10 | #define PrefixHeader_pch 11 | 12 | // Include any system framework and library headers here that should be included in all compilation units. 13 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. 14 | #import "SVProgressHUD.h" 15 | #import "TYAlertController.h" 16 | #import "MJRefresh.h" 17 | 18 | #endif /* PrefixHeader_pch */ 19 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/Base/GJBaseViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GJBaseViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/3. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class GJBaseViewController: UIViewController { 12 | 13 | override func viewDidDisappear(_ animated: Bool) { 14 | super.viewDidDisappear(animated) 15 | 16 | 17 | } 18 | 19 | override func viewDidLoad() { 20 | super.viewDidLoad() 21 | 22 | self.view.backgroundColor = MAIN_WHITE_COLOR 23 | 24 | self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false 25 | self.navigationController?.navigationBar.tintColor = UIColor.white 26 | self.navigationController?.navigationBar.isTranslucent = false 27 | 28 | self.navigationController?.navigationBar.backgroundColor = UIColor(red: 232.0/255, green: 55.0/255, blue: 64.0/255, alpha: 1.0) 29 | self.navigationController?.navigationBar.barTintColor = UIColor.clear 30 | self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:""), for: .default) 31 | self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white] 32 | self.navigationController?.navigationBar.shadowImage = GJUtil.createImageFrom(Color: UIColor.clear) 33 | } 34 | 35 | func setNavigation(Title title:String){ 36 | self.navigationItem.title = title 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/Base/GJBaseWebViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GJBaseWebViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/10. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import WebKit 11 | 12 | class GJBaseWebViewController: UIViewController, WKNavigationDelegate, WKUIDelegate { 13 | 14 | var webView:WKWebView? 15 | var link = "" 16 | var webTitle = "" 17 | 18 | override func viewWillAppear(_ animated: Bool) { 19 | super.viewWillAppear(animated) 20 | 21 | self.navigationController?.navigationBar.isHidden = false 22 | } 23 | 24 | override func viewDidLoad() { 25 | super.viewDidLoad() 26 | 27 | // Do any additional setup after loading the view. 28 | self.navigationItem.title = webTitle 29 | 30 | createToolBar() 31 | createUI() 32 | } 33 | 34 | func createToolBar(){ 35 | let toolBar = UIToolbar() 36 | toolBar.tintColor = TINT_COLOR 37 | toolBar.backgroundColor = UIColor.white 38 | 39 | let h = SCREEN_HEIGHT - TABBAR_HEIGHT 40 | toolBar.frame = CGRect(x:0, y:h, width:SCREEN_WIDTH, height:TABBAR_HEIGHT) 41 | self.view.addSubview(toolBar) 42 | 43 | let backItem = UIBarButtonItem.init(image: UIImage(named:""), style: .plain, target: self, action: #selector(goBack)) 44 | let forwardItem = UIBarButtonItem.init(image: UIImage(named:""), style: .plain, target: self, action: #selector(goForward)) 45 | let refreshItem = UIBarButtonItem.init(image: UIImage(named:""), style: .plain, target: self, action: #selector(refreash)) 46 | 47 | toolBar.items = [backItem, forwardItem, refreshItem] 48 | } 49 | 50 | func createUI(){ 51 | webView = WKWebView(frame: CGRect(x:0, y:0, width:SCREEN_WIDTH, height:SCREEN_HEIGHT - STATUS_NAV_BAR_Y - TABBAR_HEIGHT)) 52 | self.view.addSubview(webView!) 53 | 54 | let url = URL(string: link) 55 | let request = URLRequest(url: url!) 56 | webView?.load(request) 57 | } 58 | 59 | @objc func goBack(){ 60 | webView?.goBack() 61 | } 62 | 63 | @objc func goForward(){ 64 | webView?.goForward() 65 | } 66 | 67 | @objc func refreash(){ 68 | webView?.reload() 69 | } 70 | 71 | 72 | } 73 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/Base/GJNavigationController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GJNavigationController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/3. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class GJNavigationController: UINavigationController { 12 | 13 | override func pushViewController(_ viewController: UIViewController, animated: Bool) { 14 | 15 | if self.viewControllers.count > 0 { 16 | viewController.hidesBottomBarWhenPushed = true 17 | viewController.navigationItem.leftBarButtonItem = UIBarButtonItem().barButtonItemWith(Target: self, Action: #selector(pressBack), NormalImage: UIImage(named:"")!, HighLightedImage: UIImage(named:"")!) 18 | } 19 | 20 | super.pushViewController(viewController, animated: animated) 21 | 22 | } 23 | 24 | @objc func pressBack(){ 25 | self.popViewController(animated: true) 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/Common/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/Common/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/Common/Custom/GJAlertLabel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GJAlertLabel.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/16. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class GJAlertLabel: UIView { 12 | 13 | convenience init(Frame frame:CGRect, Text text:String, DismissTime dismissTime:Int){ 14 | self.init(frame: frame) 15 | 16 | let label = GJUtil.createLabelWith(Text: text, Frame: frame, TextColor: UIColor.white, Font: 14, TextAligtment: .center) 17 | label.backgroundColor = UIColor.black.withAlphaComponent(0.7) 18 | label.layer.cornerRadius = 10 19 | label.layer.masksToBounds = true 20 | label.isHidden = true 21 | self.addSubview(label) 22 | 23 | DispatchQueue.main.asyncAfter(deadline: DispatchTime(uptimeNanoseconds: UInt64(dismissTime)), execute: { 24 | self.removeFromSuperview() 25 | }) 26 | } 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/Common/Custom/GJPictureShow.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GJPictureShow.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/13. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class GJPictureShow: NSObject { 12 | 13 | static let picture = GJPictureShow() 14 | 15 | var oldFrame:CGRect? 16 | 17 | func show(ImageView imageView:UIImageView){ 18 | let image = imageView.image 19 | 20 | let window = UIApplication.shared.keyWindow 21 | let backgroundView = GJUtil.createViewWith(Frame: CGRect(x:0, y:0, width:UIScreen.main.bounds.size.width, height:UIScreen.main.bounds.size.height), BackgroundColor: UIColor.black) 22 | backgroundView.alpha = 0 23 | 24 | oldFrame = imageView.convert(imageView.bounds, to: window) 25 | 26 | let newImageView = GJUtil.createImageViewWith(Frame: oldFrame!, ImageName: "", CornarRadius: 0) 27 | newImageView.image = image 28 | newImageView.tag = 1 29 | backgroundView.addSubview(newImageView) 30 | window?.addSubview(backgroundView) 31 | 32 | backgroundView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(hide(Tap:)))) 33 | 34 | UIView.animate(withDuration: 0.3) { 35 | imageView.frame = CGRect(x:0, y:(UIScreen.main.bounds.size.height-(image?.size.height)!*UIScreen.main.bounds.size.width/(image?.size.width)!)/2, width:UIScreen.main.bounds.size.width, height:(image?.size.height)!*UIScreen.main.bounds.size.width/(image?.size.width)!) 36 | backgroundView.alpha = 1 37 | } 38 | } 39 | 40 | @objc func hide(Tap tap:UITapGestureRecognizer){ 41 | let backgroundView = tap.view 42 | let imageView = backgroundView?.viewWithTag(1) as! UIImageView 43 | UIView.animate(withDuration: 0.3, animations: { 44 | imageView.frame = self.oldFrame! 45 | backgroundView?.alpha = 0 46 | }) { (finish) in 47 | backgroundView?.removeFromSuperview() 48 | } 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/Common/Custom/GJRefreshFooter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GJRefreshFooter.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/11. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class GJRefreshFooter: MJRefreshBackGifFooter { 12 | 13 | override func prepare() { 14 | super.prepare() 15 | 16 | var idleImages = [UIImage]() 17 | for i in 1...60 { 18 | let image = UIImage(named:"reload_0\(i)") 19 | idleImages.append(image!) 20 | } 21 | self.setImages(idleImages, for: .idle) 22 | 23 | var refreshImages = [UIImage]() 24 | for i in 1...6 { 25 | let image = UIImage(named:"reload_refresh0\(i)") 26 | refreshImages.append(image!) 27 | } 28 | self.setImages(refreshImages, for: .pulling) 29 | 30 | self.setImages(refreshImages, for: .refreshing) 31 | 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/Common/Custom/GJRefreshHeader.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GJRefreshHeader.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/11. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class GJRefreshHeader: MJRefreshGifHeader { 12 | 13 | override func prepare() { 14 | super.prepare() 15 | 16 | var idleImages = [UIImage]() 17 | for i in 1...60 { 18 | let image = UIImage(named:"reload_0\(i)") 19 | idleImages.append(image!) 20 | } 21 | self.setImages(idleImages, for: .idle) 22 | 23 | var refreshImages = [UIImage]() 24 | for i in 1...6 { 25 | let image = UIImage(named:"reload_refresh0\(i)") 26 | refreshImages.append(image!) 27 | } 28 | self.setImages(refreshImages, for: .pulling) 29 | 30 | self.setImages(refreshImages, for: .refreshing) 31 | 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/Common/Extension/UIBarButtonItem+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIBarButtonItem+Extension.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/3. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | extension UIBarButtonItem { 13 | 14 | func barButtonItemWith(Target target:Any?, Action action:Selector?, NormalImage normalImage:UIImage?, HighLightedImage highLightImage:UIImage?) -> UIBarButtonItem{ 15 | let btn = UIButton(type:.custom) 16 | if target != nil && action != nil { 17 | btn.addTarget(target, action: action!, for: .touchUpInside) 18 | } 19 | if normalImage != nil { 20 | btn.setBackgroundImage(normalImage, for: .normal) 21 | } 22 | if highLightImage != nil { 23 | btn.setBackgroundImage(highLightImage, for: .highlighted) 24 | } 25 | return UIBarButtonItem(customView: btn) 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/Common/NetWorkFile.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NetWorkFile.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/2. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | let BEHIND_SALT = "" 13 | let FRONT_SALT = "" 14 | let APP_KEY = "" 15 | let VERSION = ""//版本号 16 | let DEVICE_TYPE = "" 17 | 18 | let HOST = "" 19 | let MAIN_API = ""//首页 20 | let LOGIN_API = ""//登录 21 | let REGISTER_API = ""//注册 22 | let REGISTER_PIC_CODE_API = ""//注册获取图片验证码 23 | let REGISTER_SMS_CODE_API = ""//注册获取文字验证码 24 | let FORGER_PASS_SMS_CODE_API = ""//忘记密码获取文字验证码 25 | let FORGET_PASS_FIRST_STEP_API = ""//忘记密码验证手机号码 26 | let CHANGE_PASSWROD_API = ""//忘记密码后修改密码 27 | let ANOUNCE_API = ""//公告详情 28 | let INVEST_LIST_API = ""//出借列表 29 | let CUNGUAN_API = ""//cunguan,绑卡 30 | let GET_INVEST_NO = ""//获取出借订单号 31 | let INVEST_URL = ""//获取订单号后跳转到cunguan页面 32 | let CHECK_PWD = ""//检查定向标密码是否正确 33 | let INVEST_DETAIL = ""//出借详情 34 | let INVEST_DETAIL_DEATIL = ""//上划后出现的详情 35 | let INVEST_HISTORY = ""//出借记录 36 | let MINE_CENTER_API = ""//个人中心 37 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/Common/VariableDefineFile.swift: -------------------------------------------------------------------------------- 1 | // 2 | // VariableDefineFile.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/2. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | let SCREEN_WIDTH = UIScreen.main.bounds.size.width 13 | let SCREEN_HEIGHT = UIScreen.main.bounds.size.height 14 | 15 | let SCREEN_MAX_LENGTH = max(SCREEN_WIDTH, SCREEN_HEIGHT) 16 | let IS_IPHONE_4_OR_LESS = SCREEN_MAX_LENGTH < 568.0 17 | let IS_IPHONE_5 = SCREEN_MAX_LENGTH == 568.0 18 | let IS_IPHONE_6 = SCREEN_MAX_LENGTH == 667.0 19 | let IS_IPHONE_6P = SCREEN_MAX_LENGTH == 736.0 20 | let IS_IPHONE_X = SCREEN_MAX_LENGTH == 812.0 21 | 22 | let STATUS_NAV_BAR_Y:CGFloat = IS_IPHONE_X == true ? 88.0 : 64.0 23 | let TABBAR_HEIGHT:CGFloat = IS_IPHONE_X == true ? 83.0 : 49.0 24 | let STATUSBAR_HEIGHT:CGFloat = IS_IPHONE_X == true ? 44.0 : 20.0 25 | 26 | /* 27 | * 颜色 28 | */ 29 | let TINT_COLOR = UIColor(red: 164.0/255, green: 0.0/255, blue: 0.0/255, alpha: 1.0) 30 | let TABBAR_TINT_COLOR = UIColor(red: 237.0/255, green: 31.0/255, blue: 59.0/255, alpha: 1.0) 31 | let MAIN_WHITE_COLOR = UIColor(red: 242.0/255, green: 242.0/255, blue: 242.0/255, alpha: 1.0) 32 | let LABEL_TEXT_COLOR = UIColor.gray 33 | let INVEST_PERSON = UIColor(red: 34.0/255, green: 160.0/255, blue: 43.0/255, alpha: 1.0) 34 | let INVEST_COM = UIColor(red: 237.0/255, green: 31.0/255, blue: 59.0/255, alpha: 1.0) 35 | let INVEST_NEW = UIColor(red: 253.0/255, green: 143.0/255, blue: 27.0/255, alpha: 1.0) 36 | let BTN_BACK_COLOR = UIColor(red: 18.0/255, green: 147.0/255, blue: 255.0/255, alpha: 1.0) 37 | let LABEL_BLACK_COLOR = UIColor(red: 30.0/255, green: 30.0/255, blue: 30.0/255, alpha: 1.0) 38 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/NetWork/GJNetwork.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GJNetwork.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/2. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import Alamofire 11 | import SwiftyJSON 12 | 13 | class GJNetwork: NSObject { 14 | 15 | struct responseData { 16 | var request:URLRequest? 17 | var response:HTTPURLResponse? 18 | var json:AnyObject? 19 | var error:NSError? 20 | var data:Data? 21 | } 22 | 23 | class func requestWith(Method method:Alamofire.HTTPMethod, URL url:String, Parameter para:[String:Any]?, Token token:String?, handler: @escaping (responseData) -> Void){ 24 | let reachAble = GJNetworkReachability.reachAbility.reachAble 25 | if reachAble { 26 | var dicToken:[String:String]! 27 | if token != nil { 28 | dicToken = ["tokenId":token!] 29 | } 30 | 31 | let manager = Alamofire.SessionManager.default 32 | manager.session.configuration.timeoutIntervalForRequest = 10 33 | manager.request(url, method: method, parameters: para, encoding: URLEncoding.default, headers: dicToken).response(completionHandler: { (response) in 34 | let json:AnyObject! = try? JSONSerialization.jsonObject(with: response.data!, options: .allowFragments) as AnyObject 35 | if nil != json { 36 | let res = responseData(request:response.request, response:response.response, json:json, error:response.error as NSError?, data:response.data) 37 | 38 | handler(res) 39 | } 40 | }) 41 | 42 | } 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/NetWork/GJNetworkReachability.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GJNetworkReachability.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/2. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import Alamofire 11 | 12 | 13 | class GJNetworkReachability: NSObject { 14 | 15 | static let reachAbility = GJNetworkReachability() 16 | 17 | var reachAble:Bool = { 18 | var reach = true 19 | 20 | let manager = NetworkReachabilityManager(host: "www.baidu.com") 21 | 22 | manager?.listener = { status in 23 | switch status { 24 | case .notReachable: 25 | reach = false 26 | SVProgressHUD.showError(withStatus: "网络出错") 27 | case .reachable(.ethernetOrWiFi): 28 | reach = true 29 | case .reachable(.wwan): 30 | reach = true 31 | case .unknown: 32 | reach = false 33 | SVProgressHUD.showError(withStatus: "网络出错") 34 | } 35 | } 36 | manager?.startListening() 37 | 38 | return reach 39 | }() 40 | 41 | } 42 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/ViewControllers/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/InvestViewController/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/ViewControllers/InvestViewController/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/InvestViewController/Model/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/ViewControllers/InvestViewController/Model/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/InvestViewController/Model/CompanyInvestDetailModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CompanyInvestDetailModel.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/13. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class CompanyInvestDetailModel: NSObject { 12 | 13 | var company_name = "" 14 | var company_industry = "" 15 | var company_regtime = "" 16 | var company_address = "" 17 | var workplace_nature = "" 18 | var company_scale = "" 19 | var introduce = "" 20 | var borrowUse = "" 21 | var repaymentSource = "" 22 | var companyBusinessInfo = "" 23 | var businessLicense = "" 24 | var accountPermits = "" 25 | var legalPersonIdCard = "" 26 | var companyPolicy = "" 27 | var contactInfo = "" 28 | var riskReport = "" 29 | 30 | var list = [Dictionary]() 31 | 32 | override func setValue(_ value: Any?, forUndefinedKey key: String) { 33 | 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/InvestViewController/Model/InvestDetailModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvestDeatilModel.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/11. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class InvestDetailModel: NSObject { 12 | 13 | var account = "" 14 | var account_wait = "" 15 | var apr = 0.0 16 | var assurance = "" 17 | var content = "" 18 | var nid = "" 19 | var introduce = "" 20 | var is_directional = "" 21 | var lowest_account = "" 22 | var most_account = "" 23 | var name = "" 24 | var part_account = "" 25 | var realname_status = "" 26 | var record_num = "" 27 | var repayment_style_str = "" 28 | var scales = "" 29 | var status = "" 30 | var timeType = "" 31 | var time_limit = 1 32 | var uuid = "" 33 | var product_category = "" 34 | var productType = 1 35 | var guarantee_type_str = "" 36 | var use_money = "" 37 | var user_type = "" 38 | var userNature = 1 39 | } 40 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/InvestViewController/Model/InvestHistoryModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvestHistoryModel.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/13. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class InvestHistoryModel: NSObject { 12 | 13 | var addtime = "" 14 | var apr = "" 15 | var money = "" 16 | var upapr = "" 17 | var upinterest = "" 18 | var username = "" 19 | 20 | override func setValue(_ value: Any?, forUndefinedKey key: String) { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/InvestViewController/Model/PersonInvestDetailModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PersonInvestDetailModel.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/13. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class PersonInvestDetailModel: NSObject { 12 | 13 | var realName = "" 14 | var hometown = "" 15 | var birthday = "" 16 | var workplace_nature = "" 17 | var marriage = "" 18 | var industry = "" 19 | var career = "" 20 | var total_working_time = "" 21 | var monthly_salary = "" 22 | var education = "" 23 | var borrowUse = "" 24 | var repaymentSource = "" 25 | var creditReport = "" 26 | var workCertification = "" 27 | var authentication = "" 28 | var incomeCertification = "" 29 | var hospitalCertification = "" 30 | var riskReport = "" 31 | 32 | var list = [Dictionary]() 33 | 34 | var productType = 1 35 | 36 | override func setValue(_ value: Any?, forUndefinedKey key: String) { 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/InvestViewController/View/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/ViewControllers/InvestViewController/View/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/InvestViewController/ViewController/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/ViewControllers/InvestViewController/ViewController/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/InvestViewController/ViewController/CunguanWebViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CunguanWebViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/12. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class CunguanWebViewController: GJBaseWebViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | // Do any additional setup after loading the view. 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/LoginAboutViewController/RegisterSuccessViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RegisterSuccessViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/9. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class RegisterSuccessViewController: GJBaseViewController { 12 | 13 | var userName = "" 14 | var password = "" 15 | 16 | override func viewWillAppear(_ animated: Bool) { 17 | super.viewWillAppear(animated) 18 | 19 | self.navigationItem.leftBarButtonItem = UIBarButtonItem().barButtonItemWith(Target: nil, Action: nil, NormalImage: nil, HighLightedImage: nil) 20 | } 21 | 22 | override func viewDidLoad() { 23 | super.viewDidLoad() 24 | 25 | // Do any additional setup after loading the view. 26 | 27 | self.view.backgroundColor = UIColor.white 28 | setNavigation(Title: "注册成功") 29 | 30 | let imageView = GJUtil.createImageViewWith(Frame: CGRect(x:(SCREEN_WIDTH-142)/2, y:40, width:142, height:135), ImageName: "注册成功(1)", CornarRadius: 0.0) 31 | self.view.addSubview(imageView) 32 | 33 | let label = GJUtil.createLabelWith(Text: "注册成功", Frame: CGRect(x:15, y:imageView.frame.maxY + 10, width:SCREEN_WIDTH-30, height:30), TextColor: LABEL_TEXT_COLOR, Font: 16.0, TextAligtment: .center) 34 | self.view.addSubview(label) 35 | 36 | let sureBtn = GJUtil.createButtonWith(Type: .custom, Title: "确定", Frame: CGRect(x:15, y:label.frame.maxY + 50, width:SCREEN_WIDTH-30, height:50), TitleColor: UIColor.white, Font: 20, BackgroundColor: TINT_COLOR, Target: self, Action: #selector(sureBtnAction), TextAligtment: .center) 37 | sureBtn.layer.cornerRadius = 5 38 | sureBtn.layer.shadowOffset = CGSize(width:0, height:5) 39 | sureBtn.layer.shadowOpacity = 0.5 40 | sureBtn.layer.shadowColor = TINT_COLOR.cgColor 41 | self.view.addSubview(sureBtn) 42 | 43 | } 44 | 45 | @objc func sureBtnAction(){ 46 | GJNetWorkTool.tool.loginWith(MobileNum: userName, Password: password) { (result) in 47 | 48 | } 49 | } 50 | 51 | 52 | } 53 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/LoginAboutViewController/UserAgreementViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UserAgreementViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/9. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class UserAgreementViewController: GJBaseViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | // Do any additional setup after loading the view. 17 | 18 | setNavigation(Title: "用户服务协议") 19 | 20 | let webView = UIWebView.init(frame: CGRect(x:0, y:0, width:SCREEN_WIDTH, height:SCREEN_HEIGHT - STATUS_NAV_BAR_Y)) 21 | self.view.addSubview(webView) 22 | 23 | let url = Bundle.main.url(forResource: "UserAgreement", withExtension: "html") 24 | let request = URLRequest(url: url!) 25 | webView.loadRequest(request) 26 | 27 | } 28 | 29 | 30 | } 31 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MainViewController/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/ViewControllers/MainViewController/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MainViewController/Model/AnnouceModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnnouceModel.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/10. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class AnnouceModel: NSObject { 12 | 13 | var nid = "" 14 | var time = "" 15 | var title = "" 16 | 17 | override func setValue(_ value: Any?, forUndefinedKey key: String) { 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MainViewController/Model/BannarModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BannarModel.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/10. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class BannarModel: NSObject { 12 | 13 | var picPath = "" 14 | var introduction = "" 15 | 16 | override func setValue(_ value: Any?, forUndefinedKey key: String) { 17 | 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MainViewController/Model/InvestListCellModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvestListCellModel.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/2. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class InvestListCellModel: NSObject { 12 | 13 | var name = "" 14 | var account = "" 15 | var apr = "" 16 | var nid = "" 17 | var lowestAccount = "" 18 | var scales = "" 19 | var productCategory = 1 20 | var category = 1 21 | var timeType = "" 22 | var time_limit = "" 23 | var typeStr = "" 24 | var uuid = "" 25 | var lastAccount = "" 26 | 27 | override func setValue(_ value: Any?, forUndefinedKey key: String) { 28 | if key == "id"{ 29 | nid = value as! String 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MainViewController/ViewController/AnnounceDetailController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnnounceDetailController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/10. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class AnnounceDetailController: GJBaseWebViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | // Do any additional setup after loading the view. 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MainViewController/ViewController/BannarDetailViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BannarDetailViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/10. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class BannarDetailViewController: GJBaseWebViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | // Do any additional setup after loading the view. 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/ViewControllers/MineViewController/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/Model/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/ViewControllers/MineViewController/Model/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/Model/MineViewModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MineViewModel.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/16. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class MineViewModel: NSObject { 12 | 13 | var account_total = "" 14 | var email_status = "" 15 | var headImg = "" 16 | var no_use_money = "" 17 | var realname_status = "" 18 | var un_read_count = "" 19 | var use_money = "" 20 | var userName = "" 21 | var mobilePhone = "" 22 | var earnAmount = "" 23 | var userNature = 1 24 | 25 | 26 | override func setValue(_ value: Any?, forUndefinedKey key: String) { 27 | 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/View/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/ViewControllers/MineViewController/View/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/ViewController/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manofit/swift_project/43cbbea43106c58b655f9dc7b24782d758dd4a89/swift_project/swift_project/RealPro/ViewControllers/MineViewController/ViewController/.DS_Store -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/ViewController/AddMoneyViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AddMoneyViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/16. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class AddMoneyViewController: GJBaseViewController { 12 | 13 | var userNature = false 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | 18 | // Do any additional setup after loading the view. 19 | } 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/ViewController/DeleteMoneyViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeleteMoneyViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/16. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class DeleteMoneyViewController: GJBaseViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | // Do any additional setup after loading the view. 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/ViewController/InvatationViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvatationViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/16. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class InvatationViewController: GJBaseViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | // Do any additional setup after loading the view. 17 | } 18 | 19 | override func didReceiveMemoryWarning() { 20 | super.didReceiveMemoryWarning() 21 | // Dispose of any resources that can be recreated. 22 | } 23 | 24 | 25 | /* 26 | // MARK: - Navigation 27 | 28 | // In a storyboard-based application, you will often want to do a little preparation before navigation 29 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 30 | // Get the new view controller using segue.destinationViewController. 31 | // Pass the selected object to the new view controller. 32 | } 33 | */ 34 | 35 | } 36 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/ViewController/MessageViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MessageViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/16. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class MessageViewController: GJBaseViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | // Do any additional setup after loading the view. 17 | } 18 | 19 | override func didReceiveMemoryWarning() { 20 | super.didReceiveMemoryWarning() 21 | // Dispose of any resources that can be recreated. 22 | } 23 | 24 | 25 | /* 26 | // MARK: - Navigation 27 | 28 | // In a storyboard-based application, you will often want to do a little preparation before navigation 29 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 30 | // Get the new view controller using segue.destinationViewController. 31 | // Pass the selected object to the new view controller. 32 | } 33 | */ 34 | 35 | } 36 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/ViewController/MoneyHistoryViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MoneyHistoryViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/16. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class MoneyHistoryViewController: GJBaseViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | // Do any additional setup after loading the view. 17 | } 18 | 19 | override func didReceiveMemoryWarning() { 20 | super.didReceiveMemoryWarning() 21 | // Dispose of any resources that can be recreated. 22 | } 23 | 24 | 25 | /* 26 | // MARK: - Navigation 27 | 28 | // In a storyboard-based application, you will often want to do a little preparation before navigation 29 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 30 | // Get the new view controller using segue.destinationViewController. 31 | // Pass the selected object to the new view controller. 32 | } 33 | */ 34 | 35 | } 36 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/ViewController/MyTicketViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MyTicketViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/16. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class MyTicketViewController: GJBaseViewController { 12 | 13 | var isRed = "" 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | 18 | // Do any additional setup after loading the view. 19 | } 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /swift_project/swift_project/RealPro/ViewControllers/MineViewController/ViewController/SafetyCenterViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SafetyCenterViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/16. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class SafetyCenterViewController: GJBaseViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | 16 | // Do any additional setup after loading the view. 17 | } 18 | 19 | override func didReceiveMemoryWarning() { 20 | super.didReceiveMemoryWarning() 21 | // Dispose of any resources that can be recreated. 22 | } 23 | 24 | 25 | /* 26 | // MARK: - Navigation 27 | 28 | // In a storyboard-based application, you will often want to do a little preparation before navigation 29 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 30 | // Get the new view controller using segue.destinationViewController. 31 | // Pass the selected object to the new view controller. 32 | } 33 | */ 34 | 35 | } 36 | -------------------------------------------------------------------------------- /swift_project/swift_project/UserAgreement.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 关于我们 6 | 7 |
8 | 9 |

这是标题

10 |
这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言这是引言
11 |
12 |

这是副标题

13 |
14 |

标题

15 |

这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容

16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /swift_project/swift_project/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/2. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do any additional setup after loading the view, typically from a nib. 16 | } 17 | 18 | override func didReceiveMemoryWarning() { 19 | super.didReceiveMemoryWarning() 20 | // Dispose of any resources that can be recreated. 21 | } 22 | 23 | 24 | } 25 | 26 | -------------------------------------------------------------------------------- /swift_project/swift_project/swift_project_briding_Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // swift_project_briding_Header.h 3 | // swift_project 4 | // 5 | // Created by 高军 on 2018/4/2. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | #ifndef swift_project_briding_Header_h 10 | #define swift_project_briding_Header_h 11 | 12 | #import "PrefixHeader.pch" 13 | #import 14 | 15 | #endif /* swift_project_briding_Header_h */ 16 | -------------------------------------------------------------------------------- /swift_project/swift_projectTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /swift_project/swift_projectTests/swift_project.swift: -------------------------------------------------------------------------------- 1 | // 2 | // swift_projectTests.swift 3 | // swift_projectTests 4 | // 5 | // Created by 高军 on 2018/4/2. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import swift_project 11 | 12 | class swift_project: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /swift_project/swift_projectUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /swift_project/swift_projectUITests/swift_project.swift: -------------------------------------------------------------------------------- 1 | // 2 | // swift_projectUITests.swift 3 | // swift_projectUITests 4 | // 5 | // Created by 高军 on 2018/4/2. 6 | // Copyright © 2018年 Jun Gao. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class swift_project: XCTestCase { 12 | 13 | override func setUp() { 14 | super.setUp() 15 | 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | 18 | // In UI tests it is usually best to stop immediately when a failure occurs. 19 | continueAfterFailure = false 20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 21 | XCUIApplication().launch() 22 | 23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 24 | } 25 | 26 | override func tearDown() { 27 | // Put teardown code here. This method is called after the invocation of each test method in the class. 28 | super.tearDown() 29 | } 30 | 31 | func testExample() { 32 | // Use recording to get started writing UI tests. 33 | // Use XCTAssert and related functions to verify your tests produce the correct results. 34 | } 35 | 36 | } 37 | --------------------------------------------------------------------------------