我正在使用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)
在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)
您可以scale在UIScreen类参考中阅读有关该属性的更多信息.