You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS15下SwiftUI部分设备Navigation title显示不全问题求助

问题根因

这个是iOS15系统SwiftUI的已知导航栏布局bug,由代码中几个不规范写法叠加触发:

  • 全局foregroundColor修饰符直接挂载到根ZStack上,被导航栏内置视图继承,干扰系统对标题区域的宽度计算
  • 已废弃的navigationBarItems修饰符在iOS15上存在布局兼容问题,自定义trailing按钮宽度会异常抢占标题区域的可用空间
  • navigationViewStyle修饰符错加在NavigationView的子视图上,本该作用于NavigationView本身,错误的挂载位置导致导航栏布局计算异常

修复步骤

  1. 移除根ZStack上的.foregroundColor(Color.white)修饰符,将前景色设置拆分到内部需要的子视图上,避免全局样式污染导航栏
  2. 替换navigationBarItems为iOS14+推荐的toolbar修饰符自定义导航栏按钮
  3. 将navigationViewStyle(.stack)移动到外层的NavigationView上,不要写在子视图层
  4. 如果仍出现截断问题,可在toolbar中添加principal位置的EmptyView,彻底覆盖系统生成的标题控件,避免布局冲突

修复后代码示例

var body: some View {
    ZStack {
        Color(ColorConstantsName.MainThemeBgColour)
            .ignoresSafeArea()
        GeometryReader { geo in
            ScrollView(.vertical) {
                Text("Testing")
                    .foregroundColor(.white) // 前景色加到内部子视图
            }
        }
    }
    .navigationBarBackButtonHidden(true)
    .navigationTitle(CommonAllString.BlankStr)
    .navigationBarTitleDisplayMode(.inline)
    // 替换navigationBarItems为toolbar
    .toolbar {
        // 显式设置空标题视图,避免系统生成的标题Label挤占空间
        ToolbarItem(placement: .principal) {
            EmptyView()
        }
        ToolbarItem(placement: .navigationBarLeading) {
            leadingButton
                .foregroundColor(.white) // 导航按钮单独设置前景色
        }
        ToolbarItem(placement: .navigationBarTrailing) {
            trailingButton
                .foregroundColor(.white) // 导航按钮单独设置前景色
        }
    }
}

var trailingButton: some View {
    HStack {
        Image(systemName: ImageConstantsNameForChatScreen.PersonImg)
            .padding(.trailing)
        Image(ImageConstantsName.DTRShareIconImg)
            .resizable()
            .frame(width: 20, height: 20)
    }
}

// 外层NavigationView处添加navigationViewStyle,示例:
// NavigationView {
//     YourView()
// }
// .navigationViewStyle(.stack)

内容的提问来源于stack exchange,提问作者Sham Dhiman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:45:00