iOS 7导航栏和滚动视图在故事板和模拟器中有所不同

时间:2014-02-15 21:43:07

标签: ios7 uiscrollview uinavigationcontroller

我有一个带导航栏的导航控制器,而不是半透明的。我在根视图中添加了一个滚动视图。但是当我运行应用程序时,它显示的与我在StoryBoard中看到的不同。一切都向下移动了。

这就是我在StoryBoard中看到的:

enter image description here

这是在模拟器中:

enter image description here

3 个答案:

答案 0 :(得分:3)

你的故事板应该是这样的 在ios 7中,滚动视图必须覆盖整个屏幕
您需要将图像放在顶部边缘

Your Storyboard

您将输出如下

enter image description here

答案 1 :(得分:1)

  1. 制作全屏UIScrollView,将全屏内容视图添加到UIScrollView
  2. 在此内容视图的顶部添加透明视图:top:0,left:0,right:0,带滚动的宽度相等,高度:64(状态栏的高度和导航栏) enter image description here
  3. 将透视图的高度约束(64为64)作为IBOutlet连接到ViewController类: enter image description here
  4. 按您的意愿设计您的视图;我将在导航栏下方添加一个按钮:顶部空间到透明视图:8,左:8,宽度:30,高度:30 enter image description here
  5. 将以下代码添加到ViewController类中;如果iOS版本是iOS7,将透明视图的高度约束设置为0(零),如果是iOS8,则不执行任何操作:
  6. - (void) updateViewConstraints {
        [super updateViewConstraints];
    
        if ([[[UIDevice currentDevice] systemVersion] floatValue] < 8.0) {
            _transparentTopViewYConstraint.constant = 0;
        }
    }
    

    因此,所有视图的顶部空间都与透明视图相关,如果系统版本为iOS7,则透视视图的高度将为0(零)并且您的视图将移至顶部,对于我的示例,顶部空间仅为8,因此您的视图位于导航栏的下方。如果系统版本为iOS8,则您的透明视图的高度将为64,并且您的视图顶部空间将为8 + 64,因此您的视图会再次位于导航栏的下方。

答案 2 :(得分:0)

请检查以下内容:

  1. 是自动布局吗?然后将其关闭

  2. 您使用的是不同尺寸的模拟器吗? (故事板是4英寸,而模拟器是3.5英寸)如果这样,许多事情要设置像关闭autoSizing右和底限制

  3. 希望这有帮助