iOS自动布局不显示从底部固定间隔的按钮
我想在距屏幕底部固定距离处显示一个按钮(下方图像中的蓝色方框)。iOS自动布局不显示从底部固定间隔的按钮
下面是约束上:
当运行在不同的模拟器应用程序,按钮被在不同的位置显示。看看下面的图片,看看有什么不同。
的iOS 6.1和4英寸模拟器:
的iOS 7和4英寸模拟器:
的iOS 6.1和3.5英寸模拟器:
在的iOS 7和3.5英寸模拟器,该按钮是不是visible.i.e其origin.y
比屏幕高度。
任何想法为什么发生这种情况?
编辑:编辑约束(仍无法正常工作)
更新:我可以缩小问题的范围。在故事板中,我在主视图中有这个按钮和其他子视图。以编程方式将mapView添加到此主视图,并将所有主视图的子视图添加到mapView,如下所示。
// Add mapView to main view
mapView = ...;
[self.view addSubview:self.mapView];
// Remove subviews from main view
[self.button removeFromSuperview];
...
// Add subviews into mapView so that they are visible on map
[self.mapView addSubview:self.button];
...
现在,如果我上面的代码注释和运行应用程序按钮,然后显示在正确的位置,但上面的代码注释掉我碰到按键错位的问题。
更新:此问题的部分答案是以编程方式添加约束。我说部分,因为我有其他意见,随着这个按钮,这是正确显示。我没有代码中的限制。因此,还有一些可以探索的地方。
您正在将按钮对齐到底部布局指南,它不同于将其对齐到超级视图的底部,在这种情况下我会建议。将其与垂直布局指南对齐取决于iOS6/7,并且如果允许视图控制器的内容位于导航栏/底部栏的下方。
将它与超级视图(容器)对齐可以解决您的问题。但解决这个问题的正确方法是设置视图控制器的正确“延伸边缘”。我假设您在iOS7上启用了“顶部条形图”和“底部条形图”,这将解释偏移量。禁用它们会比如模仿与iOS6相同的行为,并且不会以这些不同的偏移结束。
这真的取决于你的视图控制器(导航栏,底部栏等)以及如何设置视图控制器的“edgesForExtendedLayout”。
编辑: 调用 [self.button removeFromSuperview];
不会从视图中删除刚刚按钮,而且所有的约束先前设定!所以你必须再次设置约束 - 手动或避免从超级视图中移除按钮。我想这就是为什么它在界面生成器中看起来很好,并且在运行时会搞砸!
调用此方法去除了参考你 卸下,或者是指任何视图你 删除的视图的子树中的视图中的任何约束。
什么是底部对齐? – footyapps27
@ footyapps27问题在按钮的'origin.y'值中,并且没有与按钮左/右对齐的视图。所有视图都在此按钮的上方或下方。 – Geek
您是否正在使用X-Code 5.x进行设计? – footyapps27