访问内容scaleFactor / multiplier?
我正在使用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
UIView
类参考文档说关于contentScaleFactor
属性:
(…)对于系统视图,即使在高分辨率屏幕上,该属性的值也可能为
1.0
。
因此,这不是你所期待的。
实际的比例因子可以从主屏幕读取,这会给你1.0,2.0甚至3.0
:
var scale: CGFloat = UIScreen.main.scale // Swift3 var scale: CGFloat = UIScreen.mainScreen().scale // Swift 2.x
要么
CGFloat _scale = [[UIScreen mainScreen] scale]; // Obj-C
您可以在UIScreen
类参考中阅读有关scale
属性的更多信息。
迅速3.0
let scale = UIScreen.main.scale