[英]UIViewController gets offset when I go back to it
我有一个UIViewController
,它有一个UIScrollView
作为根视图定义并添加如下
[self.view addSubview:mainScrollView];
UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, screenWidth, screenHeight)];
我从NavigationController
(20状态栏+ 44导航栏)开始偏移64,直到现在一切正常。 然后我添加另一个ViewController
,当我返回时,mainScrollView在y中偏离导航控制器64点。 为什么会这样?
之前:
后:
当您将UITableView
添加到已检查Under Top Bars
属性的UIViewController
,可能会看到相同的情况
你可以认为这是一个“黑客”,但尝试取消选中该框,看看它是否解决了你的问题。
如果是,那么应该设置正确的EdgeInset
。 如果您确实需要/需要它,那么您可以重新启用“在顶部条形图下”。
很可能是由于这些属性的错误组合:
如果VC的第一个视图或第一个子视图是滚动视图或从中继承的视图(例如tableview),则第一个添加插图。 第二个告诉主视图它是否应该位于“调整”有用的导航栏或标签栏下面。
这里有类似的答案iOS 7 UITextView垂直对齐
您的滚动视图从y = 64开始。 当您在另一个视图控制器上导航时,它可能是y = 64的原因偏移。 Kinjal
很难弄清楚究竟是什么原因。
我会做的是落实viewWillLayoutSubviews
的方法UIViewController
,并闯了进去,让您的所有指标self.view
和你mainScrollView
.documentation 这里
通过这些信息,我们可以找到可能存在的问题。
要么尝试一些东西绕过它或者找到根本原因我也会尝试将mainScrollView
设置为the UIViewController
视图:
- (void)loadView
{
[super loadView];
UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)];
self.view = mainScrollView;
}
另一种解决方案是在viewWillLayoutSubviews
方法中调整mainScrollView的y偏移量:
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
self.mainscrollView.frame = self.view.bounds;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.