我正在尝试更改导航栏按钮的颜色,导航栏的色调颜色和文本颜色,但我似乎无处可去。 MFMailComposeViewController
正在通过UIActivityViewController
激活,我尝试了一些以前有效的方法(但不是通过UIActivityViewController
)。
这是我目前的代码:
UINavigationBar.my_appearanceWhenContainedIn(MFMailComposeViewController).barTintColor = UIColor.blackColor()
建议here。我也试过这个:
activityVC.navigationController?.navigationBar.tintColor = UIColorFromRGB(0x0096FF)
activityVC.navigationController?.navigationBar.barTintColor = UIColor.whiteColor()
我也希望更改状态栏颜色。
有人有什么想法吗?
更新
我修复了按钮和标题的导航栏问题,但仍在寻找状态栏的解决方案。这样做并不起作用:
self.presentViewController(activityVC, animated: true, completion: { () in
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
})
答案 0 :(得分:4)
您可以继承MFMailViewController
并覆盖其viewWillAppear
方法
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
self.navigationController.navigationBar.translucent = false
self.navigationController.navigationBar.opaque = false
self.navigationController.navigationBar.barTintColor = UIColor.blueColor()
}
因为当MFMailComposeViewController处于活动状态时,您只希望状态栏为lightcontent
,所以不应该放
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
进入你的app代表didFinishLoading。这会为整个应用程序设置lightContent。
答案 1 :(得分:1)
对于iOS8,你使用barTintColor来改变状态的颜色
NSString *invitationText = @"test";
[UINavigationBar appearance].barTintColor = [UIColor whiteColor];
MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setSubject:@"Test "];
[mc setMessageBody:invitationText isHTML:YES];
[self presentViewController:mc animated:YES completion:NULL];
答案 2 :(得分:0)
转到您的app委托文件并将这些行添加到didFinishLaunchingWithOptions :)它将更新所有视图控制器的状态栏颜色。
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
此外,在您的info.plist文件中添加一个名为&#34的新密钥;查看基于控制器的状态栏外观"并将值设置为" NO"
<强>更新强>
要在视图之间设置不同的样式,请尝试:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
然后根据你想要达到的目的,你可以返回光明或黑暗:)
答案 3 :(得分:-1)
MFMailComposeViewController
设置了自己的状态栏样式,您无法访问该样式。你可以深入研究一些私有API来做到这一点,但是你的应用肯定会被Apple拒绝。
作为旁注,你不应该改变任何有关Apple提供的UIViewController的内容。他们看起来那样,因为他们在原始应用程序之后进行了样式设置。它旨在为用户提供应用程序中的位置和方向感。 Apple也可能拒绝您的应用,因为您已经更改了他们的内容。