React Native iOS NavigatorIOS标题字体

我目前正在开发一个React Native,我想改变NavigatorIOS标题的字体,我发现了一些有希望的链接: Github问题和Stack Overflow 。 但遗憾的是,两者都没有帮助。

我目前在AppDelegate.m中有这个代码

[[UINavigationBar appearance] setTitleTextAttributes:@{ NSFontAttributeName : [UIFont fontWithName:@"Avenir-Light" size:22.0], NSForegroundColorAttributeName : [UIColor whiteColor] }]; 

这也不会从一开始就给出NavigatorIOS的字体更改标题栏的字体。

你在哪里把这个代码放在AppDelegate

最好放入一个应该从任何js类调用的RCT_EXPORT_METHORD

在AppDelagete.h中

 import BridgeModule.h Add RCTBridgeModule protocol 

在AppDelegate.m中

 Add: RCT_EXPORT_MODULE() below implementation @implementation AppDelegate RCT_EXPORT_MODULE() 

添加这个新function

 RCT_EXPORT_METHOD(updateNavigationBar){ [[UINavigationBar appearance] setTitleTextAttributes:@{ NSFontAttributeName : [UIFont fontWithName:@"Avenir-Light" size:22.0], NSForegroundColorAttributeName : [UIColor whiteColor] }]; } 

js的变化

添加以下行

 var AppDelegate = require('NativeModules').AppDelegate; someJSFunction{ AppDelegate.updateNavigationBar(); } 

这将工作。 (代码只是在这里输入)

我不相信Rahul发布的答案会因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; 

使用此补丁,您应该能够执行以下操作(Swift):

  UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: UIFont(name:"Avenir-Light", size: 22.0) as Any]