Hen*_*ing 17 textcolor uinavigationbar tintcolor uiactivityviewcontroller ios7
当我使用a时UIActivityViewController,在用户选择活动(例如Mail或Message)后,我无法更改状态栏的文本颜色,也无法更改"取消"和"发送"导航栏按钮的文本/色调颜色.对于条形按钮,在AppDelegate我尝试过使用:
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
Run Code Online (Sandbox Code Playgroud)
没有任何反应.但是我可以用这个设置导航栏标题:
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor, nil]];
Run Code Online (Sandbox Code Playgroud)
我设置UIViewControllerBasedStatusBarAppearance到NO中Info.plist.并把线:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)
在AppDelegate,并没有运气改变状态栏颜色.有任何想法吗?
由于UIActivityViewController提供了底层模型视图控制器,我们使用此解决方法来修复状态栏颜色问题:
@interface StatusBarColorApplyingActivityViewController : UIActivityViewController
@end
@implementation StatusBarColorApplyingActivityViewController
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion {
[super presentViewController:viewControllerToPresent animated:flag completion:^{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
if (completion) {
completion();
}
}];
}
@end
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这只是一个扩展UIActivityViewController的类覆盖了presentViewController:animated:completion:.当呈现视图控制器时,我们通过完成块中的UIApplication设置状态栏样式.然后我们调用给出方法的原始完成块(如果有的话).
我相信更改导航栏颜色的代码是这样的:
[[UINavigationBar appearance] setBarTintColor:[UIColor whiteColor]];
Run Code Online (Sandbox Code Playgroud)
这是为了更改 iOS 7 中导航栏按钮的颜色(如果您可能需要的话):
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
Run Code Online (Sandbox Code Playgroud)
如果您想更改 iOS 6 中按钮的颜色,请使用以下代码:
[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];
Run Code Online (Sandbox Code Playgroud)
此代码也适用于 iOS 8+,用于更改 UIActivityViewController 活动的栏按钮文本颜色(例如通过消息或邮件编辑器共享)。
| 归档时间: |
|
| 查看次数: |
7685 次 |
| 最近记录: |