From 5f6dd34f0a5c4b2cdd2b451ba655851b2f8a1e87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=BE=E5=9F=B9=E5=86=9B?= Date: Wed, 8 Apr 2020 15:03:33 +0800 Subject: [PATCH] swift 5.0 --- .../DGElasticPullToRefreshExtensions.swift | 22 ++++++------- ...lasticPullToRefreshLoadingViewCircle.swift | 12 +++---- .../DGElasticPullToRefreshView.swift | 8 ++--- .../project.pbxproj | 31 +++++++++++++++--- .../UserInterfaceState.xcuserstate | Bin 0 -> 21663 bytes .../xcschemes/xcschememanagement.plist | 14 ++++++++ 6 files changed, 62 insertions(+), 25 deletions(-) create mode 100644 DGElasticPullToRefreshExample.xcodeproj/project.xcworkspace/xcuserdata/jiapeijun.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 DGElasticPullToRefreshExample.xcodeproj/xcuserdata/jiapeijun.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/DGElasticPullToRefresh/DGElasticPullToRefreshExtensions.swift b/DGElasticPullToRefresh/DGElasticPullToRefreshExtensions.swift index ab4f89e..a214b48 100644 --- a/DGElasticPullToRefresh/DGElasticPullToRefreshExtensions.swift +++ b/DGElasticPullToRefresh/DGElasticPullToRefreshExtensions.swift @@ -56,19 +56,19 @@ public extension NSObject { // MARK: - // MARK: Methods - public func dg_addObserver(_ observer: NSObject, forKeyPath keyPath: String) { + func dg_addObserver(_ observer: NSObject, forKeyPath keyPath: String) { let observerInfo = [keyPath : observer] - if dg_observers.index(where: { $0 == observerInfo }) == nil { + if dg_observers.firstIndex(where: { $0 == observerInfo }) == nil { dg_observers.append(observerInfo) addObserver(observer, forKeyPath: keyPath, options: .new, context: nil) } } - public func dg_removeObserver(_ observer: NSObject, forKeyPath keyPath: String) { + func dg_removeObserver(_ observer: NSObject, forKeyPath keyPath: String) { let observerInfo = [keyPath : observer] - if let index = dg_observers.index(where: { $0 == observerInfo}) { + if let index = dg_observers.firstIndex(where: { $0 == observerInfo}) { dg_observers.remove(at: index) removeObserver(observer, forKeyPath: keyPath) } @@ -99,7 +99,7 @@ public extension UIScrollView { // MARK: - Methods (Public) - public func dg_addPullToRefreshWithActionHandler(_ actionHandler: @escaping () -> Void, loadingView: DGElasticPullToRefreshLoadingView?) { + func dg_addPullToRefreshWithActionHandler(_ actionHandler: @escaping () -> Void, loadingView: DGElasticPullToRefreshLoadingView?) { isMultipleTouchEnabled = false panGestureRecognizer.maximumNumberOfTouches = 1 @@ -112,21 +112,21 @@ public extension UIScrollView { pullToRefreshView.observing = true } - public func dg_removePullToRefresh() { + func dg_removePullToRefresh() { pullToRefreshView?.disassociateDisplayLink() pullToRefreshView?.observing = false pullToRefreshView?.removeFromSuperview() } - public func dg_setPullToRefreshBackgroundColor(_ color: UIColor) { + func dg_setPullToRefreshBackgroundColor(_ color: UIColor) { pullToRefreshView?.backgroundColor = color } - public func dg_setPullToRefreshFillColor(_ color: UIColor) { + func dg_setPullToRefreshFillColor(_ color: UIColor) { pullToRefreshView?.fillColor = color } - public func dg_stopLoading() { + func dg_stopLoading() { pullToRefreshView?.stopLoading() } } @@ -157,8 +157,8 @@ public extension UIPanGestureRecognizer { // MARK: - // MARK: (UIGestureRecognizerState) Extension -public extension UIGestureRecognizerState { - func dg_isAnyOf(_ values: [UIGestureRecognizerState]) -> Bool { +public extension UIGestureRecognizer.State { + func dg_isAnyOf(_ values: [UIGestureRecognizer.State]) -> Bool { return values.contains(where: { $0 == self }) } } diff --git a/DGElasticPullToRefresh/DGElasticPullToRefreshLoadingViewCircle.swift b/DGElasticPullToRefresh/DGElasticPullToRefreshLoadingViewCircle.swift index c510baf..364b656 100644 --- a/DGElasticPullToRefresh/DGElasticPullToRefreshLoadingViewCircle.swift +++ b/DGElasticPullToRefresh/DGElasticPullToRefreshLoadingViewCircle.swift @@ -31,12 +31,12 @@ import UIKit public extension CGFloat { - public func toRadians() -> CGFloat { - return (self * CGFloat(M_PI)) / 180.0 + func toRadians() -> CGFloat { + return (self * CGFloat(Double.pi)) / 180.0 } - public func toDegrees() -> CGFloat { - return self * 180.0 / CGFloat(M_PI) + func toDegrees() -> CGFloat { + return self * 180.0 / CGFloat(Double.pi) } } @@ -99,11 +99,11 @@ open class DGElasticPullToRefreshLoadingViewCircle: DGElasticPullToRefreshLoadin if shapeLayer.animation(forKey: kRotationAnimation) != nil { return } let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z") - rotationAnimation.toValue = CGFloat(2 * M_PI) + currentDegree() + rotationAnimation.toValue = CGFloat(2 * Double.pi) + currentDegree() rotationAnimation.duration = 1.0 rotationAnimation.repeatCount = Float.infinity rotationAnimation.isRemovedOnCompletion = false - rotationAnimation.fillMode = kCAFillModeForwards + rotationAnimation.fillMode = CAMediaTimingFillMode.forwards shapeLayer.add(rotationAnimation, forKey: kRotationAnimation) } diff --git a/DGElasticPullToRefresh/DGElasticPullToRefreshView.swift b/DGElasticPullToRefresh/DGElasticPullToRefreshView.swift index d393eaf..c715b58 100644 --- a/DGElasticPullToRefresh/DGElasticPullToRefreshView.swift +++ b/DGElasticPullToRefresh/DGElasticPullToRefreshView.swift @@ -124,7 +124,7 @@ open class DGElasticPullToRefreshView: UIView { super.init(frame: CGRect.zero) displayLink = CADisplayLink(target: self, selector: #selector(DGElasticPullToRefreshView.displayLinkTick)) - displayLink.add(to: RunLoop.main, forMode: RunLoopMode.commonModes) + displayLink.add(to: RunLoop.main, forMode: RunLoop.Mode.common) displayLink.isPaused = true shapeLayer.backgroundColor = UIColor.clear.cgColor @@ -141,7 +141,7 @@ open class DGElasticPullToRefreshView: UIView { addSubview(r2ControlPointView) addSubview(r3ControlPointView) - NotificationCenter.default.addObserver(self, selector: #selector(DGElasticPullToRefreshView.applicationWillEnterForeground), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(DGElasticPullToRefreshView.applicationWillEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil) } required public init?(coder aDecoder: NSCoder) { @@ -193,7 +193,7 @@ open class DGElasticPullToRefreshView: UIView { // MARK: - // MARK: Notifications - func applicationWillEnterForeground() { + @objc func applicationWillEnterForeground() { if state == .loading { layoutSubviews() } @@ -355,7 +355,7 @@ open class DGElasticPullToRefreshView: UIView { displayLink.isPaused = true } - func displayLinkTick() { + @objc func displayLinkTick() { let width = bounds.width var height: CGFloat = 0.0 diff --git a/DGElasticPullToRefreshExample.xcodeproj/project.pbxproj b/DGElasticPullToRefreshExample.xcodeproj/project.pbxproj index c778cf5..5fbd9d6 100644 --- a/DGElasticPullToRefreshExample.xcodeproj/project.pbxproj +++ b/DGElasticPullToRefreshExample.xcodeproj/project.pbxproj @@ -113,7 +113,7 @@ 05CD145D1BBE8FEA00AF4030 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0700; + LastUpgradeCheck = 1130; ORGANIZATIONNAME = "Danil Gontovnik"; TargetAttributes = { 05CD14641BBE8FEA00AF4030 = { @@ -124,7 +124,7 @@ }; buildConfigurationList = 05CD14601BBE8FEA00AF4030 /* Build configuration list for PBXProject "DGElasticPullToRefreshExample" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -186,17 +186,28 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -231,17 +242,28 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -260,6 +282,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -274,7 +297,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.gatafan.DGElasticPullToRefreshExample; PRODUCT_NAME = DGElasticPullToRefreshExample; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -287,7 +310,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.gatafan.DGElasticPullToRefreshExample; PRODUCT_NAME = DGElasticPullToRefreshExample; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/DGElasticPullToRefreshExample.xcodeproj/project.xcworkspace/xcuserdata/jiapeijun.xcuserdatad/UserInterfaceState.xcuserstate b/DGElasticPullToRefreshExample.xcodeproj/project.xcworkspace/xcuserdata/jiapeijun.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..2f7c5b4ed9402cb3ebe7ac32e22c85f2acbb912b GIT binary patch literal 21663 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 MnktTPmu}Yo1Agi1UH||9 literal 0 HcmV?d00001 diff --git a/DGElasticPullToRefreshExample.xcodeproj/xcuserdata/jiapeijun.xcuserdatad/xcschemes/xcschememanagement.plist b/DGElasticPullToRefreshExample.xcodeproj/xcuserdata/jiapeijun.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..5056fef --- /dev/null +++ b/DGElasticPullToRefreshExample.xcodeproj/xcuserdata/jiapeijun.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + DGElasticPullToRefreshExample.xcscheme_^#shared#^_ + + orderHint + 0 + + + +