问题
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