xsk*_*kit 8 xcode ios size-classes
我有一个专为iPhone SE设计的ViewController
如你所见,我也有一个约束 Align Top to: Safe Area Equals 75
问题是,是否可以为iPhone 8和iPhone 8 Plus更改此值?例如:
我们面临着类似的问题。我们使用名为 scaled 的辅助类解决了问题。这基本上只是乘以某些东西的大小,在较大的设备上应该看起来更大。
extension CGFloat {
public var scaled: CGFloat {
switch UIDevice.type.getResolutionGroup()! {
case .lr320x568:
return self
case .lr375x667:
return self * 1.1
case .lr414x736:
return self * 1.2
case .lr768x1024:
return self * 1.3
// For iPads
case .lr1024x1366:
return self * 1.3
}
}
}
Run Code Online (Sandbox Code Playgroud)
和执行决议组
public func getResolutionGroup() -> ResolutionGroup? {
switch self {
case .iPhone5, .iPhone5C, .iPhone5S, .iPhoneSE, .iPodTouch5, .iPodTouch6:
return .lr320x568
case .iPhone6, .iPhone6S, .iPhone7:
return .lr375x667
case .iPhone6Plus, .iPhone6SPlus, .iPhone7Plus:
return .lr414x736
case .iPadMini, .iPadMini2, .iPadMini3, .iPadMini4:
return .lr768x1024
case .iPad2, .iPad3, .iPad4, .iPadAir, .iPadAir2:
return .lr768x1024
case .iPadPro:
return .lr1024x1366
case .simulator:
return isiPhone() ? .lr320x568 : .lr768x1024
default:
return .lr320x568
}
}
Run Code Online (Sandbox Code Playgroud)
并在应用程序中使用
fileprivate let footerHeight = CGFloat(180).scaled
Run Code Online (Sandbox Code Playgroud)
不使用Interface Builder,没有.约束,只能以Compact,Regular或Any尺寸为目标,所有iPhone型号在纵向模式下都具有紧凑宽度和常规高度.
如果您想要这种粒度,则必须使用代码来完成.
归档时间: |
|
查看次数: |
4309 次 |
最近记录: |