ios - 试图修改 SwiftUI 导航栏文本属性的运行时崩溃

标签 ios xcode swiftui uinavigationbarappearance

我正在尝试修改 SwiftUI 中的导航栏文本属性(以添加文本阴影),但在试图理解为什么我在模拟器中收到运行时崩溃时遇到了困难。还有另一个线程(引用:下面)能够使用 init() 修改外观来解决更改字体类型的问题,但是尝试使用 init 修改 Text("") 方法以添加阴影会导致崩溃。
我还尝试将 Text("NavBarTitle") 提取到它自己的方法中,然后应用修饰符(那里没有运气)。如我的代码所示,我尝试将文本提取到变量中导致崩溃。即使只是直接应用修饰符也会导致崩溃。

我对 SwiftUI 的经验不足,无法将其称为错误,但感觉确实像一个错误。
提前感谢您的帮助!

import SwiftUI

struct ContentView: View {

    init() {
        UINavigationBar.appearance().largeTitleTextAttributes = [.shadow: 5]
    }

    let navigationBarText: Text = Text("Navigation Bar")

    var body: some View {
        NavigationView {
            VStack {
                Text("Hello, World!")
            }
            .navigationBarTitle(navigationBarText)

        }
    }
}

引用:https://stackoverflow.com/a/57632229/1514009

最佳答案

应该提供NSShadow对象而不是数字,如下所示

SwiftUI navigation bar shadow

init() {
    let shadow = NSShadow()
    shadow.shadowOffset = CGSize(width: 5, height: 2)
    UINavigationBar.appearance().largeTitleTextAttributes = [.shadow: shadow]
}

关于ios - 试图修改 SwiftUI 导航栏文本属性的运行时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59806685/

相关文章:

swift - 如何使用 HStack 使 SwiftUI View 中的所有 View 具有相同的高度?

SwiftUI 缩放背景拦截点击

ios - 克隆节点和性能、几何结构和性能; iOS场景套件

ios - 在已经设置了重力/碰撞/弹性的情况下在 Swift 中移动对象(UIView)

ios - 如何从 Xcode 6.3 中的设备访问 TestFlight Beta 分发的应用程序的崩溃报告而不是 .ips.beta 文件?

xcode - 动态库链接问题

ios - 将我的应用程序发送到 Apple Store 时, Storyboard设置 : Your app specifies the UIMainStoryBoardFile key for storyboard, 无效

ios - 如何在Swift 5中进行具有较大JSON响应的GET API调用?

iOS - 通知服务扩展将因启动缓慢而被终止

iphone - 当表格重新出现时,UITableView 不会自动取消选择选定的行