我正在使用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
Class Reference文档介绍了有关contentScaleFactor
属性的信息:
因此,这不是您想要的。
实际比例因子可以从主屏幕读取,这将为您提供1.0
,2.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
您可以在
scale
Class Reference中阅读有关UIScreen
属性的更多信息。