iOS自适应视图;适应性约束?

时间:2015-02-07 19:21:23

标签: ios objective-c iphone constraints

我想要实现的是基于布局中4.7英寸屏幕的iPhone自适应视图。

现在实现这一目标很困难,这也是我第一次遇到约束。

我不想使用自由形式,因为它对我来说似乎很陌生,我的目标不是iPad。

另外,我正在使用的当前项目不允许我出于某种原因切换到自由格式的viewcontroller大小。

iPhone 4 based on 4.7" layout without constraints iPhone 4 based on 4.7" with constraints top/bottom iPhone 6 based on 4.7" with constraints

首先是没有基于4.7“布局的约束的iphone 4 第二个是iphone 4,基于4.7“布局的约束 第三是iphone 6布局显示为。

我希望保持相同的一般距离,但要缩小所有内容,以便在理想的较小屏幕尺寸上匹配。 (距离明智,不是按钮/文字大小等)

所以你可以看到我正在实现一个结果,不过我的顶部标签是从顶部测量而按钮是从底部开始,我尝试的其他任何东西似乎都会将其余的按钮推出视野。< / p>

但是,我怎么能以编程方式实现这个

if (iphone screen is 4.7") {
    bottom constraint is 95px.height;
} else
if (iphone screen is 4.0") {    
    bottom constraint is 50px.height;
} else
if (iphone screen is 3.5") {
    bottom constraint is 10px.height;
}

这就是我计划使我的应用程序自适应的方式,但我也要求约束也是自适应的。如果我接近这个错误,请指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式解决此问题。一种方法是使用约束的乘数和常数来为这些屏幕尺寸提供正确的间距。如果你解决这两个方程式,

480x + y = 470(480 - 您想要的10的底部约束)和

667x + y = 572(667 - 你想要的95的底部约束)

x的值为0.5455,y的值为208.2。如果你把它们插入你的另一个等式(568x + y = 518),那么它也会非常接近。所以对于那个底部约束,你想拥有

按钮底部= superview底部* 0.5455 + 208.2

您可以在IB中通过向底部按钮(或标签)添加底部约束并对其进行编辑来更改乘数和常量值来实现此目的。您可以对顶视图执行相同操作以使其与屏幕大小成比例,但要注意您实际上需要将约束设置为超级视图的底部,因为superview.top的值为0,因此使用乘数将你不好吗?要在两者之间均匀分布所有视图,最好的方法是使用间隔视图(如果你在SO上搜索“空间视图均匀”,你会找到一些解释这一点的答案)。

另一种方法可能是使用表格视图而不是单个标签和按钮。这种方法的优点是视图(在这种情况下为单元格)将自动间隔均匀(基于行高)。您仍然可以像上面概述的那样将表视图约束赋予顶部和底部,或者只是将其垂直居中,并使其高度与超视图的高度成比例。我认为这可能是更好,更容易的方法。如果使表格视图不滚动,并且没有单元格分隔符,它将看起来就像另一种方法。