我正在try 正确设置导航栏的样式,我需要将字体更改为helvetica neue,大小点为19.我曾经使用过这段代码,但我注意到现在不太管用:

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

发生这种情况是因为NSFontAttributeName的类型已更改为String,我已try 使用

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

但是编译器继续给我一个与字体中的点大小相关的错误,我如何修复它?

推荐答案

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

Swift 4.2:

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

Swift 4:

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

Swift 3:

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

Note:如果在代码中使用静态名称设置字体,那么一旦验证使用的是有效的字体名称,强制展开是安全的.如果您是从外部来源(用户或服务器)获取字体名称,则需要使用optional binding(例如if let font = UIFont(...guard let font = UIFont(...)在使用前安全地打开字体.

Swift相关问答推荐

数据不会被ARC删除在swift'

如何访问用户选定目录下的(只读)文件?

SwiftUI map 旋转

ARRaycast Query和前置摄像头(ARFaceTrackingConfiguration)

SwiftUI:为什么@State在子视图中持续存在?

仅当单击UIButton时才调用计时器函数

如何使用可搜索在搜索栏中搜索包括>或<?

是否可以限制 ExpressibleByIntegerLiteral struct 的初始值?

减小SF符号的边框宽度

避免 `(())` 显式指定 Void 类型的枚举关联值

列表不显示信息

memcpy 复制带偏移量的数组

PassthroughSubject 的 AsyncPublisher 值属性未生成所有值

如何将视图添加到多行文本视图的末尾?

如何自己实现同一个 iOS 16 锁屏圆形小部件?

为什么 performSegue() 不调用 shouldPerformSegue()

将内容与工作表顶部而不是中间对齐

更改该函数的参数之一时,如何将这些 SwiftUI 异步任务合并到一个任务中以从函数中获得正确的结果

如何为多个类 Swift 进行扩展

哪些版本的 Xcode 支持哪些版本的 Swift?