我已阅读了大量帖子,并了解到目前为止React Native中没有任何功能可以更改导航栏的字体,因此我知道我需要以某种方式手动执行此操作。我试图在AppDelegate.m中将以下代码粘贴到我有的React Native项目中
[[UINavigationBar appearance] setTitleTextAttributes:
@{NSFontAttributeName : [UIFont fontWithName:@"Bodoni 72" size:22.0],
NSForegroundColorAttributeName : [UIColor blueColor]}];
但这不起作用。我还以为我可以尝试在RCTConvert.m中手动编辑。但这也没有成功。有谁知道我还应该尝试什么? 谢谢!
答案 0 :(得分:0)
首先,我假设您正在使用NavigatorIOS。如果没有,则以下内容不适用。
不幸的是,由于React Native对导航栏外观的更改方式,您的方法无效。我做了一个小补丁,可以让你的代码工作。我可以将此提交给React Native,但还没有决定:
--- a/node_modules/react-native/React/Views/RCTWrapperViewController.m
+++ b/node_modules/react-native/React/Views/RCTWrapperViewController.m
@@ -115,9 +115,11 @@ static UIView *RCTFindNavBarShadowViewInView(UIView *view)
bar.barTintColor = _navItem.barTintColor;
bar.tintColor = _navItem.tintColor;
bar.translucent = _navItem.translucent;
- bar.titleTextAttributes = _navItem.titleTextColor ? @{
- NSForegroundColorAttributeName: _navItem.titleTextColor
- } : nil;
+ if (_navItem.titleTextColor != nil) {
+ NSMutableDictionary *newAttributes = bar.titleTextAttributes ? bar.titleTextAttributes.mutableCopy : [NSMutableDictionary new];
+ [newAttributes setObject:_navItem.titleTextColor forKey:NSForegroundColorAttributeName];
+ bar.titleTextAttributes = newAttributes;
+ }
RCTFindNavBarShadowViewInView(bar).hidden = _navItem.shadowHidden;