objective-c - 运行时 ScrollView 中的额外空间(插图)

标签 objective-c uiscrollview storyboard ios7 autolayout

设置:

我正在 Xcode 5 中处理一个显示一组文本字段的 View 。为了在键盘出现时处理滚动,我使用 ScrollView 来放置我的 TextFields。我使用自动布局。

问题:

我正在努力解决在运行时向 ScrollView 顶部添加额外空间的问题。就像一个插图被应用于我的 ScrollView ,尽管我已经通过日志记录确认插图为零。

在我的 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

在我的第一个文本字段上方添加的空格(插图)似乎与标准导航标题大致相等,但这可能是巧合。

我的 ScrollView 设置为 455 的高度和 64 的 y 值,以便适应导航状态栏和底部的标签栏。

我没有任何关于潜在问题的布局通知。 ScrollView 顶部和底部空间约束定位为 0 点(我从状态栏和标签栏推测。

当运行应用程序并在 ScrollView 中看到额外的空间时,滚动条 只覆盖了预期的空间(它们不包括这个额外的空间作为可滚动区域的一部分)。

最后一件事要注意。当我执行键盘通知逻辑时。 ( taken from apple here... ) 问题自行解决,没有更多空间。这看起来像是 Storyboard中配置的初始化问题?

谢谢!

最佳答案

iOS7 中的 UIViewControllers 有一个名为 automaticallyAdjustsScrollViewInsets 的设置.如果这是 YES, ScrollView 的 insets 将根据状态栏、导航栏和工具栏或标签栏的高度自动调整。

这个设置也可以在Interface Builder中设置;它在属性检查器中称为“调整 ScrollView 插入”。

Screenshot

关于objective-c - 运行时 ScrollView 中的额外空间(插图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19252852/

相关文章:

ios - UIPageViewConrtoller 或 ScrollView

ios - 使用 iAd 展示广告,不使用 Storyboard 或 Xib

objective-c - Xcode 分布式构建失败

ios - 创建一个 UIView 捕捉点击,但对所有其他手势透明

iphone - 约束问题(scrollview在iPhone7和7+中不出现,但在SE中出现)

swift - 如何以编程方式访问 View Controller Storyboard ID

ios - Objective-c Storyboard - UITableViewController 中的导航栏未出现

c++ - 对类型的非常量左值引用 - 使用 Class 类型的参数时 Objective-C++ 包装器中的错误

ios - xcodebuild - 设置构建目录不会生成 dSYM

swift - 如何使用 Swift 制作水平 UICollectionView