2016-06-01 6 views
1

나는 많은 글을 읽었으며 React Native에는 네비게이션 바의 글자체를 바꾸는 기능이 없으므로 수동으로해야한다고 생각합니다. 나는 React 네이티브 변경 네비게이션 바 글자

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

이있는 반작용 기본 프로젝트 AppDelegate.m에 다음 코드를 붙여 시도했지만이 작동하지 않습니다. RCTConvert.m에서 수동으로 편집 해 볼 수도 있다고 생각했습니다. 그러나 그것도 잘 작동하지 않았습니다. 아무도 내가 시도해야 할 다른 것을 아는가? 감사합니다.

+0

이것을 해결할 수 있었습니까? 그렇다면 어떻게? –

+0

탐색 막대를 렌더링하는 데 사용되는 구성 요소는 무엇입니까? 기본 제공 Navigator/NavigatorIOS 구성 요소를 사용하고 있습니까? 아니면 다른 것을 사용하고 있습니까? –

답변

0

먼저 NavigatorIOS를 사용하고 있다고 가정합니다. 그렇지 않은 경우 다음이 적용되지 않습니다.

네이티브 코드에 맞 닿아 탐색 모음 모양이 변경되는 방식으로 인해 접근 방식이 작동하지 않습니다. 나는 당신의 코드가 작동하도록하는 작은 패치를 만들었다. 나는 이것을 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;