Skip to content

Commit 9b23d10

Browse files
committed
iOS 14 support
1 parent e42e856 commit 9b23d10

File tree

8 files changed

+101
-5
lines changed

8 files changed

+101
-5
lines changed

KMNavigationBarTransition.podspec

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Pod::Spec.new do |s|
22

33
s.name = "KMNavigationBarTransition"
4-
s.version = "1.1.6"
4+
s.version = "1.1.7"
55
s.summary = "A drop-in universal library makes transition animations smooth between different navigation bar styles while pushing or popping."
66

77
s.description = <<-DESC
@@ -26,6 +26,10 @@ Pod::Spec.new do |s|
2626

2727
s.source_files = "KMNavigationBarTransition/*.{h,m}"
2828

29+
s.resource_bundles = {
30+
'KMNavigationBarTransition' => ['KMNavigationBarTransition/*.{xib}']
31+
}
32+
2933
s.frameworks = "UIKit"
3034

3135
s.requires_arc = true

KMNavigationBarTransition.xcodeproj/project.pbxproj

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
/* Begin PBXBuildFile section */
1010
CD4209391F7A47CF00A1EAF5 /* UIScrollView+KMNavigationBarTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = CDE74D801F7A457C003052BE /* UIScrollView+KMNavigationBarTransition.h */; };
11+
CD7C7F2C2512238F009BC6D8 /* KMNavigationBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD7C7F2B2512238F009BC6D8 /* KMNavigationBar.xib */; };
1112
CDA372851C39087D00E39A6D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDA372841C39087D00E39A6D /* AppDelegate.swift */; };
1213
CDA372881C39089200E39A6D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CDA372861C39089200E39A6D /* Main.storyboard */; };
1314
CDA3728A1C39089900E39A6D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CDA372891C39089900E39A6D /* Assets.xcassets */; };
@@ -37,6 +38,8 @@
3738
CDC722B41F72599F0077084B /* NSObject+KMNavigationBarTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = CDC722B21F72599F0077084B /* NSObject+KMNavigationBarTransition.m */; };
3839
CDD35A4C1F94CABE00EFDBD8 /* UIScrollView+KMNavigationBarTransition_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = CDD35A4B1F94CABE00EFDBD8 /* UIScrollView+KMNavigationBarTransition_internal.h */; };
3940
CDE74D821F7A457C003052BE /* UIScrollView+KMNavigationBarTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = CDE74D811F7A457C003052BE /* UIScrollView+KMNavigationBarTransition.m */; };
41+
CDF63EAF25135CE500C3E646 /* KMNavigationBarTransitionUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = CDF63EAD25135CE500C3E646 /* KMNavigationBarTransitionUtils.h */; };
42+
CDF63EB025135CE500C3E646 /* KMNavigationBarTransitionUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = CDF63EAE25135CE500C3E646 /* KMNavigationBarTransitionUtils.m */; };
4043
/* End PBXBuildFile section */
4144

4245
/* Begin PBXContainerItemProxy section */
@@ -64,6 +67,7 @@
6467
/* End PBXCopyFilesBuildPhase section */
6568

6669
/* Begin PBXFileReference section */
70+
CD7C7F2B2512238F009BC6D8 /* KMNavigationBar.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMNavigationBar.xib; sourceTree = "<group>"; };
6771
CDA3726F1C3907CE00E39A6D /* KMNavigationBarTransition-Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "KMNavigationBarTransition-Example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
6872
CDA372841C39087D00E39A6D /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = Example/AppDelegate.swift; sourceTree = SOURCE_ROOT; };
6973
CDA372871C39089200E39A6D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Example/Base.lproj/Main.storyboard; sourceTree = SOURCE_ROOT; };
@@ -96,6 +100,8 @@
96100
CDDFA1F61C3921BD00BFBA1B /* UIViewController+KMNavigationBarTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+KMNavigationBarTransition.m"; sourceTree = "<group>"; };
97101
CDE74D801F7A457C003052BE /* UIScrollView+KMNavigationBarTransition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+KMNavigationBarTransition.h"; sourceTree = "<group>"; };
98102
CDE74D811F7A457C003052BE /* UIScrollView+KMNavigationBarTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+KMNavigationBarTransition.m"; sourceTree = "<group>"; };
103+
CDF63EAD25135CE500C3E646 /* KMNavigationBarTransitionUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KMNavigationBarTransitionUtils.h; sourceTree = "<group>"; };
104+
CDF63EAE25135CE500C3E646 /* KMNavigationBarTransitionUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KMNavigationBarTransitionUtils.m; sourceTree = "<group>"; };
99105
/* End PBXFileReference section */
100106

101107
/* Begin PBXFrameworksBuildPhase section */
@@ -190,6 +196,9 @@
190196
CDC1BA0D1CE1DFE8006BE1B6 /* KMWeakObjectContainer.m */,
191197
CDDFA1F11C3921BD00BFBA1B /* KMSwizzle.h */,
192198
CDDFA1F21C3921BD00BFBA1B /* KMSwizzle.m */,
199+
CDF63EAD25135CE500C3E646 /* KMNavigationBarTransitionUtils.h */,
200+
CDF63EAE25135CE500C3E646 /* KMNavigationBarTransitionUtils.m */,
201+
CD7C7F2B2512238F009BC6D8 /* KMNavigationBar.xib */,
193202
CDC01B9C1E5CA46400F6F3E2 /* KMNavigationBarTransition.h */,
194203
CDC01B9E1E5CA46900F6F3E2 /* Info.plist */,
195204
);
@@ -209,6 +218,7 @@
209218
CDAA3BB31E5CB40E00666BB0 /* UIViewController+KMNavigationBarTransition_internal.h in Headers */,
210219
CDC01B9F1E5CA48400F6F3E2 /* UINavigationController+KMNavigationBarTransition.h in Headers */,
211220
CDC722B01F72590C0077084B /* UINavigationBar+KMNavigationBarTransition_internal.h in Headers */,
221+
CDF63EAF25135CE500C3E646 /* KMNavigationBarTransitionUtils.h in Headers */,
212222
CDD35A4C1F94CABE00EFDBD8 /* UIScrollView+KMNavigationBarTransition_internal.h in Headers */,
213223
CD4209391F7A47CF00A1EAF5 /* UIScrollView+KMNavigationBarTransition.h in Headers */,
214224
CDC01BA11E5CA48900F6F3E2 /* UIViewController+KMNavigationBarTransition.h in Headers */,
@@ -283,6 +293,7 @@
283293
developmentRegion = English;
284294
hasScannedForEncodings = 0;
285295
knownRegions = (
296+
English,
286297
en,
287298
Base,
288299
);
@@ -312,6 +323,7 @@
312323
isa = PBXResourcesBuildPhase;
313324
buildActionMask = 2147483647;
314325
files = (
326+
CD7C7F2C2512238F009BC6D8 /* KMNavigationBar.xib in Resources */,
315327
);
316328
runOnlyForDeploymentPostprocessing = 0;
317329
};
@@ -335,6 +347,7 @@
335347
isa = PBXSourcesBuildPhase;
336348
buildActionMask = 2147483647;
337349
files = (
350+
CDF63EB025135CE500C3E646 /* KMNavigationBarTransitionUtils.m in Sources */,
338351
CDC722B41F72599F0077084B /* NSObject+KMNavigationBarTransition.m in Sources */,
339352
CDC01BA41E5CA48F00F6F3E2 /* KMWeakObjectContainer.m in Sources */,
340353
CDC722AE1F7257EE0077084B /* UINavigationBar+KMNavigationBarTransition.m in Sources */,
@@ -418,6 +431,7 @@
418431
ONLY_ACTIVE_ARCH = YES;
419432
SDKROOT = iphoneos;
420433
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
434+
SWIFT_VERSION = 4.0;
421435
TARGETED_DEVICE_FAMILY = "1,2";
422436
};
423437
name = Debug;
@@ -458,6 +472,7 @@
458472
MTL_ENABLE_DEBUG_INFO = NO;
459473
SDKROOT = iphoneos;
460474
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
475+
SWIFT_VERSION = 4.0;
461476
TARGETED_DEVICE_FAMILY = "1,2";
462477
VALIDATE_PRODUCT = YES;
463478
};
@@ -472,7 +487,7 @@
472487
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
473488
PRODUCT_BUNDLE_IDENTIFIER = "com.mo.KMNavigationBarTransition-Example";
474489
PRODUCT_NAME = "$(TARGET_NAME)";
475-
SWIFT_VERSION = 3.0;
490+
SWIFT_VERSION = 4.0;
476491
};
477492
name = Debug;
478493
};
@@ -485,7 +500,7 @@
485500
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
486501
PRODUCT_BUNDLE_IDENTIFIER = "com.mo.KMNavigationBarTransition-Example";
487502
PRODUCT_NAME = "$(TARGET_NAME)";
488-
SWIFT_VERSION = 3.0;
503+
SWIFT_VERSION = 4.0;
489504
};
490505
name = Release;
491506
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
3+
<device id="retina6_1" orientation="portrait" appearance="light"/>
4+
<dependencies>
5+
<deployment identifier="iOS"/>
6+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/>
7+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
8+
</dependencies>
9+
<objects>
10+
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
11+
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
12+
<navigationBar contentMode="scaleToFill" id="EN9-bF-HJS">
13+
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
14+
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
15+
<items>
16+
<navigationItem id="ob3-YQ-Loh"/>
17+
</items>
18+
<point key="canvasLocation" x="-94" y="88"/>
19+
</navigationBar>
20+
</objects>
21+
</document>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//
2+
// KMNavigationBarTransitionUtils.h
3+
// KMNavigationBarTransition
4+
//
5+
// Created by Zhouqi Mo on 2020/9/17.
6+
// Copyright © 2020 Zhouqi Mo. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
11+
NS_ASSUME_NONNULL_BEGIN
12+
13+
@interface KMNavigationBarTransitionUtils : NSObject
14+
15+
+ (NSBundle *)getBundle;
16+
17+
@end
18+
19+
NS_ASSUME_NONNULL_END
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//
2+
// KMNavigationBarTransitionUtils.m
3+
// KMNavigationBarTransition
4+
//
5+
// Created by Zhouqi Mo on 2020/9/17.
6+
// Copyright © 2020 Zhouqi Mo. All rights reserved.
7+
//
8+
9+
#import "KMNavigationBarTransitionUtils.h"
10+
#import "KMWeakObjectContainer.h"
11+
12+
@implementation KMNavigationBarTransitionUtils
13+
14+
+ (NSBundle *)getBundle {
15+
NSBundle *bundle = [NSBundle bundleForClass:KMWeakObjectContainer.class];
16+
NSURL *bundleURL = [bundle URLForResource:@"KMNavigationBarTransition" withExtension:@"bundle"];
17+
if (!bundleURL) {
18+
if ([bundle.bundlePath hasSuffix:@"KMNavigationBarTransition.framework"]) {
19+
return bundle;
20+
}
21+
} else {
22+
bundle = [NSBundle bundleWithURL:bundleURL];
23+
}
24+
return bundle ? bundle : [NSBundle mainBundle];
25+
}
26+
27+
@end

KMNavigationBarTransition/KMWeakObjectContainer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@
2626
extern void km_objc_setAssociatedWeakObject(id container, void *key, id value);
2727
extern id km_objc_getAssociatedWeakObject(id container, void *key);
2828

29+
@interface KMWeakObjectContainer : NSObject
30+
31+
@end

KMNavigationBarTransition/KMWeakObjectContainer.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
#import "KMWeakObjectContainer.h"
2525
#import <objc/runtime.h>
2626

27-
@interface KMWeakObjectContainer : NSObject
27+
@interface KMWeakObjectContainer ()
2828
@property (nonatomic, weak) id object;
2929
@end
3030

KMNavigationBarTransition/UIViewController+KMNavigationBarTransition.m

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#import "UINavigationController+KMNavigationBarTransition_internal.h"
2727
#import "UINavigationBar+KMNavigationBarTransition_internal.h"
2828
#import "UIScrollView+KMNavigationBarTransition_internal.h"
29+
#import "KMNavigationBarTransitionUtils.h"
2930
#import "KMWeakObjectContainer.h"
3031
#import <objc/runtime.h>
3132
#import "KMSwizzle.h"
@@ -126,7 +127,13 @@ - (void)km_addTransitionNavigationBarIfNeeded {
126127
return;
127128
}
128129
[self km_adjustScrollViewContentOffsetIfNeeded];
129-
UINavigationBar *bar = [[UINavigationBar alloc] init];
130+
UINavigationBar *bar = nil;
131+
if (@available(iOS 14, *)) {
132+
NSBundle *bundle = [KMNavigationBarTransitionUtils getBundle];
133+
bar = [bundle loadNibNamed:@"KMNavigationBar" owner:nil options:nil].firstObject;
134+
} else {
135+
bar = [[UINavigationBar alloc] init];
136+
}
130137
bar.km_isFakeBar = YES;
131138
bar.barStyle = self.navigationController.navigationBar.barStyle;
132139
if (bar.translucent != self.navigationController.navigationBar.translucent) {

0 commit comments

Comments
 (0)