当我回到它时,UIViewController得到偏移

时间:2014-07-18 12:34:01

标签: ios xcode uiviewcontroller

我有一个UIViewController,其UIScrollView作为根视图定义并添加如下

[self.view addSubview:mainScrollView];
UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, screenWidth, screenHeight)];

我从NavigationController(20状态栏+ 44导航栏)开始偏移64,直到现在它都可以。 然后我添加另一个ViewController,当我返回时,mainScrollView在y中偏离导航控制器64点。为什么会这样?

在:

enter image description here

后:

enter image description here

4 个答案:

答案 0 :(得分:2)

UITableView添加到UIViewController已检查Under Top Bars属性的EdgeInset时,可能会看到同样的情况

enter image description here

你可以认为这是一个" hack"或不是,但尝试取消选中该框,看看它是否解决了您的问题。

如果确实如此,那么应该设置正确的{{1}}。一个你修复了那个部分,然后你就可以重新启用"在顶部栏和#34;如果你真的想要/需要它。

答案 1 :(得分:1)

很可能是由于这些属性的错误组合:

  1. automaticallyAdjustsScrollViewInsets
  2. edgesForExtendedLayout
  3. extendedLayoutIncludesOpaqueBars
  4. 导航栏的半透明度
  5. 如果VC的第一个视图或第一个子视图是滚动视图或从中继承的视图(例如tableview),则第一个添加插图。第二个告诉主视图它是否应该位于“调整”有用的导航栏或标签栏下面 这里有一个类似的答案iOS 7 UITextView vertical alignment

答案 2 :(得分:0)

您的滚动视图从y = 64开始。当您在另一个视图控制器上导航时,它可能是y = 64的原因偏移。 Kinjal

答案 3 :(得分:0)

很难弄清楚究竟是什么原因。

我要做的是实施viewWillLayoutSubviews的{​​{1}}方法并打入其中以获取UIViewControllerself.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