gpt4 book ai didi

uikit - AutomaticAdjustsScrollViewInsets 在 iOS9 中不起作用

转载 作者:行者123 更新时间:2023-12-01 00:29:21 28 4
gpt4 key购买 nike

在我的应用程序中,我有很多带有各种 ScrollView (表格、集合等)的 VC。所有这些都出现在 NavigationController 中,我使用了 .automaticallyadjustsscrollviewinsets VC 的属性,以防止内容进入 NavigationBar。它在 iOS9 之前运行良好。

我昨天将我的测试 iPhone 更新到 iOS9,并注意到所有 ScrollView 现在都没有正确的插入。我已将 XCode 更新到最新版本 (7.0) 并重建应用程序 - 无效。我已经检查了另一台仍在运行 iOS8.x 的设备 - 插图工作正常。我查看了 iOS9 sdk 更新日志,没有找到与我的问题相关的任何内容。这是错误还是新行为?还有其他人有这个问题吗?可能的解决方案?

更新 1

我想出了快速修复:

if (__iOS_9_OR_GREATER__) {

CGFloat topInset = 20;

if (self.navigationController) {
topInset += self.navigationController.navigationBar.bounds.size.height;
}

UIEdgeInsets insets = UIEdgeInsetsMake(topInset, 0, 0, 0);

self.collectionView.contentInset = insets;
self.collectionView.scrollIndicatorInsets = insets;

}

有用。但问题仍然是相关的,这是 iOS9 中的错误吗?

更新2

回答关于 __iOS_9_OR_GREATER__ 的评论中的问题.可能不是最有效的解决方案,但可以完成工作。
#import <Foundation/Foundation.h>

#define __iOS_9_OR_GREATER__ [NKOSVersionCheck isMajorOSVersionAtLeast:9]

@interface NKOSVersionCheck : NSObject

+ (BOOL)isMajorOSVersionAtLeast:(NSUInteger)version;

@end

#import "NKOSVersionCheck.h"

@implementation NKOSVersionCheck

NSOperatingSystemVersion _majorOSVersion(int version) {

NSOperatingSystemVersion iOS_x;
iOS_x.majorVersion = version;
iOS_x.minorVersion = 0;
iOS_x.patchVersion = 0;

return iOS_x;

}

+ (BOOL)isMajorOSVersionAtLeast:(NSUInteger)version {

return [[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:_majorOSVersion(9)];

}


@end

最佳答案

从 iOS9 automaticallyadjustsscrollviewinsets不会改变UIScrollViewcontentInsets如果它以编程方式创建。

  • a) 您可以使用 UITableViewController用于自动调整。
  • b) 设置 automaticallyadjustsscrollviewinsets并自行调整插图。
  • 关于uikit - AutomaticAdjustsScrollViewInsets 在 iOS9 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32650109/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com