From 9570e71c9572aae65985c06670d8b2dadb8d0c5d Mon Sep 17 00:00:00 2001 From: kingiol Date: Fri, 16 Sep 2016 18:51:30 +0800 Subject: [PATCH 01/15] swift3 support --- DemoApp/DemoApp.xcodeproj/project.pbxproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DemoApp/DemoApp.xcodeproj/project.pbxproj b/DemoApp/DemoApp.xcodeproj/project.pbxproj index a34f5db..553c720 100644 --- a/DemoApp/DemoApp.xcodeproj/project.pbxproj +++ b/DemoApp/DemoApp.xcodeproj/project.pbxproj @@ -134,6 +134,7 @@ TargetAttributes = { 6260F8031C00CE99003DC9FE = { CreatedOnToolsVersion = 7.1.1; + DevelopmentTeam = BW886X295K; LastSwiftMigration = 0800; }; }; @@ -341,6 +342,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; + DEVELOPMENT_TEAM = BW886X295K; INFOPLIST_FILE = DemoApp/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.kingiol.DemoApp; @@ -355,6 +357,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; + DEVELOPMENT_TEAM = BW886X295K; INFOPLIST_FILE = DemoApp/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.kingiol.DemoApp; From 13711b29b5426ca8e263cf3ddee81c463dc23681 Mon Sep 17 00:00:00 2001 From: kingiol Date: Sat, 8 Oct 2016 18:23:49 +0800 Subject: [PATCH 02/15] support cocoapods --- KDInteractiveNavigationController.podspec | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/KDInteractiveNavigationController.podspec b/KDInteractiveNavigationController.podspec index 6db30f7..363319e 100644 --- a/KDInteractiveNavigationController.podspec +++ b/KDInteractiveNavigationController.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "KDInteractiveNavigationController" - s.version = "0.1.2" + s.version = "0.2" s.summary = "A UINavigationController subclass that support interactive UINavigationbar with hidden or show." s.homepage = "https://github.com/kingiol/KDInteractiveNavigationController" @@ -10,9 +10,14 @@ Pod::Spec.new do |s| s.license = { :type => 'MIT', :file => 'LICENSE' } s.authors = { "kingiol" => "kingxiaokang@gmail.com" } - s.platform = :ios, "8.0" + # s.platform = :ios, "8.0" s.requires_arc = true + s.ios.deployment_target = "8.0" + # s.osx.deployment_target = "10.9" + # s.watchos.deployment_target = "2.0" + # s.tvos.deployment_target = "9.0" + s.source = { :git => "https://github.com/kingiol/KDInteractiveNavigationController.git", :tag => s.version.to_s } s.source_files = "KDInteractiveNavigationController/*.{swift}" From e55887b4820878f77d2fee1f2df47fd0123ee944 Mon Sep 17 00:00:00 2001 From: kingiol Date: Fri, 25 Aug 2017 15:49:54 +0800 Subject: [PATCH 03/15] fix navigationbar for uiactivityviewcontroller --- DemoApp/DemoApp/Base.lproj/Main.storyboard | 93 ++++++++++--------- DemoApp/DemoApp/TwoViewController.swift | 19 ++++ KDInteractiveNavigationController.podspec | 2 +- ...ViewController+InteractiveNavigation.swift | 6 ++ 4 files changed, 73 insertions(+), 47 deletions(-) diff --git a/DemoApp/DemoApp/Base.lproj/Main.storyboard b/DemoApp/DemoApp/Base.lproj/Main.storyboard index ec70377..15b971c 100644 --- a/DemoApp/DemoApp/Base.lproj/Main.storyboard +++ b/DemoApp/DemoApp/Base.lproj/Main.storyboard @@ -1,8 +1,12 @@ - - + + + + + - + + @@ -14,26 +18,27 @@ - + - - + + + + @@ -48,20 +53,28 @@ - + + - - + @@ -85,20 +98,18 @@ - + - - + @@ -119,14 +130,13 @@ - + - - + - + @@ -142,10 +152,9 @@ - + - - + @@ -162,12 +171,11 @@ - + - - + @@ -200,13 +207,12 @@ - - + + - - + @@ -226,7 +231,7 @@ - + @@ -237,12 +242,11 @@ - + - - + @@ -276,7 +279,6 @@ - @@ -295,7 +297,6 @@ - @@ -314,9 +315,9 @@ + - - + diff --git a/DemoApp/DemoApp/TwoViewController.swift b/DemoApp/DemoApp/TwoViewController.swift index 93f565e..3bfc6cf 100644 --- a/DemoApp/DemoApp/TwoViewController.swift +++ b/DemoApp/DemoApp/TwoViewController.swift @@ -31,5 +31,24 @@ class TwoViewController: UIViewController { // Pass the selected object to the new view controller. } */ + + @IBAction func showActivityVC() { + + let activityViewController = UIActivityViewController(activityItems: ["hello"], applicationActivities: nil) + activityViewController.interactiveNavigationBarHidden = true + activityViewController.excludedActivityTypes = [ + .postToWeibo, + .print, + .assignToContact, + .saveToCameraRoll, + .addToReadingList, + .postToFlickr, + .postToVimeo, + .assignToContact, + .postToTencentWeibo, + .airDrop + ] + self.present(activityViewController, animated: true, completion: nil) + } } diff --git a/KDInteractiveNavigationController.podspec b/KDInteractiveNavigationController.podspec index 363319e..0cb69a3 100644 --- a/KDInteractiveNavigationController.podspec +++ b/KDInteractiveNavigationController.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "KDInteractiveNavigationController" - s.version = "0.2" + s.version = "0.3" s.summary = "A UINavigationController subclass that support interactive UINavigationbar with hidden or show." s.homepage = "https://github.com/kingiol/KDInteractiveNavigationController" diff --git a/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift b/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift index dc818a0..396a5a3 100644 --- a/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift +++ b/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift @@ -43,6 +43,12 @@ extension UIViewController { func KD_interactiveViewWillAppear(_ animated: Bool) { KD_interactiveViewWillAppear(animated) + let excludeVCs = [ + "CKSMSComposeRemoteViewController", + "CKSMSComposeController", + ] + let vcName = NSStringFromClass(type(of: self)) + if excludeVCs.contains(vcName) { return } navigationController?.setNavigationBarHidden(interactiveNavigationBarHidden, animated: animated) } From 4844e187dec7fca76d92ea509be2a4c38e568369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E5=BF=97=E6=B5=A9?= Date: Tue, 19 Sep 2017 14:22:12 +0800 Subject: [PATCH 04/15] support for swift 4 fix a warning:"Method 'initialize()' defines Objective-C class method 'initialize', which is not guaranteed to be invoked by Swift and will be disallowed in future versions" --- .../project.pbxproj | 33 +++++++++++-- ...ViewController+InteractiveNavigation.swift | 46 ++++++++++++++----- 2 files changed, 63 insertions(+), 16 deletions(-) diff --git a/KDInteractiveNavigationController.xcodeproj/project.pbxproj b/KDInteractiveNavigationController.xcodeproj/project.pbxproj index 57c4c49..9e7f76f 100644 --- a/KDInteractiveNavigationController.xcodeproj/project.pbxproj +++ b/KDInteractiveNavigationController.xcodeproj/project.pbxproj @@ -97,12 +97,12 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0710; - LastUpgradeCheck = 0710; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = Kingiol; TargetAttributes = { 6260F7991C00A4A7003DC9FE = { CreatedOnToolsVersion = 7.1.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; }; }; @@ -154,13 +154,21 @@ 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -188,6 +196,8 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -202,13 +212,21 @@ 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -228,6 +246,9 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.1; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -239,6 +260,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -251,7 +273,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -259,6 +282,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -270,7 +294,8 @@ PRODUCT_BUNDLE_IDENTIFIER = com.kingiol.component.KDInteractiveNavigationController; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; }; name = Release; }; diff --git a/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift b/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift index 396a5a3..6b81145 100644 --- a/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift +++ b/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift @@ -12,9 +12,38 @@ private var didKDVCInitialized = false private var interactiveNavigationBarHiddenAssociationKey: UInt8 = 0 +protocol SelfAware: class { + static func awake() +} + +class NothingToSeeHere { + static func harmlessFunction() { + let typeCount = Int(objc_getClassList(nil, 0)) + let types = UnsafeMutablePointer.allocate(capacity: typeCount) + let autoreleasingTypes = AutoreleasingUnsafeMutablePointer(types) + objc_getClassList(autoreleasingTypes, Int32(typeCount)) + for index in 0 ..< typeCount { (types[index] as? SelfAware.Type)?.awake() } + types.deallocate(capacity: typeCount) + } +} +extension UIApplication { + private static let runOnce: Void = { + NothingToSeeHere.harmlessFunction() + }() + override open var next: UIResponder? { + // Called before applicationDidFinishLaunching + UIApplication.runOnce + return super.next + } +} @IBDesignable -extension UIViewController { - +extension UIViewController: SelfAware { + static func awake() { + if !didKDVCInitialized { + replaceInteractiveMethods() + didKDVCInitialized = true + } + } @IBInspectable public var interactiveNavigationBarHidden: Bool { get { var associateValue = objc_getAssociatedObject(self, &interactiveNavigationBarHiddenAssociationKey) @@ -28,20 +57,13 @@ extension UIViewController { } } - override open static func initialize() { - if !didKDVCInitialized { - replaceInteractiveMethods() - didKDVCInitialized = true - } - } - fileprivate static func replaceInteractiveMethods() { method_exchangeImplementations( - class_getInstanceMethod(self, #selector(UIViewController.viewWillAppear(_:))), - class_getInstanceMethod(self, #selector(UIViewController.KD_interactiveViewWillAppear(_:)))) + class_getInstanceMethod(self, #selector(UIViewController.viewWillAppear(_:)))!, + class_getInstanceMethod(self, #selector(UIViewController.KD_interactiveViewWillAppear(_:)))!) } - func KD_interactiveViewWillAppear(_ animated: Bool) { + @objc func KD_interactiveViewWillAppear(_ animated: Bool) { KD_interactiveViewWillAppear(animated) let excludeVCs = [ "CKSMSComposeRemoteViewController", From 01d483846b0a3d7c47ffd641f64b14c956c052f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E5=BF=97=E6=B5=A9?= Date: Tue, 19 Sep 2017 14:49:13 +0800 Subject: [PATCH 05/15] support for carthage --- .../project.pbxproj | 2 + ...KDInteractiveNavigationController.xcscheme | 82 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 KDInteractiveNavigationController.xcodeproj/xcshareddata/xcschemes/KDInteractiveNavigationController.xcscheme diff --git a/KDInteractiveNavigationController.xcodeproj/project.pbxproj b/KDInteractiveNavigationController.xcodeproj/project.pbxproj index 9e7f76f..e93bf65 100644 --- a/KDInteractiveNavigationController.xcodeproj/project.pbxproj +++ b/KDInteractiveNavigationController.xcodeproj/project.pbxproj @@ -269,6 +269,7 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_CFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = com.kingiol.component.KDInteractiveNavigationController; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -291,6 +292,7 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_CFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = com.kingiol.component.KDInteractiveNavigationController; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/KDInteractiveNavigationController.xcodeproj/xcshareddata/xcschemes/KDInteractiveNavigationController.xcscheme b/KDInteractiveNavigationController.xcodeproj/xcshareddata/xcschemes/KDInteractiveNavigationController.xcscheme new file mode 100644 index 0000000..e98c092 --- /dev/null +++ b/KDInteractiveNavigationController.xcodeproj/xcshareddata/xcschemes/KDInteractiveNavigationController.xcscheme @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 1a2f4ba25e39fdd030a15cd45c4fc82e7245f34e Mon Sep 17 00:00:00 2001 From: kingiol Date: Mon, 16 Oct 2017 14:39:12 +0800 Subject: [PATCH 06/15] ... --- .travis.yml | 23 ++++++++++++++++++ .../UserInterfaceState.xcuserstate | Bin 14051 -> 16078 bytes ...KDInteractiveNavigationController.xcscheme | 2 ++ .../xcschemes/xcschememanagement.plist | 2 +- 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 .travis.yml rename KDInteractiveNavigationController.xcodeproj/{xcuserdata/kingiol.xcuserdatad => xcshareddata}/xcschemes/KDInteractiveNavigationController.xcscheme (99%) diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..9c980e9 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,23 @@ +language: objective-c +osx_image: xcode7.3 +xcode_project: KDInteractiveNavigationController +# xcode_workspace: +xcode_scheme: KDInteractiveNavigationController +xcode_sdk: iphonesimulator9.3 +env: + global: + - FRAMEWORK_NAME=KDInteractiveNavigationController +before_install: + - brew update + - brew outdated carthage || brew upgrade carthage +before_script: + # bootstrap the dependencies for the project + # you can remove if you don't have dependencies + - carthage bootstrap +before_deploy: + - carthage build --no-skip-current + - carthage archive $FRAMEWORK_NAME +skip_cleanup: true +on: + repo: repo/repo + tags: true \ No newline at end of file diff --git a/KDInteractiveNavigationController.xcodeproj/project.xcworkspace/xcuserdata/kingiol.xcuserdatad/UserInterfaceState.xcuserstate b/KDInteractiveNavigationController.xcodeproj/project.xcworkspace/xcuserdata/kingiol.xcuserdatad/UserInterfaceState.xcuserstate index eab92b31ed59590f156522a414c055b270a71900..3d0d68d05e9fbd3ca3764b6fa58d0aa0fc67532b 100644 GIT binary patch literal 16078 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 WpVJX4Xd*&{ckXuKJ^Vk%_x}I@o<3^; literal 14051 zcmdT~2Y8d!`adJ1N!m0!=}yzErb+h%k(Lf98%j%=A#Kw(&^9$mfeOg^KoQ)Epr{BP zEElNAa4%xH>^?$y6P1_(|x%c@$UN1aPlbrd!=Y8MbJI<+VZ}Ip8 znVGKu2oS)42lzn1%jV_O8t1!xevh}U*66L9>#h&@rx{(o`eqMpo?;Am+Z6z=*tlH| z#{eOS07{?&YG46YkP2)d4cLJLq=O8Q1B$=|FcC}wlR*`j0;)j`mC>7aIHp+pSC>ISuL(y6zUFcEt7}}2xpr_DbbQB#! z$I&b31UiXcMX#av(EI2E^db5P{S$qRK0)81@6iwFNAwdqhki!CU@?~9NF0S@a4e3) zDcFLo*p3}|D82*_!_%wbO zzlYz)AK=gN8TLmcE1&B1&GWar z>fL4D`i@q2TOhQt1|$OW7N7+>5CdXC9Eb-Agii!SNFs=ch>2tiNCJA0Oeu%~Mqnb5 zB#J~+T7)E)TuQ97+0{L54c-M6K3A*TDNCje6MPMBpSz)d*D0>LQg2(p=WS`BM(dPa zI+&!ePG^38MM+LsR-U6EH^YMOoPe`F4FlLBWzG$AU7=1le66hMtr37{~>AARiP==fv4Y52}{? z>h@Eqm-u|H&TcxOuy%aagdm!Q=6jl4v}Xowpwb!Zs<EWe)ZjLV6S?wCaGT#S`c(@wr`9 z6t4p{9`^!nx&EctzVpNuwnUlR?`dkgzzQru-1;83pH((Gt-{mdp6CiR&!Rs$9@vR8 zfr#!6%>9SHPmUO`xkf``;A~Gm<`NbU=~T}0#1_19+JGQW=cOV zl>v9FpA%|5XzT_Jz)g~fiC98XY6kOwq8oU?T%sq*-Jk`u5(7yg##wZk!HOuOzgham zxtiKMfsO|E#FXMI-T~}CPDuiwW9Im(G7qKK+vf67tq6d^&^8Oe<>zg)m~LYx#+2f= zje`~;fSEnMYFtOaMfEqRTs?rW>c#D`99-#?Df^||hbegQjW`r3MLgFBtdWQ-?}-rtd474UV`2ReMzlKyZ=h|`z*dsi1@0mFEU>f0)wo(Z z-2M_jyIg4K17HWMr`t(E7kH2qvfL(*DZ8M84;Vmb@*`jmE6rVCHz^`Ry1{PxWeEL$ zQHxBZ=elT7W*^jL=M~xY`Gwg_mV_2R0G{k;;t&}|jG>OF!L$7&v-?>iLOm~lm-?r? zOo|7l90#ue^Tv(D8XEa3c)i~|-ykE1l{3Y+Kw}Sh8=L~~kWx}XDhJH*UGPDeoqPyB zB4wnUJz5sy`o+kiMoMveanN)^yL|?}2%G#R_==1qqo^&@sRL+}QhYUMa-n(Ofgi)> z{X{n%J+Ns%hH*%Edq%aNy26ZkRL4BtmW+^=_%p_plse1Y^D~+}f##07j6am`MU40l zFcCs1p^gV4h#?R1p#TbD1QbCr8AryG31lLfL?)9eGKExcgOM-_7-2O1FNX@Kq&8VY z=23?;hyK5XY$e-R%bea4bTgcJX!_4`9K{SLHM+J2m#=|6VixeZW2QP+!^QaA@2ZZv zRyuk*_bWJ2rld2<+>Ne|mOz=iuA_-NU438EM0UDAK&^1HyWQvZ(=RR-SZN3%4-Ri~ z`}$FyDhIoFsGVKu6{v^F&;TSb1sb6Vnw>I*&+83v9+PEdJWIYz+vINZboe>KSkrSa z3~)WVcAuw};`nd6ND~2MDw%r{T45^Pzy{NxooGhimng4wk+muYG6x!Y>mUG#5Y zMm@W3TVP6OJBy?ZeSus_Fy~=GDxAd`UY{q#F5Rh#cw~^&%D@Sj3-joH`LF;M!Xh{X z4u#Q_^^gLN_0|WEX!d~HVqI-;M61iwHqgulO%!AoPG}6x9q1$VWIAai)5sjBETi8q zaE3=oWpTO8%PyDRA5rwXiJ*1E;UK#Q7Q+%ag3KUJ;v&-HupCxU%16RcuyXpqUe!S= z$V@Ve%>Fk602vN?L^uwP=N!PmX;N~iX$F^`=<@iw;RI0l2V?pO1iPpqR8o+gLuQ9) zt`0WUu}v3+*>E~#bOxLWXF=nPkf^ICkDV6qw7O~R*4j=Qh?@YXY(parhK6Kh{8jOU zJ75>Aqag9!GOl4fc&9zvrsnx4Tn8p=ZxHCHZ_hdxLV#6pSc*WR#THXI(hAr0X!emKYWd`Khc zl#AG*8!lv5znGzYo(f(L7gK)<7m=1OxP-K_5rB!qr@lpJGim(hE^`H3EdI{m zXbMtG^TXfMM(Sn4w03+jL5>O8zygacv{d^2G+d>Mbl#*;j2%8JrQ~sNvg2e$ z(Tqh|MTK^KR!(NtlG;Uud0A|PIoL%#4WHp$6uFkH;5-T^;v=kocmci$Um{nNm1Na< z{(*A`{{oTU2qN+|{}CdGuvd0|VC9sV`<)$|1aWE-I@|QBpp;5!$Z#CKPhsT)iZma= znQYys&gFN{pr1Z>3w6KqDYTOtNdt!kpTJM6$5&CQcf(KE9F9e#­WLvAM0u*ke1 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 by)b=r`h@iAV3ZCJ;y!u#+-K--`qcje-|p4i diff --git a/KDInteractiveNavigationController.xcodeproj/xcuserdata/kingiol.xcuserdatad/xcschemes/KDInteractiveNavigationController.xcscheme b/KDInteractiveNavigationController.xcodeproj/xcshareddata/xcschemes/KDInteractiveNavigationController.xcscheme similarity index 99% rename from KDInteractiveNavigationController.xcodeproj/xcuserdata/kingiol.xcuserdatad/xcschemes/KDInteractiveNavigationController.xcscheme rename to KDInteractiveNavigationController.xcodeproj/xcshareddata/xcschemes/KDInteractiveNavigationController.xcscheme index d8174df..51a5852 100644 --- a/KDInteractiveNavigationController.xcodeproj/xcuserdata/kingiol.xcuserdatad/xcschemes/KDInteractiveNavigationController.xcscheme +++ b/KDInteractiveNavigationController.xcodeproj/xcshareddata/xcschemes/KDInteractiveNavigationController.xcscheme @@ -26,6 +26,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" shouldUseLaunchSchemeArgsEnv = "YES"> SchemeUserState - KDInteractiveNavigationController.xcscheme + KDInteractiveNavigationController.xcscheme_^#shared#^_ orderHint 0 From e930d26f6fe6d987a92c30e6183daaeefbe8e47c Mon Sep 17 00:00:00 2001 From: kingiol Date: Mon, 16 Oct 2017 15:00:29 +0800 Subject: [PATCH 07/15] update --- .travis.yml | 1 + .../UserInterfaceState.xcuserstate | Bin 16196 -> 16227 bytes ...ViewController+InteractiveNavigation.swift | 41 +++++++++--------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9c980e9..8bdeb7b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ xcode_project: KDInteractiveNavigationController # xcode_workspace: xcode_scheme: KDInteractiveNavigationController xcode_sdk: iphonesimulator9.3 +osx_image: xcode9 env: global: - FRAMEWORK_NAME=KDInteractiveNavigationController diff --git a/KDInteractiveNavigationController.xcodeproj/project.xcworkspace/xcuserdata/kingiol.xcuserdatad/UserInterfaceState.xcuserstate b/KDInteractiveNavigationController.xcodeproj/project.xcworkspace/xcuserdata/kingiol.xcuserdatad/UserInterfaceState.xcuserstate index c0f7f7e1deb0eda9e621016cbb03533b97425b0c..31b9d10b7fa7134416f24a97170460f5676b93da 100644 GIT binary patch delta 1435 zcmY+EYfKbp6o!Qz1&LG?MJPD;Z@#&)GvCZCtrD+LDhg|H5vXEuflZ1c2n#Av*(H>E zzeG`qP)dljH5wH05>pFkP*7@9EY;d7UJy`}DpIf2SX=c+&z~pfeR9svx4E#Z@Sr`& zV{(0Jkjn(G#9C*65;w;dKQ|#U>C<`hlNThXEVQSlr7y7B5;L;WvzJHZ+Lt)CCyftr zC0cFK&RLFv1gmXsbaZ6WziX^LBP+$v&uWXx$aUt;aX6P|XQexG=UZ(NnRchs`ug^@ zPI>n%#$J$}pXYq7ZFvQmj##^Maf+Y+JDZrDyV$wZp5};-{Onz3&0mu0$aQgiI%PU%YB&9E>Nh>ZMqq)M8JmPn!KPsm zSR@vOeT+q8v#?lfHWoMJzwz{V!y%5hd<+HK zuX%dAs_<%jAATHf!dvhTyc_Su@8Eawe*8W@fDhu2h+%{`;Y0WmeuO^}Km-vX1Ws6p zIYbJvj95$55KY7d;u_II+$Q>nd&D5|hK4^QJ))jc!r-?TUFOOK>S(E)TI9ZZj>MOvoKv`QbKPtXl?6Mc$FW0o>2nbnMo zDPoG55@sv2jVWbzGG$CT^A&TRdCGF^T-NmkTgmQYYuSTrJ$r;b#x}91*%tOJ+s6LJ zUSn^tU2HddkNuNRE0)c=6W?%syfC(TROb3x53d{gAfekDKIlu|>!E#UlR)W>Q z1&Y8nPzrW}GO!y|fJ#sWs=*%62yTLxoWw*NiU>VvXAU5`^o-t zfE*+T%e*YgvaHA#@2s#{&B zZda?+z3P7TfO<$hqBf`})n@gKdRA>ydyp>*MiD3mC7=|PiSp43v=SAfBD5ZDLR--` zv;*xzRcJ3dgc?yRYIC8VP&?{CSJ8FUg}PBMx}#y5q)pK5+9J)VxwT^LOKqLDQQNFl zXieIAty8<9-O_rsKCNGSpbct|buZmVAECdekJ88JNw3ix z^ftrG@HNI5xB(5(kPWjDZcH|&8uKHJC}V~ZXT%!`Mv`GS78#jFmXTxR8Ow}fqr_Na qthYdmVF|N*XbHD;Sgu++E!Qm%El(^j-!zP;=Nn?x|1TcPtA7B(UD+l8 delta 1411 zcmY+EYfKbZ7>0$NDi#%_DpheVJ9FmD%-P+UIWt>oj13~Cp_WCtigH`ZQjx1Hh(vLh z7)fh1SinoP7O+7 z-`l5qP%Wv`T?W^+a9hN}MUhd_F|l!r&B%8a zL^_;#xjAW${5V@wbVfmzqtbWQ6qM}y&Ko~2H$T&vXaCd@7UK4FzwIV`eJ1;byFJ|F z+y?hp_gj?*X6^i_%COVWWN0&V8ZH`c8J-wk5PpO}NQ8;75DK9YRw9s?P0ShdUpzft zag6;nUxS$2QbQ(8@qxvc~YG9*ORmZoXxb=IP}sCD)M~$sJ@ZSx>f-on$w8 ziabr8CC`z)WFL8nyh9F<_sBu=0r`j=B8SQ6@3Qs9LIpIzn|(C#fFl z4An2$h~E~1O+)pQB%qD$#@bOl{SZ*|ez=^gY} z^w)F^y_-Hs-(@B-m|4t}Fm=oxriD4gv@t(3N15Zy38ss=#9U>rG1r;jm;q*xxz9Xg zhL~r}2=l_|ZJcQIF-|saHtsT38*7cbzUF4nt zPv8Tlfp@_S5CB*J00bgHKnL?cB!~vFU@=$%5F{tADa|AW875AaX; zA^s^p497t)I39XKKR6STkbx}J;RkRY41u9A3`W9am<}^w7R-e!VKH0-U9c2>4$EOP zJPq%|XK)0L3Le5F!AI~F`~=rbVU7?iqzbEq3ZYu47xoKH!Vkia!Y{%R;keK#oD_P5 zCn6A|#S(FYxJfJ*E5t40HnB#m6YItO;X0DMHwg$ ztw#;$06K^cp*GZodQl&`jIN;@s2|-!gXjTzgoe;C8ZnJGd7CDhd`$;U9i~oGx2eax z%v@+LG8dcISf*Nx7S6(3M9c4%2bN*Wb9szxkjKhCvY$Lv_Lp5V|3ZWonwqjS7D+NlavO(FTY*s3jtxC1BTd7m_ zD*Kd1rArx9MpRBUtAT2e8m`8w@oIvatfs1&YL2=>b*d}XRcfiaL9JA4)CRTDrGBS2 ztF7u`^{CpRcB<;`6u< zU&eRwJ^UyB3qQn<@l*T{evU`A@!Ay4tc7UtT8>txRcnpfU2RZ%tc~hky0<=2_t67% zN@w(?oDOwS$GTMy)Mx9#`T{*%kI*Ca7(Gr;)6?~3dZyLOI@RiLoo)@VwptHc+pR~f X7pzyTH(xD`r{^mYyZ=8t*8YD1na9!e diff --git a/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift b/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift index 6b81145..6748b72 100644 --- a/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift +++ b/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift @@ -16,26 +16,27 @@ protocol SelfAware: class { static func awake() } -class NothingToSeeHere { - static func harmlessFunction() { - let typeCount = Int(objc_getClassList(nil, 0)) - let types = UnsafeMutablePointer.allocate(capacity: typeCount) - let autoreleasingTypes = AutoreleasingUnsafeMutablePointer(types) - objc_getClassList(autoreleasingTypes, Int32(typeCount)) - for index in 0 ..< typeCount { (types[index] as? SelfAware.Type)?.awake() } - types.deallocate(capacity: typeCount) - } -} -extension UIApplication { - private static let runOnce: Void = { - NothingToSeeHere.harmlessFunction() - }() - override open var next: UIResponder? { - // Called before applicationDidFinishLaunching - UIApplication.runOnce - return super.next - } -} +//class NothingToSeeHere { +// static func harmlessFunction() { +// let typeCount = Int(objc_getClassList(nil, 0)) +// let types = UnsafeMutablePointer.allocate(capacity: typeCount) +// let autoreleasingTypes = AutoreleasingUnsafeMutablePointer(types) +// objc_getClassList(autoreleasingTypes, Int32(typeCount)) +// for index in 0 ..< typeCount { (types[index] as? SelfAware.Type)?.awake() } +// types.deallocate(capacity: typeCount) +// } +//} +//extension UIApplication { +// private static let runOnce: Void = { +// NothingToSeeHere.harmlessFunction() +// }() +// override open var next: UIResponder? { +// // Called before applicationDidFinishLaunching +// UIApplication.runOnce +// return super.next +// } +//} + @IBDesignable extension UIViewController: SelfAware { static func awake() { From a00e583e0ef4389d466df95c1e36c91882961c77 Mon Sep 17 00:00:00 2001 From: kingiol Date: Mon, 16 Oct 2017 15:16:27 +0800 Subject: [PATCH 08/15] ... --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8bdeb7b..88d8eda 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ before_install: before_script: # bootstrap the dependencies for the project # you can remove if you don't have dependencies - - carthage bootstrap + # - carthage bootstrap before_deploy: - carthage build --no-skip-current - carthage archive $FRAMEWORK_NAME From a710188396406c56f417223ba939c494e563158f Mon Sep 17 00:00:00 2001 From: kingiol Date: Mon, 16 Oct 2017 15:28:19 +0800 Subject: [PATCH 09/15] ... : --- .travis.yml | 2 +- README.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 88d8eda..07f6e50 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ xcode_project: KDInteractiveNavigationController # xcode_workspace: xcode_scheme: KDInteractiveNavigationController xcode_sdk: iphonesimulator9.3 -osx_image: xcode9 +osx_image: xcode8 env: global: - FRAMEWORK_NAME=KDInteractiveNavigationController diff --git a/README.md b/README.md index 44d4786..0203f02 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ ![Swift](https://img.shields.io/badge/language-Swift-orange.svg) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/kingiol/KDInteractiveNavigationController/blob/master/LICENSE) [![CocoaPods](https://img.shields.io/cocoapods/v/KDInteractiveNavigationController.svg)](https://github.com/kingiol/KDInteractiveNavigationController) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/kingiol/KDInteractiveNavigationController) ![screenshots](./etc/screenshots.gif) From 98ba6bc70a9e067f3bfbea62ff846a61e9b90fef Mon Sep 17 00:00:00 2001 From: kingiol Date: Mon, 16 Oct 2017 15:41:44 +0800 Subject: [PATCH 10/15] update --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 07f6e50..d68e84a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ xcode_project: KDInteractiveNavigationController # xcode_workspace: xcode_scheme: KDInteractiveNavigationController xcode_sdk: iphonesimulator9.3 -osx_image: xcode8 +osx_image: xcode9.0 env: global: - FRAMEWORK_NAME=KDInteractiveNavigationController From cbc3718199c55e57a6c351f8b90a2d5b4fc95d01 Mon Sep 17 00:00:00 2001 From: elano50 Date: Mon, 23 Oct 2017 05:56:26 +0300 Subject: [PATCH 11/15] Fixed method swizling (#9) --- ...ViewController+InteractiveNavigation.swift | 101 +++++++----------- 1 file changed, 40 insertions(+), 61 deletions(-) diff --git a/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift b/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift index 6748b72..ebec28d 100644 --- a/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift +++ b/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift @@ -8,71 +8,50 @@ import UIKit -private var didKDVCInitialized = false - private var interactiveNavigationBarHiddenAssociationKey: UInt8 = 0 -protocol SelfAware: class { - static func awake() +extension UIApplication { + override open var next: UIResponder? { + UIViewController.awake + return super.next + } } -//class NothingToSeeHere { -// static func harmlessFunction() { -// let typeCount = Int(objc_getClassList(nil, 0)) -// let types = UnsafeMutablePointer.allocate(capacity: typeCount) -// let autoreleasingTypes = AutoreleasingUnsafeMutablePointer(types) -// objc_getClassList(autoreleasingTypes, Int32(typeCount)) -// for index in 0 ..< typeCount { (types[index] as? SelfAware.Type)?.awake() } -// types.deallocate(capacity: typeCount) -// } -//} -//extension UIApplication { -// private static let runOnce: Void = { -// NothingToSeeHere.harmlessFunction() -// }() -// override open var next: UIResponder? { -// // Called before applicationDidFinishLaunching -// UIApplication.runOnce -// return super.next -// } -//} - -@IBDesignable -extension UIViewController: SelfAware { - static func awake() { - if !didKDVCInitialized { - replaceInteractiveMethods() - didKDVCInitialized = true - } - } - @IBInspectable public var interactiveNavigationBarHidden: Bool { - get { - var associateValue = objc_getAssociatedObject(self, &interactiveNavigationBarHiddenAssociationKey) - if associateValue == nil { - associateValue = false - } - return associateValue as! Bool; - } - set { - objc_setAssociatedObject(self, &interactiveNavigationBarHiddenAssociationKey, newValue, .OBJC_ASSOCIATION_RETAIN) - } +extension UIViewController { + static let awake : Void = { + replaceInteractiveMethods() + return + }() + + @IBInspectable public var interactiveNavigationBarHidden: Bool { + get { + var associateValue = objc_getAssociatedObject(self, &interactiveNavigationBarHiddenAssociationKey) + if associateValue == nil { + associateValue = false + } + return associateValue as! Bool; } - - fileprivate static func replaceInteractiveMethods() { - method_exchangeImplementations( - class_getInstanceMethod(self, #selector(UIViewController.viewWillAppear(_:)))!, - class_getInstanceMethod(self, #selector(UIViewController.KD_interactiveViewWillAppear(_:)))!) + set { + objc_setAssociatedObject(self, &interactiveNavigationBarHiddenAssociationKey, newValue, .OBJC_ASSOCIATION_RETAIN) } - - @objc func KD_interactiveViewWillAppear(_ animated: Bool) { - KD_interactiveViewWillAppear(animated) - let excludeVCs = [ - "CKSMSComposeRemoteViewController", - "CKSMSComposeController", - ] - let vcName = NSStringFromClass(type(of: self)) - if excludeVCs.contains(vcName) { return } - navigationController?.setNavigationBarHidden(interactiveNavigationBarHidden, animated: animated) - } - + } + + fileprivate static func replaceInteractiveMethods() { + method_exchangeImplementations( + class_getInstanceMethod(self, #selector(UIViewController.viewWillAppear(_:)))!, + class_getInstanceMethod(self, #selector(UIViewController.KD_interactiveViewWillAppear(_:)))!) + } + + @objc func KD_interactiveViewWillAppear(_ animated: Bool) { + KD_interactiveViewWillAppear(animated) + let excludeVCs = [ + "CKSMSComposeRemoteViewController", + "CKSMSComposeController", + ] + let vcName = NSStringFromClass(type(of: self)) + if excludeVCs.contains(vcName) { return } + navigationController?.setNavigationBarHidden(interactiveNavigationBarHidden, animated: animated) + } + } + From 89398e22728f743ce37d9d0649b3e64f29f6b989 Mon Sep 17 00:00:00 2001 From: kingiol Date: Mon, 23 Oct 2017 12:02:26 +0800 Subject: [PATCH 12/15] update --- .swift-version | 2 +- .travis.yml | 7 +- DemoApp/DemoApp.xcodeproj/project.pbxproj | 29 ++++++-- DemoApp/Pods/Pods.xcodeproj/project.pbxproj | 33 +++++++-- ...ViewController+InteractiveNavigation.swift | 68 +++++++++---------- 5 files changed, 92 insertions(+), 47 deletions(-) diff --git a/.swift-version b/.swift-version index 9f55b2c..5186d07 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -3.0 +4.0 diff --git a/.travis.yml b/.travis.yml index d68e84a..a04e110 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,9 @@ language: objective-c -osx_image: xcode7.3 +osx_image: xcode9 xcode_project: KDInteractiveNavigationController # xcode_workspace: xcode_scheme: KDInteractiveNavigationController -xcode_sdk: iphonesimulator9.3 -osx_image: xcode9.0 +xcode_sdk: iphonesimulator10.0 env: global: - FRAMEWORK_NAME=KDInteractiveNavigationController @@ -21,4 +20,4 @@ before_deploy: skip_cleanup: true on: repo: repo/repo - tags: true \ No newline at end of file + tags: true diff --git a/DemoApp/DemoApp.xcodeproj/project.pbxproj b/DemoApp/DemoApp.xcodeproj/project.pbxproj index 553c720..55594cd 100644 --- a/DemoApp/DemoApp.xcodeproj/project.pbxproj +++ b/DemoApp/DemoApp.xcodeproj/project.pbxproj @@ -129,13 +129,13 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0710; - LastUpgradeCheck = 0710; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = Kingiol; TargetAttributes = { 6260F8031C00CE99003DC9FE = { CreatedOnToolsVersion = 7.1.1; DevelopmentTeam = BW886X295K; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; }; }; @@ -261,13 +261,21 @@ 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -306,13 +314,21 @@ 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; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -331,6 +347,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.1; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -340,6 +357,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = BF6FFFD1C1DE246CCC7B8EC8 /* Pods-DemoApp.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; DEVELOPMENT_TEAM = BW886X295K; @@ -347,7 +365,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.kingiol.DemoApp; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -355,6 +374,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 20EF51AEA7B58B499FBB4251 /* Pods-DemoApp.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; DEVELOPMENT_TEAM = BW886X295K; @@ -362,7 +382,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.kingiol.DemoApp; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Release; }; diff --git a/DemoApp/Pods/Pods.xcodeproj/project.pbxproj b/DemoApp/Pods/Pods.xcodeproj/project.pbxproj index b6bd9e7..c66636c 100644 --- a/DemoApp/Pods/Pods.xcodeproj/project.pbxproj +++ b/DemoApp/Pods/Pods.xcodeproj/project.pbxproj @@ -243,10 +243,10 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0700; + LastUpgradeCheck = 0900; TargetAttributes = { 0561928EC4BD64F22F762FE0759AB365 = { - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; 3129F8A9E159D3D6A45801805ADC09AA = { LastSwiftMigration = 0800; @@ -311,20 +311,30 @@ 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; 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; + 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_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "POD_CONFIGURATION_DEBUG=1", @@ -355,19 +365,29 @@ 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; 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; + 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_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "POD_CONFIGURATION_RELEASE=1", "$(inherited)", @@ -381,6 +401,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SYMROOT = "${SRCROOT}/../build"; VALIDATE_PRODUCT = YES; }; @@ -390,6 +411,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = CF36111D03FDDB19B87A10AABCEE93BD /* Pods-DemoApp.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -426,6 +448,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 4F6DA398B8798082C8619CE9DDAC896F /* Pods-DemoApp.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -485,7 +508,8 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -517,7 +541,8 @@ PRODUCT_NAME = KDInteractiveNavigationController; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; diff --git a/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift b/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift index ebec28d..4f59dfc 100644 --- a/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift +++ b/KDInteractiveNavigationController/UIViewController+InteractiveNavigation.swift @@ -11,47 +11,47 @@ import UIKit private var interactiveNavigationBarHiddenAssociationKey: UInt8 = 0 extension UIApplication { - override open var next: UIResponder? { - UIViewController.awake - return super.next - } + override open var next: UIResponder? { + UIViewController.awake + return super.next + } } extension UIViewController { - static let awake : Void = { - replaceInteractiveMethods() - return - }() + static let awake : Void = { + replaceInteractiveMethods() + return + }() - @IBInspectable public var interactiveNavigationBarHidden: Bool { - get { - var associateValue = objc_getAssociatedObject(self, &interactiveNavigationBarHiddenAssociationKey) - if associateValue == nil { - associateValue = false - } - return associateValue as! Bool; - } - set { - objc_setAssociatedObject(self, &interactiveNavigationBarHiddenAssociationKey, newValue, .OBJC_ASSOCIATION_RETAIN) + @IBInspectable public var interactiveNavigationBarHidden: Bool { + get { + var associateValue = objc_getAssociatedObject(self, &interactiveNavigationBarHiddenAssociationKey) + if associateValue == nil { + associateValue = false + } + return associateValue as! Bool; + } + set { + objc_setAssociatedObject(self, &interactiveNavigationBarHiddenAssociationKey, newValue, .OBJC_ASSOCIATION_RETAIN) + } } - } - fileprivate static func replaceInteractiveMethods() { - method_exchangeImplementations( - class_getInstanceMethod(self, #selector(UIViewController.viewWillAppear(_:)))!, - class_getInstanceMethod(self, #selector(UIViewController.KD_interactiveViewWillAppear(_:)))!) - } + fileprivate static func replaceInteractiveMethods() { + method_exchangeImplementations( + class_getInstanceMethod(self, #selector(UIViewController.viewWillAppear(_:)))!, + class_getInstanceMethod(self, #selector(UIViewController.KD_interactiveViewWillAppear(_:)))!) + } - @objc func KD_interactiveViewWillAppear(_ animated: Bool) { - KD_interactiveViewWillAppear(animated) - let excludeVCs = [ - "CKSMSComposeRemoteViewController", - "CKSMSComposeController", - ] - let vcName = NSStringFromClass(type(of: self)) - if excludeVCs.contains(vcName) { return } - navigationController?.setNavigationBarHidden(interactiveNavigationBarHidden, animated: animated) - } + @objc func KD_interactiveViewWillAppear(_ animated: Bool) { + KD_interactiveViewWillAppear(animated) + let excludeVCs = [ + "CKSMSComposeRemoteViewController", + "CKSMSComposeController", + ] + let vcName = NSStringFromClass(type(of: self)) + if excludeVCs.contains(vcName) { return } + navigationController?.setNavigationBarHidden(interactiveNavigationBarHidden, animated: animated) + } } From 49c7a29dd7b0b443e98763cbe698c732ae107908 Mon Sep 17 00:00:00 2001 From: kingiol Date: Mon, 23 Oct 2017 14:27:45 +0800 Subject: [PATCH 13/15] update --- .travis.yml | 2 ++ DemoApp/DemoApp.xcodeproj/project.pbxproj | 5 ++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index a04e110..e86663d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,8 @@ before_script: # bootstrap the dependencies for the project # you can remove if you don't have dependencies # - carthage bootstrap +script: + - set -o pipefail && xcodebuild test -verbose -scheme "KDInteractiveNavigationController" -destination "platform=iOS Simulator,OS=10.0,name=iPhone 7 Plus" ONLY_ACTIVE_ARCH=NO | xcpretty before_deploy: - carthage build --no-skip-current - carthage archive $FRAMEWORK_NAME diff --git a/DemoApp/DemoApp.xcodeproj/project.pbxproj b/DemoApp/DemoApp.xcodeproj/project.pbxproj index 55594cd..aaf1a27 100644 --- a/DemoApp/DemoApp.xcodeproj/project.pbxproj +++ b/DemoApp/DemoApp.xcodeproj/project.pbxproj @@ -134,7 +134,6 @@ TargetAttributes = { 6260F8031C00CE99003DC9FE = { CreatedOnToolsVersion = 7.1.1; - DevelopmentTeam = BW886X295K; LastSwiftMigration = 0900; }; }; @@ -360,7 +359,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = BW886X295K; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = DemoApp/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.kingiol.DemoApp; @@ -377,7 +376,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = BW886X295K; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = DemoApp/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.kingiol.DemoApp; From 7a5478bd6b97d76f600812c673d9624fabec6b6b Mon Sep 17 00:00:00 2001 From: kingiol Date: Tue, 24 Oct 2017 10:15:52 +0800 Subject: [PATCH 14/15] update --- .../UserInterfaceState.xcuserstate | Bin 16227 -> 16008 bytes README.md | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/KDInteractiveNavigationController.xcodeproj/project.xcworkspace/xcuserdata/kingiol.xcuserdatad/UserInterfaceState.xcuserstate b/KDInteractiveNavigationController.xcodeproj/project.xcworkspace/xcuserdata/kingiol.xcuserdatad/UserInterfaceState.xcuserstate index 31b9d10b7fa7134416f24a97170460f5676b93da..f9b1b940fcc78df59034fdecc74c1950adc031dd 100644 GIT binary patch delta 8214 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 K@9<~pv;PAfWc-r= diff --git a/README.md b/README.md index 0203f02..1fa22c7 100644 --- a/README.md +++ b/README.md @@ -57,10 +57,10 @@ $ brew install carthage To integrate KDInteractiveNavigationController into your Xcode project using Carthage, specify it in your `Cartfile`: ```ogdl -github 'kingiol/AHKNavigationController' +github 'kingiol/KDInteractiveNavigationController' ``` -Run `carthage` to build the framework and drag the built `AHKNavigationController.framework` into your Xcode project. +Run `carthage` to build the framework and drag the built `KDInteractiveNavigationController.framework` into your Xcode project. ## Usage - Easy to Use From 6ba6c6a97e6e4cef4b58b8a62c4dd71bd356a165 Mon Sep 17 00:00:00 2001 From: kingiol Date: Tue, 24 Oct 2017 10:25:33 +0800 Subject: [PATCH 15/15] update pod --- KDInteractiveNavigationController.podspec | 2 +- .../UserInterfaceState.xcuserstate | Bin 16008 -> 16008 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/KDInteractiveNavigationController.podspec b/KDInteractiveNavigationController.podspec index 0cb69a3..86d11dd 100644 --- a/KDInteractiveNavigationController.podspec +++ b/KDInteractiveNavigationController.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "KDInteractiveNavigationController" - s.version = "0.3" + s.version = "0.4" s.summary = "A UINavigationController subclass that support interactive UINavigationbar with hidden or show." s.homepage = "https://github.com/kingiol/KDInteractiveNavigationController" diff --git a/KDInteractiveNavigationController.xcodeproj/project.xcworkspace/xcuserdata/kingiol.xcuserdatad/UserInterfaceState.xcuserstate b/KDInteractiveNavigationController.xcodeproj/project.xcworkspace/xcuserdata/kingiol.xcuserdatad/UserInterfaceState.xcuserstate index f9b1b940fcc78df59034fdecc74c1950adc031dd..a06da6ffe805894b41fd8403328ac40bcf6ea108 100644 GIT binary patch delta 29 kcmeCE?Wo;wRFL(StYUlM=2L;M1& delta 29 kcmeCE?Wo;wRFL)N@-`OD&8GxK#DUD#=AWA%Yb+H70LZlsfB*mh