首页 > 解决方案 > SwiftUI – 导航栏“isTranscluent”属性在 iPad 上崩溃

问题描述

如何isTranscluent使用 SwiftUI 设置 iPad 导航栏的属性。以下代码在 iPhone 中运行良好,但在 iPad 中崩溃并出现错误:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).

UINavigationBar.appearance().isTranslucent = false

标签: swiftipadswiftuiuinavigationbarswiftui-navigationlink

解决方案


使用 UIKit 在 Xcode 12.0 Beta (iPad Pro 2018 with iPadOS 13.5) 中运行良好:

navigationController.navigationBar.isTranslucent = false


在使用 SwiftUI 的 Xcode 12.0 Beta(iPad Pro 2018 和 iPadOS 13.5)中也可以正常工作:

struct NavigationConfigurator: UIViewControllerRepresentable { ... }

NavigationView {

    ScrollView {
        Text("Scroll View")
    }
    .navigationBarTitle("Navigation Bar", displayMode: .inline)
    .background(NavigationConfigurator { controller in
        controller.navigationBar.barTintColor = .red
        controller.navigationBar.titleTextAttributes = [.foregroundColor : .grey]
        controller.navigationBar.isTranslucent = false
    })
}

推荐阅读