【问题标题】:How to check does method systemFontOfSize(fontSize: weight:) exist in iOS如何检查 iOS 中是否存在方法 systemFontOfSize(fontSize: weight:)
【发布时间】:2015-12-06 12:04:28
【问题描述】:

我的应用程序部署目标是 iOS 7.0 我想在装有 iOS 8+ 的设备上使用方法 systemFontOfSize(fontSize: weight:)。 iOS 7 不支持这种方法(带有weight: 参数)并且我的应用程序崩溃了。特别是对于 iOS 7,我想设置 Helvetica Light 字体而不是 SystemFont Light。

检查它的最佳方法是什么?我需要检查iOS版本还是我可以检查方法?怎么样?

我用 swift 试过了

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

respondsToSelector 方法。 它对我不起作用。

【问题讨论】:

    标签: ios xcode swift ios7 system-font


    【解决方案1】:

    respondsToSelector 按预期工作:

        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)!
        }
    

    我会推荐 HelveticaNeue 而不是 Helvetica,因为系统字体是 Neue 之一。

    【讨论】:

      【解决方案2】:

      使用 Swift 书中推荐的 #available 表达式。

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

      摘自:Apple Inc.“Swift 编程语言(Swift 2 预发行版)。”电子书。 https://itun.es/us/k5SW7.l

      【讨论】:

      • 不错的推荐,但它从 Swift 2 开始就可以使用,尚未发布
      【解决方案3】:

      检查ios版本是最好的方法

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

      【讨论】:

      • Chetan Prajapati,谢谢您的回答。这种情况适用于我,需要进行 1 次更正:使用 NSFoundationVersionNumber_iOS_7_1 而不是 NSFoundationVersionNumber_iOS_7_0。我会等待一些其他意见,如果它是最好的,我会接受你的回答。
      • 感谢您的温柔。 :)
      猜你喜欢
      • 1970-01-01
      • 2011-11-26
      • 2014-04-11
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多