这让我发疯了。我有一个标签栏控制器,它被推入导航控制器堆栈。
标签栏的第一个视图控制器有一个图像,它有两个约束:
但是当按下标签栏控制器并且第一次出现第一个视图控制器时,上述图像无特殊原因会偏移20个像素。
答案 0 :(得分:2)
我通过执行以下操作修复了它:
- (void)viewDidLayoutSubviews {
//I need to do this, otherwise the scrollview is offset by 20 pixels when first displayed (I HAVE NO IDEA WHY....)
if (self.scrollView.frame.origin.y == 20) {
[self.scrollView setFrame:CGRectMake(0, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height + 20)];
}
}
虽然我不知道为什么它只会在第一次显示时搞砸......
答案 1 :(得分:1)
不确定,但你可以尝试一下。将此行放在导航控制器的第一个视图控制器的viewDidLoad中。
self.edgesForExtendedLayout = UIRectEdgeNone;
答案 2 :(得分:-1)
我有完全相同的问题。 tabview控制器第一个视图中的标签忽略顶部的8px边距。当该视图第一次加载时,空间超过20,但当我切换到第二个选项卡并返回时,问题就消失了。
首次使用错误的空格打开视图时的模拟器
http://i.stack.imgur.com/VKxMs.jpg
模拟器,当我切换到第二个标签并返回,然后使用正确的空格