XCode 8错位视图

时间:2016-11-17 03:51:37

标签: ios view xcode8

我无法弄清楚我在这里做错了什么......超级基本的东西,但我看到网上没有其他投诉,所以也许这是我做错的事情?

我正在使用XCode 8,我发现当将视图对准自身居中于屏幕的对等视图的中心X时,XCode实际上将对齐设置为顶部的中心X-水平视图。截屏: Super basic UIView and UILabel

这是一个超级基本的UIView,UILabel与UIView中心X对齐(约束突出显示)。 以下是视图层次......没有惊喜......

View hierarchy

突出显示的约束:

enter image description here

您可以看到约束将MyLabel.centerX与MyView.centerX相关联。关系为0.5,这意味着MyLabel应位于距离MyView左边缘25%的位置。它不是 - 如果仔细查看第一个屏幕截图,您可以看到它不是25%来自MyView边缘,而是25%来自屏幕边缘。如下所示将故事板更改为iPad屏幕可以更清楚地显示问题:

iPad screen

如果您要对齐的视图本身位于顶级视图的中心,则似乎只会发生这种情况。如下所示,如果我创建另一个不在顶级视图中心的视图,一切都很好。

iPhone SE - non-centered view

iPad的演绎:

iPad view

任何想法都会受到赞赏....

2 个答案:

答案 0 :(得分:1)

  

您可以看到约束将MyLabel.centerX与MyView.centerX相关联。该关系为0.5,这意味着MyLabel应位于距离MyView左边缘25%的位置。

通过将MyLabel的centerX放到MyView的中心X,你实际上并没有将MyLabel的centerX与MyView的前沿对齐...

由于MyView的centerX与根UIView的centerX对齐,MyLabel的centerX正在完成您指定的操作。

传递属性:如果a = b,则b = c,则a = c。在这种情况下,根UIView(superview)的centerX

您应该将第二项从MyView.Center X更改为我的视图的前沿

答案 1 :(得分:0)

我认为你可能只是误解了乘数在应用于中心约束时的含义。事物以其超级视角为中心。最简单的方法是使用如下配置:

enter image description here

橙色视图对中心一无所知;它是由我突出显示的前沿约束水平定位的。蓝色视图的中心x与橙色视图的中心x,对齐,乘数为2 。如您所见,结果与橙色视图的宽度无关:它表示“与橙色视图的中心相距两倍”。