React Native Change导航栏字体

时间:2016-06-01 14:47:08

标签: ios reactjs react-native ios9 navigationbar

我已阅读了大量帖子,并了解到目前为止React Native中没有任何功能可以更改导航栏的字体,因此我知道我需要以某种方式手动执行此操作。我试图在AppDelegate.m中将以下代码粘贴到我有的React Native项目中

[[UINavigationBar appearance] setTitleTextAttributes:
          @{NSFontAttributeName : [UIFont fontWithName:@"Bodoni 72" size:22.0],
          NSForegroundColorAttributeName : [UIColor blueColor]}];

但这不起作用。我还以为我可以尝试在RCTConvert.m中手动编辑。但这也没有成功。有谁知道我还应该尝试什么? 谢谢!

1 个答案:

答案 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;