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

SwiftUI中自定义大尺寸导航栏标题的字体样式

SwiftUI 大尺寸导航栏标题自定义字体方案

在SwiftUI里直接用navigationBarTitle确实没法直接修改字体样式,给你两种实用的解决办法:

方法一:自定义导航栏标题视图(灵活可控)

通过ToolbarItem替换系统默认的标题,完全自定义字体样式,同时保留大尺寸导航栏的布局:

struct ContentView: View {
    var body: some View {
        NavigationStack { // iOS 16+用NavigationStack,iOS 15及以下用NavigationView
            Text("页面内容")
                .toolbar {
                    ToolbarItem(placement: .principal) {
                        Text("我的自定义标题")
                            .font(.system(.largeTitle, design: .serif))
                            .fontWeight(.black)
                    }
                }
                .navigationBarTitleDisplayMode(.large) // 保持大尺寸导航栏的显示模式
        }
    }
}

这种方式可以给单个页面单独设置标题样式,想改什么风格都能直接调整。

方法二:全局统一设置(适合全App风格一致)

如果希望所有页面的大尺寸导航栏标题都用同样的字体,可以通过UIAppearance全局配置,在App的初始化代码里设置:

@main
struct YourAppName: App {
    init() {
        let navBarAppearance = UINavigationBarAppearance()
        // 设置大标题的字体:黑体字重+衬线设计,尺寸用系统默认大标题的34号
        navBarAppearance.largeTitleTextAttributes = [
            .font: UIFont.systemFont(ofSize: 34, weight: .black, design: .serif)
        ]
        // 应用到导航栏的标准样式和滚动时的样式
        UINavigationBar.appearance().standardAppearance = navBarAppearance
        UINavigationBar.appearance().scrollEdgeAppearance = navBarAppearance
    }
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

这样所有使用大尺寸导航栏的页面都会自动应用这个字体样式,不用每个页面单独设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:37:12