访问内容scaleFactor/multiplier?

fuz*_*oat 4 view ios swift

我正在使用iPhone 6 Plus,并使用以下方式获取我的UIView的界限:

let viewBounds = view.bounds // GIVES 736 x 414 (Points), WHICH IS RIGHT
Run Code Online (Sandbox Code Playgroud)

有什么方法可以得到用于将点转换为像素的乘数(即@ 3x).我希望我可以使用:

let scaleFactor = view.contentScaleFactor // GIVES 1
Run Code Online (Sandbox Code Playgroud)

但是你可以看到它似乎总是返回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
Run Code Online (Sandbox Code Playgroud)

hol*_*lex 8

UIView类参考文件说,有关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
Run Code Online (Sandbox Code Playgroud)

要么

CGFloat _scale = [[UIScreen mainScreen] scale]; // Obj-C
Run Code Online (Sandbox Code Playgroud)

您可以scaleUIScreen类参考中阅读有关该属性的更多信息.