1

如何更改模态共享操作中使用的UIActivityViewController邮件撰写对象的导航栏的外观?更改Modal的外观UIActivityViewController

UINavigationBar - Wrong Tint

UIActivityViewController符合UIAppearance,所以我想下面的工作,但事实并非如此。导航栏保持默认蓝色。

activityVC.navigationController.navigationBar.tintColor = [UIColor greyColor]; 

语境:

- (IBAction)share { 
     NSString *textToShare = ...; 
     NSURL *url = ...; 

     NSArray *activityItems = [[NSArray alloc] initWithObjects:textToShare,url,nil]; 

     UIActivity *activity = [[UIActivity alloc] init]; 
     NSArray *applicationActivities = [[NSArray alloc] initWithObjects:activity, nil]; 
     UIActivityViewController *activityVC = 
     [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities]; 
     [activityVC setExcludedActivityTypes:[NSArray arrayWithObjects:            UIActivityTypeMessage,UIActivityTypeCopyToPasteboard, 
UIActivityTypeAssignToContact,UIActivityTypePostToWeibo,            UIActivityTypePrint,UIActivityTypeSaveToCameraRoll, 
               nil]]; 

     activityVC.navigationController.navigationBar.tintColor = [UIColor greyColor]; 

     [self presentViewController:activityVC animated:YES completion:nil]; 
    } 

我怎样才能改变UINavigationBar的色调从蓝色变成灰色。

+1

您是否尝试强制使用setNeedDisplay方法重新渲染导航栏? – tiguero

回答

5

在你的应用程序委托为此,它会改变整个其中显示以往的导航栏

[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:.9 green:.9 blue:.9 alpha:1]]; 

你也可以在你的应用程序中使用此更改文本颜色和字体代表

应用导航栏的颜色
NSDictionary *navbarTitleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
              [UIColor redColor],UITextAttributeTextColor, 
              [UIFont fontWithName:@"Arial" size:19],UITextAttributeFont, 
              nil]; 
[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes]; 
+0

虽然我在AppDelegate中设置了[UINavigationBar外观],但它默认为黑色,虽然我在iOS中设置了[UINavigationBar外观] – quantumpotato

+0

iOS 7.1 –

+0

iOS 7有另一种方法@property(nonatomic,retain)UIColor * barTintColor NS_AVAILABLE_IOS(7_0)UI_APPEARANCE_SELECTOR; //默认为零 – Talha