我有一个距离顶部布局50 px的视图。
我希望距离根据设备大小而变化,例如它应该在4秒内变为30像素,而在iPhone 6s中应该变为50像素,而iPhone 6s则为60像素。
我尝试提供宽高比而不是垂直间距,但它不起作用。
如果我只是在所有设备中给出50px的垂直间距..请帮助我
答案 0 :(得分:2)
AutoLayout确实允许您根据屏幕设置不同的约束,但它仅限于方向更改,以及iPad和iPhone。你必须以编程方式完成它。
This link将向您展示如何获取设备,然后一旦您拥有该设备,您需要为您的约束创建一个@IBOutlet,然后您可以将其.constant
属性更改为40 ,50或60
public extension UIDevice {
var modelName: String {
var systemInfo = utsname()
uname(&systemInfo)
let machineMirror = Mirror(reflecting: systemInfo.machine)
let identifier = machineMirror.children.reduce("") { identifier, element in
guard let value = element.value as? Int8, value != 0 else { return identifier }
return identifier + String(UnicodeScalar(UInt8(value)))
}
switch identifier {
case "iPhone4,1": return "iPhone 4s"
case "iPhone8,1": return "iPhone 6s"
case "iPhone8,4": return "iPhone SE"
default: return identifier
}
}
}
现在您可以这样使用它:
@IBOutlet weak var myConstraint: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
if UIDevice.current.modelName == "iPhone 4s" {
myConstraint.constant = 30
}
else if UIDevice.current.modelName == "iPhone SE" {
myConstraint.constant = 50
}
else if UIDevice.current.modelName == "iPhone 6s" {
myConstraint.constant = 60
}
}
答案 1 :(得分:1)