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
相关产品推荐
相关产品推荐

