访问内容scaleFactor / multiplier?

时间:2014-10-29 15:28:03

标签: ios view swift

我正在使用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

2 个答案:

答案 0 :(得分:8)

UIView Class Reference文档说明contentScaleFactor属性:

  

(...)对于系统视图,即使在高分辨率屏幕上,此属性的值也可能为1.0

因此,这不是你想要的。


可以从主屏幕中读取实际比例因子,这会为您提供1.02.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