我试图改变导航栏按钮的颜色,导航栏色调颜色和文字颜色,但是我似乎没有得到任何地方. 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)
- })
解决方法
您可以对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
进入你的应用程序代表didFinishLoading.这将为您的整个应用程序设置lightContent.