导航栏按钮的自定义颜色和UIActivityViewController的StatusBar

时间:2016-01-09 23:50:10

标签: ios objective-c swift uinavigationbar uiactivityviewcontroller

我有一个样式为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()

状态栏的任何建议?

2 个答案:

答案 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)

要将状态栏更改为白色,请快速转到info.plist,然后按+进行编辑,如下所示:

enter image description here

然后,将此行添加到AppDelegate.swift

 // Changing the status bar's colour to white
 UIApplication.sharedApplication().statusBarStyle = .LightContent