2016-01-23 2 views
1

В настоящее время я разрабатываю React Native, и я хочу изменить шрифт названия NavigatorIOS, я нашел несколько перспективных ссылок от: Github issue и Stack Overflow. Как ни печально ни помогли.React Native iOS NavigatorIOS title font

настоящее время у меня этот код в моем AppDelegate.m

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

Это также не меняет шрифт заголовка из шрифте была NavigatorIOS дана в начале.

+0

Вы были в состоянии решить эту проблему ? –

ответ

0

Где вы размещали этот код в AppDelegate.

Его лучше разместить в RCT_EXPORT_METHORD, который должен вызываться из любого класса js.

В 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(); 

} 

Это будет работать. (Код только что напечатан здесь)

+0

Не удалось получить эту работу.! –

0

Я не верю, что ответ отправлен Rahul будет работать из-за того, как React Native изменяет внешний вид панели навигации.

Я сделал крошечный патч, который позволит вашему коду работать. Я могу представить это Реагировать 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] 
Смежные вопросы