我目前正在开发一个React Native,我想更改NavigatorIOS标题的字体,我发现了一些有希望的链接:Github issue和Stack Overflow。但遗憾的是,两者都没有帮助。
我目前在AppDelegate.m中有这段代码
[[UINavigationBar appearance] setTitleTextAttributes:@{
NSFontAttributeName : [UIFont fontWithName:@"Avenir-Light" size:22.0],
NSForegroundColorAttributeName : [UIColor whiteColor]
}];
这也不会从一开始就给出NavigatorIOS的字体改变标题栏的字体。
答案 0 :(得分:0)
您将此代码放在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()
添加此新功能
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();
}
这将有效。 (代码只是输入这里)
答案 1 :(得分:0)
我不相信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]