Skip to content

Commit 12deea2

Browse files
lhhMoZhouqi
authored andcommitted
界面普通scrollview的适配 (#98)
Add the km_scrollView property
1 parent 03a3233 commit 12deea2

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

KMNavigationBarTransition/UIViewController+KMNavigationBarTransition.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,6 @@
2525

2626
@interface UIViewController (KMNavigationBarTransition)
2727

28+
@property (nonatomic, weak) UIScrollView *km_scrollView;
29+
2830
@end

KMNavigationBarTransition/UIViewController+KMNavigationBarTransition.m

Lines changed: 23 additions & 6 deletions
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 "KMWeakObjectContainer.h"
2930
#import <objc/runtime.h>
3031
#import "KMSwizzle.h"
3132

@@ -143,8 +144,8 @@ - (void)km_addTransitionNavigationBarIfNeeded {
143144
}
144145

145146
- (void)km_adjustScrollViewContentOffsetIfNeeded {
146-
if ([self.view isKindOfClass:[UIScrollView class]]) {
147-
UIScrollView *scrollView = (UIScrollView *)self.view;
147+
UIScrollView *scrollView = self.km_visibleScrollView;
148+
if (scrollView) {
148149
UIEdgeInsets contentInset;
149150
#ifdef __IPHONE_11_0
150151
if (@available(iOS 11.0, *)) {
@@ -175,8 +176,8 @@ - (void)km_adjustScrollViewContentInsetAdjustmentBehavior {
175176
return;
176177
}
177178
if (@available(iOS 11.0, *)) {
178-
if ([self.view isKindOfClass:[UIScrollView class]]) {
179-
UIScrollView *scrollView = (UIScrollView *)self.view;
179+
UIScrollView *scrollView = self.km_visibleScrollView;
180+
if (scrollView) {
180181
UIScrollViewContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior = scrollView.contentInsetAdjustmentBehavior;
181182
if (contentInsetAdjustmentBehavior != UIScrollViewContentInsetAdjustmentNever) {
182183
scrollView.km_originalContentInsetAdjustmentBehavior = contentInsetAdjustmentBehavior;
@@ -191,8 +192,8 @@ - (void)km_adjustScrollViewContentInsetAdjustmentBehavior {
191192
- (void)km_restoreScrollViewContentInsetAdjustmentBehaviorIfNeeded {
192193
#ifdef __IPHONE_11_0
193194
if (@available(iOS 11.0, *)) {
194-
if ([self.view isKindOfClass:[UIScrollView class]]) {
195-
UIScrollView *scrollView = (UIScrollView *)self.view;
195+
UIScrollView *scrollView = self.km_visibleScrollView;
196+
if (scrollView) {
196197
if (scrollView.km_shouldRestoreContentInsetAdjustmentBehavior) {
197198
scrollView.contentInsetAdjustmentBehavior = scrollView.km_originalContentInsetAdjustmentBehavior;
198199
scrollView.km_shouldRestoreContentInsetAdjustmentBehavior = NO;
@@ -211,4 +212,20 @@ - (void)setKm_transitionNavigationBar:(UINavigationBar *)navigationBar {
211212
objc_setAssociatedObject(self, @selector(km_transitionNavigationBar), navigationBar, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
212213
}
213214

215+
- (UIScrollView *)km_scrollView {
216+
return km_objc_getAssociatedWeakObject(self, _cmd);
217+
}
218+
219+
- (void)setKm_scrollView:(UIScrollView *)scrollView {
220+
km_objc_setAssociatedWeakObject(self, @selector(km_scrollView), scrollView);
221+
}
222+
223+
- (UIScrollView *)km_visibleScrollView {
224+
UIScrollView *scrollView = self.km_scrollView;
225+
if (!scrollView && [self.view isKindOfClass:[UIScrollView class]]) {
226+
scrollView = (UIScrollView *)self.view;
227+
}
228+
return scrollView;
229+
}
230+
214231
@end

0 commit comments

Comments
 (0)