【发布时间】:2013-09-30 04:32:50
【问题描述】:
我有一个 UINavigationController 和一个显示导航栏的 UIViewController。
我已经专门设置了[self setAutomaticallyAdjustsScrollViewInsets:YES];,尽管默认情况下应该是YES。
我添加了一个 UIScrollView:
self.scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:self.scrollView];
但是,UIScrollView 的 contentInset 是 {0, 0, 0, 0},所以我想知道为什么它没有像文档中所说的那样从视图控制器继承 content inset。
如果我将子视图添加到滚动视图并将它们的 Y 设置为 self.scrollView.contentInset.top,它们不会出现在导航栏下方,这是我所期望的。
我在这里做错了什么?如果您从 UITableViewController 开始,它工作正常,因为它正确地从视图控制器继承 contentInset。
谢谢!
【问题讨论】:
-
contentInset(和 contentOffset)调整只有在视图显示在屏幕上后才能看到。您能否确认它们仍未在
viewDidAppear或更高版本中设置? -
啊,这里可能有问题,我正在尝试将其设置为
loadView -
啊,绝对不建议在
loadView中做更多的事情,而不是创建和分配一些东西给self.view。 -
@jefflcy87 等等,所以我要设置self.view = scrollView?
-
@runmad 我之前的评论可能具有误导性。我的意思是您的视图层次结构必须是这样的。 View (self.view) --->ScrollView --->Other views 如果你在 self.view 和你的 scrollView 之间有任何东西
[setAutomaticallyAdjustsScrollViewInsets:]将不起作用,即 View -->Other views (UIButton, UILabel, UIView 等) -->滚动视图
标签: ios uiviewcontroller uiscrollview ios7