Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何根据iPhone屏幕大小添加不同的约束?_Ios_Objective C_Swift_Cocoa Touch - Fatal编程技术网

Ios 如何根据iPhone屏幕大小添加不同的约束?

Ios 如何根据iPhone屏幕大小添加不同的约束?,ios,objective-c,swift,cocoa-touch,Ios,Objective C,Swift,Cocoa Touch,这是我的xib文件,被视为iPhone6/iPhone7,看起来不错 但如果我把它变成iPhoneSE,它就不正常了 因为当设备更改时,空格不会更改,并且我无法更改无代码的设备的空格限制。您需要为支持所有此类设备设置常量 var SCREEN_WIDTH = UIScreen.main.bounds.size.width var SCREEN_HEIGHT = UIScreen.main.bounds.size.height var BASE_SCREEN_HEIGHT:CGFloat =

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

但如果我把它变成iPhoneSE,它就不正常了


因为当设备更改时,空格不会更改,并且我无法更改无代码的设备的空格限制。

您需要为支持所有此类设备设置常量

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
func updateConstraint() {
    topConstantOfYourLabel.constant = 10*ASPECT_RATIO_RESPECT_OF_7
}
我假设您的基本布局是iPhone7,这是您的设计驻留在iPhone7布局中

现在创建一个函数,该函数将帮助根据设备更新约束。像这样

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
func updateConstraint() {
    topConstantOfYourLabel.constant = 10*ASPECT_RATIO_RESPECT_OF_7
}
在viewDidLoad中调用此方法,布局就可以了

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

尝试以下限制:

输出:iPhone 6/7

输出:iPhone SE


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

您不必根据iPhone屏幕大小添加不同的限制!因为约束在任何屏幕大小下都能完美工作

只需在布局约束中进行简单修复:

问题: 因此,我看到您在UIScrollView高度方面有问题,似乎您为UIScrollView设置了固定高度约束

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

注:
如何将百分比放入约束->突出显示约束,然后从属性检查器中有一个名为“乘数”的属性,它的值从0.0到1

确保正确设置约束。有关如何操作的更多信息,请参阅指南。您希望灵活调整视图中的哪些间隙?您是否尝试将视图宽度和高度设置为与VC视图成比例?此代码应该可以工作,我打算使用代码来解决,但是我想找到一种通过iBootlet归档它的方法。UIScrollView的高度只取决于内部ContentView。所以给它一个明确的高度是错误的。很抱歉,我没有提到内容视图的大小!,我们讨论容器大小,为容器视图提供明确的高度不会影响其内容视图的大小