Objective c 运行时滚动视图中的额外空间(插图)

Objective c 运行时滚动视图中的额外空间(插图),objective-c,uiscrollview,storyboard,ios7,autolayout,Objective C,Uiscrollview,Storyboard,Ios7,Autolayout,设置: 我正在处理Xcode 5中显示一组文本字段的视图。为了在键盘打开时处理滚动,我使用滚动视图来放置文本字段。我正在使用自动布局 问题: 我正在努力解决一个问题,即在运行时将额外的空间添加到滚动视图的顶部。就像一个插入被应用到我的滚动视图,尽管我已经通过日志确认插入为零 在我的viewDidLoad()方法实现中,我这样做是为了确认值 UIEdgeInsets contentInsets = UIEdgeInsetsZero; self.scrollView.contentInset = c

设置

我正在处理Xcode 5中显示一组文本字段的视图。为了在键盘打开时处理滚动,我使用滚动视图来放置文本字段。我正在使用自动布局

问题

我正在努力解决一个问题,即在运行时将额外的空间添加到滚动视图的顶部。就像一个插入被应用到我的滚动视图,尽管我已经通过日志确认插入为零

在我的viewDidLoad()方法实现中,我这样做是为了确认值

UIEdgeInsets contentInsets = UIEdgeInsetsZero;
self.scrollView.contentInset = contentInsets;
self.scrollView.scrollIndicatorInsets = contentInsets;
self.scrollView.contentSize = self.scrollView.bounds.size;
self.scrollView.contentOffset = CGPointMake(0.0, 0.0);

NSLog(@"Content Size: %f x %f", self.scrollView.contentSize.height, self.scrollView.contentSize.width);
NSLog(@"Bounds Size: %f x %f", self.scrollView.bounds.size.height, self.scrollView.bounds.size.width);
NSLog(@"Frame Size: %f x %f", self.scrollView.frame.size.height, self.scrollView.frame.size.width);
NSLog(@"Inset Size top: %f bottom: %f", self.scrollView.contentInset.top, self.scrollView.contentInset.bottom);
NSLog(@"Scroll Inset Size top: %f bottom: %f", self.scrollView.contentInset.top, self.scrollView.contentInset.bottom);
输出:

2013-10-08 11:38:42.953 test[6440:a0b] Content Size: 455.000000 x 320.000000
2013-10-08 11:38:42.954 test[6440:a0b] Bounds Size: 455.000000 x 320.000000
2013-10-08 11:38:42.955 test[6440:a0b] Frame Size: 455.000000 x 320.000000
2013-10-08 11:38:42.955 test[6440:a0b] Inset Size top: 0.000000 bottom: 0.000000
2013-10-08 11:38:42.956 test[6440:a0b] Scroll Inset Size top: 0.000000 bottom: 0.000000
在我的第一个文本字段上方添加的空格(插图)似乎与标准导航标题大致相同,但这可能是巧合

“我的滚动视图”的高度设置为455,y值设置为64,以适应导航状态栏和底部的选项卡栏

我没有任何关于潜在问题的布局通知。滚动视图顶部和底部空间约束定位为0点(我从状态栏和选项卡栏中推测)

运行应用程序并在滚动视图中看到额外空间时,滚动条仅覆盖预期空间(不包括作为可滚动区域一部分的额外空间)

最后要注意的一点。当我执行键盘通知逻辑时。()问题自行解决,没有更多的空间。这使它看起来像是脚本中配置的初始化问题


谢谢!

iOS7中的UIViewController有一个名为的设置。如果这是
YES
,滚动视图的插图将根据状态栏、导航栏和工具栏或选项卡栏的高度自动调整

此设置也可以在Interface Builder中设置;在属性检查器上称为“调整滚动视图插入”


除了如Greg所示在IB中的视图控制器上禁用“调整滚动视图插入”之外,我发现解决此问题的另一种方法是编辑滚动视图和顶部布局指南之间的“顶部对齐”约束。将后者从“顶部布局指南.底部”更改为“顶部布局指南.顶部”使事情在运行时看起来正常,尽管仍然可以在情节提要(Xcode 6.4)中看到额外的空间。

在viewDidLoad方法中调用以下代码行:

self.automaticallyAdjustsScrollViewInsets = false

我猜这不是问题,因为正在记录的插图是0,但您是否有“调整滚动视图插图”/“自动调整滚动视图插图”打开或关闭?亲爱的苹果,我恨你。把我生命中的2小时还给我,这浪费了2个小时?你很幸运…:-(你节省了我不知道多少小时的时间,谢谢一个lotu仍然在iOS8.3:-)但是你能告诉我背后的确切原因吗?我不想盲目地实施它。