访问内容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.sizenativeBounds获取屏幕大小,但是我确定以前也有访问乘法器的方法吗?

 // 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