【问题标题】:NSFontAttributeName has changed to StringNSFontAttributeName 已更改为 String
【发布时间】:2014-10-26 12:18:28
【问题描述】:

我正在尝试正确设置导航栏的样式,我需要将字体更改为 helvetica neue,大小点为 19。我曾经使用过此代码,但我注意到现在无法正常工作:

navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 19)]

发生这种情况是因为 NSFontAttributeName 的类型已更改为字符串,我已尝试修复它

navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: "HelveticaNeue-Light, 19"]

但是编译器继续给我一个与字体大小有关的错误,我该如何解决?

【问题讨论】:

    标签: string swift uinavigationbar


    【解决方案1】:

    UIFont 构造函数返回一个可选的 (UIFont?),您必须打开它才能使用。如果您确定您的字体名称有效,请添加!

    Swift 4.2:

    navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "HelveticaNeue-Light", size: 19)!]
    

    斯威夫特 4:

    navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Light", size: 19)!]
    

    斯威夫特 3:

    navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 19)!]
    

    注意:如果您在代码中设置具有静态名称的字体,则一旦您确认您使用的是有效的字体名称,强制展开是安全的。如果您从外部来源(用户或服务器)获取字体名称,您将需要使用可选绑定,例如if let font = UIFont(...guard let font = UIFont(...,以便在使用前安全地解开字体。

    【讨论】:

    • 谢谢!正是我想要的!
    【解决方案2】:

    使用 Swift 4 NSFontAttributeName 已弃用,您可以使用 NSAttributedStringKey 值来设置属性。

    if let fontStyle = UIFont(name: "HelveticaNeue-Light", size: 19) {
      navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.font: fontStyle]
    }
    

    Swift 4.2 中,NSAttributedStringKey 更改为 NSAttributedString.Key

    if let fontStyle = UIFont(name: "HelveticaNeue-Light", size: 19) {
      navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: fontStyle]
    }
    

    有关 NSAttributedStringKey 的更多选项,您可以访问此链接https://developer.apple.com/documentation/foundation/nsattributedstringkey/

    【讨论】:

      【解决方案3】:

      Swift 4.2

      NSAttributedStringKey 在 Swift 4.2 中已重命名为 NSAttributedString.Key

      if let fontStyle = UIFont(name: "HelveticaNeue-Light", size: 19) {
        navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: fontStyle]
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多