基于 ipad 或 iphone 更改对象的约束
changing constraints of object based on ipad or iphone
在我的代码中,为了达到预期的效果,我只能根据使用 iphone 或 ipad 来更改约束。所以我需要创建类似 if iphone constraints = and then if ipad constraints 的东西。我写了一个我需要做的例子。我只需要更改控制底部 ancor 的 4 个语句的最后一行。
//ipad
NSLayoutConstraint.activate([
box.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.25),
box.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.10),
box.centerXAnchor.constraint(equalTo: view.centerXAnchor),
box.centerYAnchor.constraint(equalTo: view.centerYAnchor),
])
//iphone
NSLayoutConstraint.activate([
box.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.25),
box.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.10),
box.centerXAnchor.constraint(equalTo: view.centerXAnchor),
box.bottomAnchor.constraint(equalTo: view.centerYAnchor),
])
您可以使用userInterfaceIdiom
检测界面风格:
switch UIDevice.current.userInterfaceIdiom {
case .phone: break
// It's an iPhone
case .pad: break
// It's an iPad
default: break
// others
}
检查尺寸 class。对于 ipad,水平和垂直 classes 都应该是规则的。您可以执行以下操作:
let horizontalSizeClass = view.traitCollection.horizontalSizeClass
let verticalSizeClass = view.traitCollection.verticalSizeClass
switch horizantalSizeClass {
case .regular:
// Do some layout.
case .compact:
// Make compact constraints...
default:
// Unspecified. Do something else.
}
// rest of setup
此外,您无法对其进行任何约束的原因是因为您输入了 break
来结束 switch 语句。其他答案可能有效。
在我的代码中,为了达到预期的效果,我只能根据使用 iphone 或 ipad 来更改约束。所以我需要创建类似 if iphone constraints = and then if ipad constraints 的东西。我写了一个我需要做的例子。我只需要更改控制底部 ancor 的 4 个语句的最后一行。
//ipad
NSLayoutConstraint.activate([
box.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.25),
box.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.10),
box.centerXAnchor.constraint(equalTo: view.centerXAnchor),
box.centerYAnchor.constraint(equalTo: view.centerYAnchor),
])
//iphone
NSLayoutConstraint.activate([
box.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.25),
box.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.10),
box.centerXAnchor.constraint(equalTo: view.centerXAnchor),
box.bottomAnchor.constraint(equalTo: view.centerYAnchor),
])
您可以使用userInterfaceIdiom
检测界面风格:
switch UIDevice.current.userInterfaceIdiom {
case .phone: break
// It's an iPhone
case .pad: break
// It's an iPad
default: break
// others
}
检查尺寸 class。对于 ipad,水平和垂直 classes 都应该是规则的。您可以执行以下操作:
let horizontalSizeClass = view.traitCollection.horizontalSizeClass
let verticalSizeClass = view.traitCollection.verticalSizeClass
switch horizantalSizeClass {
case .regular:
// Do some layout.
case .compact:
// Make compact constraints...
default:
// Unspecified. Do something else.
}
// rest of setup
此外,您无法对其进行任何约束的原因是因为您输入了 break
来结束 switch 语句。其他答案可能有效。