diff --git a/MotionAnimation/MotionAnimator.swift b/MotionAnimation/MotionAnimator.swift index 9419037..15e746f 100644 --- a/MotionAnimation/MotionAnimator.swift +++ b/MotionAnimation/MotionAnimator.swift @@ -33,7 +33,7 @@ open class MotionAnimator: NSObject { super.init() } - func update() { + @objc func update() { _removeAllPendingStopAnimations() let duration = CGFloat(displayLink.duration) diff --git a/MotionAnimation/Types.swift b/MotionAnimation/Types.swift index ffa4869..10ca8e6 100644 --- a/MotionAnimation/Types.swift +++ b/MotionAnimation/Types.swift @@ -81,7 +81,11 @@ extension UIColor:MotionAnimatableProperty{ return self.init(red: values[0], green: values[1], blue: values[2], alpha: values[3]) } public func toCGFloatValues(_ values: inout [CGFloat]) { - self.getRed(&values[0], green: &values[1], blue: &values[2], alpha: &values[3]) + var r = values[0] + var g : CGFloat = values[1] + var b : CGFloat = values[2] + var a : CGFloat = values[3] + self.getRed(&r, green: &g, blue: &b, alpha: &a) } } diff --git a/MotionAnimationExample.xcodeproj/project.pbxproj b/MotionAnimationExample.xcodeproj/project.pbxproj index 393f866..9d7e562 100644 --- a/MotionAnimationExample.xcodeproj/project.pbxproj +++ b/MotionAnimationExample.xcodeproj/project.pbxproj @@ -152,14 +152,14 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = lkzhao; TargetAttributes = { A3D92B211C6803C000C34FBD = { CreatedOnToolsVersion = 7.2; DevelopmentTeam = 4VSEW78TKT; DevelopmentTeamName = "Yi Lun Zhao"; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; }; }; @@ -237,14 +237,20 @@ 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_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_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; @@ -284,14 +290,20 @@ 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_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_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; @@ -324,7 +336,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.lkzhao.MotionAnimation; PRODUCT_NAME = MotionAnimationExample; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -337,7 +350,8 @@ PRODUCT_BUNDLE_IDENTIFIER = com.lkzhao.MotionAnimation; PRODUCT_NAME = MotionAnimationExample; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Release; }; diff --git a/MotionAnimationExample/ListViewController.swift b/MotionAnimationExample/ListViewController.swift index 9036809..62604da 100644 --- a/MotionAnimationExample/ListViewController.swift +++ b/MotionAnimationExample/ListViewController.swift @@ -47,7 +47,7 @@ class ListViewController: ExampleBaseViewController { listItems.first?.m_animate("center", to: CGPoint(x: view.center.x, y: 150), stiffness: 200, damping:15, threshold:1) } - func pan(_ gr:LZPanGestureRecognizer){ + @objc func pan(_ gr:LZPanGestureRecognizer){ switch gr.state{ case .began, .changed: // move the item under touch diff --git a/MotionAnimationExample/SquareViewController.swift b/MotionAnimationExample/SquareViewController.swift index 5347ad4..3e2fdce 100644 --- a/MotionAnimationExample/SquareViewController.swift +++ b/MotionAnimationExample/SquareViewController.swift @@ -54,7 +54,7 @@ class SquareViewController: ExampleBaseViewController { } var isBig = false - func doubleTap(_ gr:UITapGestureRecognizer){ + @objc func doubleTap(_ gr:UITapGestureRecognizer){ let newSize = isBig ? CGSize(width: 150, height: 150) : CGSize(width: 200, height: 200) let newColor = isBig ? UIColor.white : UIColor.black isBig = !isBig @@ -62,11 +62,11 @@ class SquareViewController: ExampleBaseViewController { square.m_animate("bounds", to: CGRect(origin: CGPoint.zero, size: newSize), stiffness:200, damping:10) } - func tap(_ gr:UITapGestureRecognizer){ + @objc func tap(_ gr:UITapGestureRecognizer){ square.m_animate("center", to: gr.location(in: view), stiffness:200, damping:10) } - func pan(_ gr:LZPanGestureRecognizer){ + @objc func pan(_ gr:LZPanGestureRecognizer){ // high stiffness -> high acceleration (will help it stay under touch) square.m_animate("center", to: gr.translatedViewCenterPoint, stiffness:500, damping:25) }