2016-06-01 3 views
1

Я прочитал кучу сообщений и понял, что до сих пор в React Native нет возможности изменить шрифт панели навигации, поэтому я знаю, что мне нужно как-то вручную это сделать. Я попытался вставить следующий код в AppDelegate.m в React Native проекта У меня естьReact Native Change Navigation Bar Шрифт

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

, но это не работает. Я также подумал, что могу попробовать вручную редактировать RCTConvert.m. Но это тоже не сработало. Кто-нибудь знает, что еще я должен попробовать? Спасибо!

+0

Вы смогли это решить? Если да, то как? –

+0

Какой компонент используется для отображения вашей панели навигации? Используете ли вы встроенный компонент Navigator/NavigatorIOS или используете что-то другое? –

ответ

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;