2015-02-07 77 views
0

我试图做到的,是基于在布局一个4.7" 屏幕在iPhone上的自适应视图。iOS自适应视图;适应性约束?

现在,实现这一目标是证明困难的,这也是我的第一个制约经验。

我不希望使用自由格式,因为它似乎对我来说很陌生,我的目标不是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

第一是iphone 4而不基于4.7" 约束布局 第二是iphone 4基于4.7" 约束布局 第三是什么iphone 6布局显示为。

我想保持相同的一般距离,但缩小一切以匹配较小的屏幕尺寸的理想。 (距离明智,不按钮/文字大小等)

所以你可以看到我实现了一个结果不管,但我的顶部标签是从顶部测量,按钮是从底部,我尝试的任何其他将其余按钮推出。

但是,我怎么能编程实现这一

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

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

480X + Y = 470(480 - 10你想要的底部约束)和

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

你得到x的值为0.5455,y的值为208.2。如果你将这些插入到其他方程(568x + y = 518)中,它也会非常接近。因此,对于底部的约束,你想拥有

按钮底部=上海华底部* 0.5455 + 208.2

您可以通过添加一个底部约束到您的底部按钮(或标签),并编辑,使这个在IB改变乘数和常数值。你可以用你的顶视图做同样的事情,使它与屏幕大小成正比,但要注意你实际上需要将约束限制在超级视图的底部,因为superview.top的值是0,所以使用乘数将会你没有好处。要在所有视图之间平均分配空间,最好的方法是使用间隔视图(如果您在SO上均匀搜索“空间视图”,则会找到解释这些视图的一些答案)。

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

+0

感谢您的帮助,非常感谢! – user2415313 2015-02-07 20:25:04