How to check does method systemFontOfSize(fontSize: weight:) exist in iOS

百般思念 提交于 2019-12-10 18:31:58

问题


My application deployment target is iOS 7.0 I want to use method systemFontOfSize(fontSize: weight:) on devices with iOS 8+. iOS 7 doesn't support this method (with weight: parameter) and my application crashes. Specially for iOS 7 I want to set Helvetica Light font instead of SystemFont Light.

What is the best way to check it? Do I need to check iOS version or I can check the method? how?

I use swift and tried

if let font = UIFont.systemFontOfSize(12, weight: UIFontWeightLight) 

or

respondsToSelector method. It didn't work for me.


回答1:


respondsToSelector works as expected:

    let font: UIFont
    if UIFont.respondsToSelector("systemFontOfSize:weight:") {
        println("YES")
        font = .systemFontOfSize(12, weight: UIFontWeightLight)
    }
    else {
        println("NO")
        font = UIFont(name: "HelveticaNeue-Light", size: 12)!
    }

And I would recommend HelveticaNeue instead of Helvetica, since the system font is Neue one.




回答2:


Use the #available expression which is recommended in the Swift book.

if #available(iOS 8, *) {
    // Use iOS 8 APIs on iOS
} else {
    // Fall back to earlier iOS APIs
}

Excerpt From: Apple Inc. “The Swift Programming Language (Swift 2 Prerelease).” iBooks. https://itun.es/us/k5SW7.l




回答3:


Checking ios version is best way

if NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_0 {
    // code
} else {
    // code
}


来源:https://stackoverflow.com/questions/32497855/how-to-check-does-method-systemfontofsizefontsize-weight-exist-in-ios

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!