我有一个UIViewController
,其UIScrollView
作为根视图定义并添加如下
[self.view addSubview:mainScrollView];
UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, screenWidth, screenHeight)];
我从NavigationController
(20状态栏+ 44导航栏)开始偏移64,直到现在它都可以。
然后我添加另一个ViewController
,当我返回时,mainScrollView在y中偏离导航控制器64点。为什么会这样?
在:
后:
答案 0 :(得分:2)
将UITableView
添加到UIViewController
已检查Under Top Bars
属性的EdgeInset
时,可能会看到同样的情况
你可以认为这是一个" hack"或不是,但尝试取消选中该框,看看它是否解决了您的问题。
如果确实如此,那么应该设置正确的{{1}}。一个你修复了那个部分,然后你就可以重新启用"在顶部栏和#34;如果你真的想要/需要它。
答案 1 :(得分:1)
很可能是由于这些属性的错误组合:
如果VC的第一个视图或第一个子视图是滚动视图或从中继承的视图(例如tableview),则第一个添加插图。第二个告诉主视图它是否应该位于“调整”有用的导航栏或标签栏下面 这里有一个类似的答案iOS 7 UITextView vertical alignment
答案 2 :(得分:0)
您的滚动视图从y = 64开始。当您在另一个视图控制器上导航时,它可能是y = 64的原因偏移。 Kinjal
答案 3 :(得分:0)
很难弄清楚究竟是什么原因。
我要做的是实施viewWillLayoutSubviews
的{{1}}方法并打入其中以获取UIViewController
和self.view
。文档{的所有指标{3}}
通过这些信息,我们可以找到可能存在的问题。
要么尝试一些东西绕过它或者找到根本原因我也会尝试将mainScrollView
设置为mainScrollView
视图:
the UIViewController
另一个解决方案是在- (void)loadView
{
[super loadView];
UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)];
self.view = mainScrollView;
}
方法中调整mainScrollView的y偏移量:
viewWillLayoutSubviews