这是我的xib文件,被视为iPhone6 / iPhone7,看起来不错。
但如果我把它变成iPhoneSE,就会变得异常。
当设备发生变化时,空格不会改变,并且我无法在没有代码的情况下更改适应设备的空间约束。
答案 0 :(得分:1)
答案 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中调用此方法,您的布局就可以了。
注意:强> 对于横向模式,您需要根据需要进行一些更改。我假设您只支持纵向模式。