如何让SwiftUI导航栏始终保持大标题显示状态
SwiftUI 固定导航栏大标题实现方案
对应UIKit中navigationItem.largeTitleDisplayMode = .always的效果,SwiftUI可以通过navigationBarTitleDisplayMode修饰符实现,具体用法如下:
基础实现(iOS 16+)
import SwiftUI struct LargeTitleDemoView: View { var body: some View { NavigationStack { // 可滚动内容 List(0..<100) { index in Text("列表项 \(index)") } .navigationTitle("固定大标题") // 核心配置:强制始终显示大标题 .navigationBarTitleDisplayMode(.large) } } }
兼容iOS 15及更低版本
如果需要支持旧版本系统,替换NavigationStack为NavigationView即可:
struct LargeTitleDemoView: View { var body: some View { NavigationView { List(0..<100) { index in Text("列表项 \(index)") } .navigationTitle("固定大标题") .navigationBarTitleDisplayMode(.large) } .navigationViewStyle(.stack) } }
注意说明
navigationBarTitleDisplayMode(.large)枚举值完全对应UIKit的largeTitleDisplayMode = .always,会强制导航栏保持大标题样式,滚动时不会自动缩小为内嵌小标题- 修饰符需要添加在
NavigationStack/NavigationView的子视图上,不要直接作用于导航容器本身 - 子页面的
navigationBarTitleDisplayMode配置优先级高于父级导航容器的全局配置
内容的提问来源于stack exchange,提问作者alionthego
相关产品推荐
相关产品推荐

