我一直在阅读文档/教程,并在Xcode中玩弄约束,仍然可以实现我的需要。
问题是我需要定位视图(标签,图像)并根据设备的屏幕尺寸垂直展开(目前专注于iPhone)。等效的css是使用百分比的边距。
标签/图像,图像不需要增长或缩小。
作为一个例子,我在Interface Builder中有这个。
为了说明问题,我从上到下有约束如下:
这个措施对于iPhone 6是正确的。现在我一直试图通过收缩约束值来在较小的屏幕(iPhone 3.5和4英寸)中拟合相同的信息。我尝试过使用倍增器但没有工作(或者不知道如何正确使用它)。我尝试为wAny hCompact添加约束,但仅适用于其中一个约束(顶部图像到顶部边距),所有其他约束都被覆盖。
所以这就是iPhone 6的外观。
提前致谢。
答案 0 :(得分:1)
Okey所以在这种情况下,我将NSLayoutConstraints出口到相应的ViewController中,我开始根据运行时的屏幕大小来操作它们,通常在viewWillAppear或viewDidAppear中,对于你的情况,我会假设一些事实并向你展示一个小例子:
您希望按钮的顶部约束为视图总高度的6% 基于这些假设,我会做以下事情:
-(void)myLayOutMethod
{
//here you set the percentage of every constraint of the view .
CGFloat screenHeight = self.view.frame.height ;
CGFloat topImageConstraintValue = screenHeight/0.10f ;
CGFloat topMembershipLabelConstraintValue = screenHeight/0.07f ;
CGFloat topMembershipHashConstraintValue = screenHeight/0.05f ;
CGFloat topWhiteViewConstraintValue = screenHeight/0.07f ;
CGFloat bottomWhiteViewConstraintValue = screenHeight/0.05f ;
CGFloat topImageConstraintValue = screenHeight/0.07f ;
CGFloat topLabelConstraintValue = screenHeight/0.07f ;
CGFloat topButtonConstraintValue = screenHeight/0.06 ;
//now you start making changes to those constraints .
self.topImageConstraint.constant = topImageConstraintValue;
self.topMembershipLabelConstraint.constant = topMembershipLabelConstraintValue ;
self.topMembershipHashConstraint.constant = topMembershipHashConstraintValue ;
self.topWhiteViewConstraint.constant = topWhiteViewConstraintValue ;
self.bottomWhiteViewConstraint.constant = bottomWhiteViewConstraintValue ;
self.topImageConstraint.constant = topImageConstraintValue ;
self.topLabelConstraint.constant = topLabelConstraintValue;
self.topButtonConstraint.constant = topButtonConstraintValue ;
[self.view layoutIfNeeded];
}
当然所有这些百分比都是虚拟值,您可以根据需要更改它们,而另一个制作NSLayoutConstraint出口的东西与从任何其他UIKit控件制作出口相同,您只需找到约束并将其拖到您的班级