iOS iPhone размер физического экрана в миллиметрах - PullRequest
0 голосов
/ 21 ноября 2018

Есть ли способ получить физический размер экрана iPhone в миллиметрах в iOS?

Единственная доступная информация - это PPI для каждой модели iPhone и размер экрана в пикселях, но не в миллиметрах.

1 Ответ

0 голосов
/ 21 ноября 2018

Вот расширение Swift CGSize, позволяющее получить физический размер экрана iPhone в миллиметрах относительно текущего устройства:

Примечание: оно поддерживает только iPhone X и более старые модели.

extension CGSize {
    /**
    * Physical device screen size in millimeters
    */
    static func physicalDeviceScreenSize() -> CGSize? {
        guard let ppi = deviceModelNameToPpiMapping[UIDevice().modelName], ppi != 0 else {
            return nil
        }

        let width = (UIScreen.main.nativeBounds.width * 25.4) / ppi
        let height = (UIScreen.main.nativeBounds.height * 25.4) / ppi

        return CGSize(width: width, height: height)
    }

    static private var deviceModelNameToPpiMapping: Dictionary<String, CGFloat> {
        // PPI values derived from https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
        return [
            "iPhone10,3": 458.0, // iPhone X
            "iPhone10,6": 458.0, // iPhone X
            "iPhone11,2": 458.0, // iPhone Xs
            "iPhone11,4": 458.0, // iPhone Xs Max
            "iPhone11,6": 458.0, // iPhone Xs Max
            "iPhone11,8": 326.0, // iPhone Xr
        ]
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...