2016-08-10 30 views
4

我希望垂直间距约束我的两个子视图之间的常量值是屏幕高度的百分比。这样,所有设备上的设计看起来都差不多。使垂直空间约束常数等于屏幕高度的百分比

我怎么在故事板上做到这一点?任何众所周知的技巧?

enter image description here

或许有一些特技与内容拥抱优先,耐压缩性,或较小的优先级的第二约束来实现这一目标?

回答

2

我想到的解决方案是引入第三个子视图来坐在我的两个子视图之间 - 并在超级视图的第三个子视图上设置方面高度约束。这两个子视图对第三个子视图有一个空间限制,常量为零。

但是 - 我不喜欢有一个故事板杂乱无知的子视图。

+2

这是正确的做法。如果你想避开不可见的子视图,你也可以添加一个'UILayoutGuide'而不是第三个子视图,但是你必须在代码中添加它。 – dan

+1

如果这确实是一个正确的答案 - 我不能说我对苹果的Autolayout有很大的尊重 – etayluz

+0

故事板上的Autolayout只能做这么多。有时你需要代码。代码没有问题。 –

1

创建一个IBOutlet你的垂直空间限制。然后检查什么是使用屏幕尺寸的设备,然后将值分配给你的约束常数。 EX:

if(screenSize.height == 480) 
{ 
    self.verticalspaceConstraints.constant = 100 ;//this is an example 
} 

//like this add your other conditions 

我创建了一个小的视频教程,以获得基本的想法试试这个 small video tutorial

希望这将有助于你。

+0

如何在故事板中做到这一点?无需代码解决方案。没有冒犯 - 但这也是一个丑陋的解决方案。谢谢 – etayluz

+0

只需在你的.h文件中拖动并在你的'constraint'中创建'outlet'。然后根据您的条件更改其值 –

+0

查看更新的答案 –

0

我有2个解决方案,但我正在使用第一个。

1)在两个元素之间放置一个具有所需间隙高度的UIView,并将间隙视图作为与控制器主视图成比例的高度。这种方式会根据设备而增加,但这个想法可能会感觉复杂。因为设计一个复杂的屏幕,你将不得不放置很多的差距视图,这将是混乱的。

2)通过给约束的标识符属性分配一些字符,将设计时的约束标记为动态。创建NSLayoutConstraint的类别类,并在类中继承它的函数,并检查标识符是否以该字符开始,并修改值,例如乘以设备缩放比例。

相关问题