【发布时间】:2019-05-02 20:41:45
【问题描述】:
如何为 iPhone 8 和 8+ 定义单独的约束?
由于两者的宽度不同。是否可以通过情节提要来区分它。
基本上我想为两部手机设置不同的 x 和 y 边距。
【问题讨论】:
标签: xcode autolayout storyboard
如何为 iPhone 8 和 8+ 定义单独的约束?
由于两者的宽度不同。是否可以通过情节提要来区分它。
基本上我想为两部手机设置不同的 x 和 y 边距。
【问题讨论】:
标签: xcode autolayout storyboard
不,您不能在 storyboard 中分离 iPhone 8 和 8+ 的布局。因为自动布局是基于尺寸等级的,并且没有可用的尺寸等级来分开 iPhone 8 和 8+。
更多信息:https://medium.com/@craiggrummitt/size-classes-in-interface-builder-in-xcode-8-74f20a541195.
【讨论】:
自定义约束类 IBDesignable & IBInspectable
import UIKit
@IBDesignable
class MyConstraint: NSLayoutConstraint {
@IBInspectable
var iPhone8: CGFloat = 0 {
didSet {
if UIScreen.main.bounds.maxY == 667 &&
UIScreen.main.bounds.maxX == 375 {
constant = iPhone8
}
}
}
@IBInspectable
var iPhone8Plus: CGFloat = 0 {
didSet {
if UIScreen.main.bounds.maxX == 414 &&
UIScreen.main.bounds.maxY == 736 {
constant = iPhone8Plus
}
}
}
}
设置约束自定义类
【讨论】: