如何添加不同的约束取决于iPhone的屏幕尺寸?

时间:2017-06-05 06:30:14

标签: ios objective-c swift cocoa-touch

这是我的xib文件,被视为iPhone6 / iPhone7,看起来不错。

enter image description here

但如果我把它变成iPhoneSE,就会变得异常。

enter image description here

当设备发生变化时,空格不会改变,并且我无法在没有代码的情况下更改适应设备的空间约束。

3 个答案:

答案 0 :(得分:1)

尝试以下约束:

enter image description here

输出:iPhone 6/7

enter image description here

输出:iPhone SE

enter image description here

更清楚地指明您的要求,以便我可以为您提供更多帮助。

答案 1 :(得分:1)

根据iPhone的屏幕尺寸,您不必添加不同的约束!因为约束适用于任何屏幕尺寸

只需在布局约束中做一个简单的修复:

问题: 所以我看到你有UIScrollView高度的问题,似乎你为UIScrollView设置了一个固定的高度约束

解决方案: 首先,您需要删除UIScrollView的高度约束 第二个只是向UISCrollView添加一个等于父屏幕高度的高度约束并给它一个百分比

注意: 如何将百分比置于约束中 - >突出显示约束,然后从属性检查器中有一个名为 Multiplier 的属性,它取值为0.0到1

答案 2 :(得分:0)

您需要制作常量以支持所有此类设备。

var SCREEN_WIDTH = UIScreen.main.bounds.size.width
var SCREEN_HEIGHT = UIScreen.main.bounds.size.height
var BASE_SCREEN_HEIGHT:CGFloat = 667.0
var SCREEN_MAX_LENGTH = max(SCREEN_WIDTH, SCREEN_HEIGHT)
var ASPECT_RATIO_RESPECT_OF_7 = SCREEN_MAX_LENGTH / BASE_SCREEN_HEIGHT

我认为您的基本布局是iPhone 7,您的设计属于iPhone 7布局。

现在创建一个有助于根据设备更新约束的函数。像这样。

func updateConstraint() {
    topConstantOfYourLabel.constant = 10*ASPECT_RATIO_RESPECT_OF_7
}

在viewDidLoad中调用此方法,您的布局就可以了。

注意: 对于横向模式,您需要根据需要进行一些更改。我假设您只支持纵向模式。