我正在使用iPhone 6 Plus,并使用以下方式获取我的UIView的界限:
let viewBounds = view.bounds // GIVES 736 x 414 (Points), WHICH IS RIGHT
有没有什么方法可以得到用于将点转换为像素的乘数(即@ 3x)。我希望我可以使用:
let scaleFactor = view.contentScaleFactor // GIVES 1
但是你可以看到它似乎总是返回1.我知道我可以直接使用preferredMode.size
或nativeBounds
来获取屏幕尺寸,但我确信之前有一种方法可以访问乘数太?
// WHERE SCALE FACTOR WOULD BE 3
let yRes = viewBounds.height * scaleFactor // 736 x 3 = 2208
let xRes = viewBounds.width * scaleFactor // 414 x 3 = 1242
答案 0 :(得分:8)
UIView
Class Reference文档说明contentScaleFactor
属性:
因此,这不是你想要的。(...)对于系统视图,即使在高分辨率屏幕上,此属性的值也可能为
1.0
。
可以从主屏幕中读取实际比例因子,这会为您提供1.0
,2.0
甚至3.0
:
let scale: CGFloat = UIScreen.main.scale // Swift3, Swift4.x
let scale: CGFloat = UIScreen.mainScreen().scale // Swift 2.x
或
CGFloat _scale = [[UIScreen mainScreen] scale]; // Obj-C
您可以在UIScreen
Class Reference中了解有关scale
属性的更多信息。
答案 1 :(得分:1)
swift 3.0
let scale = UIScreen.main.scale