为了账号安全,请及时绑定邮箱和手机立即绑定

检测视网膜显示

检测视网膜显示

iOS
慕标琳琳 2019-12-10 13:08:56
iOS SDK是否提供一种简便的方法来检查currentDevice是否具有高分辨率显示器(视网膜)?我发现现在最好的方法是:    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] == YES && [[UIScreen mainScreen] scale] == 2.00) {         // RETINA DISPLAY    }
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

为了在所有iOS设备上可靠地检测Retina显示屏,您需要检查设备是否正在运行iOS4 +,以及该[UIScreen mainScreen].scale属性是否等于2.0。如果该scale属性存在,则不能假定设备正在运行iOS4 + ,因为iPad 3.2也包含此属性。


在运行iOS3.2的iPad上,scale将在1x模式下返回1.0,在2x模式下返回2.0-即使我们知道该设备不包含Retina显示屏。苹果在iPad的iOS4.2中更改了此行为:它在1x和2x模式下均返回1.0。您可以在模拟器中对此进行测试。


我-displayLinkWithTarget:selector:在存在于iOS4.x而非iOS3.2的主屏幕上测试该方法,然后检查屏幕的缩放比例:


if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&

    ([UIScreen mainScreen].scale == 2.0)) {

  // Retina display

} else {

  // non-Retina display

}



查看完整回答
反对 回复 2019-12-11
?
达令说

TA贡献1821条经验 获得超6个赞

这是一个便捷的扩展:


Swift v5更新:


extension UIScreen {


    public var isRetina: Bool {

        guard let scale = screenScale else {

            return false

        }

        return scale >= 2.0

    }


    public var isRetinaHD: Bool {

        guard let scale = screenScale else {

            return false

        }

        return scale >= 2.0

    }


    private var screenScale: CGFloat? {

        guard UIScreen.main.responds(to: #selector(getter: scale)) else {

            return nil

        }

        return UIScreen.main.scale

    }

}

用法:


if UIScreen.main.isRetina {

    // Your code

}

原版的:


extension UIScreen { 

public func isRetina() -> Bool {

    return screenScale() >= 2.0

}


public func isRetinaHD() -> Bool {

    return screenScale() >= 3.0

}


private func screenScale() -> CGFloat? {

    if UIScreen.mainScreen().respondsToSelector(Selector("scale")) {

        return UIScreen.mainScreen().scale

    }

    return nil

    }

}

用法:


if UIScreen.mainScreen().isRetina() {

 // your code

        }



查看完整回答
反对 回复 2019-12-11
  • 3 回答
  • 0 关注
  • 438 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信