【问题标题】:TabBarController - first view is offset by 20pxTabBarController - 第一个视图偏移 20px
【发布时间】:2014-04-02 22:58:35
【问题描述】:

这快把我逼疯了。我有一个标签栏控制器,它被推送到导航控制器堆栈中。

标签栏的第一个视图控制器有一个图像,它有两个约束:

  • 0 到顶部布局指南
  • 0 到底部布局指南

但是当标签栏控制器被推送时,第一个视图控制器第一次出现时,上述图像无特殊原因偏移了 20 像素。

【问题讨论】:

  • 您使用故事板或编码?
  • 故事板,我正在从代码中触发 performSegueWithIdentifier:sender。
  • 一些问题应该只存在于约束中......
  • iOS7.而且我不明白为什么如果我转到不同的选项卡,然后回到第一个选项卡,一切都会正常。
  • @LordZsolt - 请在问题中发布故事板图片以便更好地理解

标签: ios uinavigationcontroller uiimageview uitabbarcontroller


【解决方案1】:

我已通过以下操作修复它:

- (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)];
    }
}

虽然我不知道为什么它只是在第一次显示时就搞砸了......

【讨论】:

  • 你是把它放在 TabBarController 还是标签的控制器之一?我很高兴能找到解决这个烦人问题的方法,但我无法让它发挥作用!
  • 我已将其放入标签栏控制器 FIRST view controller.
  • 啊太棒了!我不得不对代码进行一些修改,但它终于奏效了。谢谢!!!
  • 只是另一条评论,我注意到当用户在任何选项卡上(不仅仅是初始选项卡)然后他们旋转屏幕时会发生这种情况。所以我一定会把代码放在 tabBarController 的每个视图中
【解决方案2】:

不确定,但您可以尝试一下。将此行放在导航控制器的第一个视图控制器的 viewDidLoad 中。

    self.edgesForExtendedLayout = UIRectEdgeNone;

【讨论】:

    【解决方案3】:

    我也有同样的问题。 tabview 控制器的第一个视图中的标签会忽略顶部的 8px 边距。第一次加载该视图时,空间超过20,但是当我切换到第二个选项卡并返回时,问题就消失了。

    模拟器第一次用错误的空间打开视图

    http://i.stack.imgur.com/VKxMs.jpg

    当我切换到第二个选项卡并返回时的模拟器,然后使用正确的空格

    http://i.stack.imgur.com/teUyl.jpg

    【讨论】:

    • 这不是问题的答案...考虑在评论中添加您必须的其他信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多