我有一个样式为ActionSheet的UIAlertController。有2个选项。当用户选择其中任何一个时,它会显示Apple内置的UIActivityViewController。我遇到的问题是当用户选择消息或邮件等时,导航栏按钮为深蓝色,状态栏为黑色。我希望按钮为白色和状态栏为白色。唯一正常工作的是Nav Bar颜色为蓝色,我在app delegate中设置。
我在App Delegate中的代码:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Nav Bar
UINavigationBar.appearance().translucent = false
UINavigationBar.appearance().opaque = true
UINavigationBar.appearance().barTintColor = primaryBlueColor
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
// Status Bar
UIApplication.sharedApplication().statusBarHidden = false
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
}
当我展示UIActivityViewController时,我可以将“取消”按钮的颜色自定义为自定义蓝色。但同样,当用户按下消息或任何其他选项时,它将转到新屏幕并且颜色不正确。这就是我所拥有的:
let activityController = UIActivityViewController(activityItems: [textFile], applicationActivities: nil)
self.presentViewController(activityController, animated: true, completion: nil)
activityController.view.tintColor = primaryBlueColor
编辑问题1:
我刚刚找到按钮的答案,更改为白色。现在缺少的是状态栏变白。这就是我在上面的App Delegate方法中添加的内容。
UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UINavigationBar.classForCoder()]).tintColor = UIColor.whiteColor()
状态栏的任何建议?
答案 0 :(得分:1)
在AppDelegate中,您可以删除:
UIApplication.sharedApplication().statusBarHidden = true
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent`
接下来,将以下代码添加到ViewController:
extension UINavigationController {
public override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
public override func childViewControllerForStatusBarStyle() -> UIViewController? {
return nil
}
}
最后,进入您的Info.plist并设置:
View controller-based status bar appearance = YES
答案 1 :(得分:0)