Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 通过UIActivityViewController更改MFMailComposeViewController中的状态栏颜色_Ios_Swift_Uinavigationbar_Mfmailcomposeviewcontroller_Uiactivityviewcontroller - Fatal编程技术网

Ios 通过UIActivityViewController更改MFMailComposeViewController中的状态栏颜色

Ios 通过UIActivityViewController更改MFMailComposeViewController中的状态栏颜色,ios,swift,uinavigationbar,mfmailcomposeviewcontroller,uiactivityviewcontroller,Ios,Swift,Uinavigationbar,Mfmailcomposeviewcontroller,Uiactivityviewcontroller,我正在尝试更改导航栏按钮的颜色、导航栏的色调和文本颜色,但我似乎没有取得任何进展。MFMailComposeViewController是通过UIActivityViewController激活的,我尝试了一些以前行之有效的方法(但不是通过UIActivityViewController) 这是我当前的代码: UINavigationBar.my_appearanceWhenContainedIn(MFMailComposeViewController).barTintColor = U

我正在尝试更改导航栏按钮的颜色、导航栏的色调和文本颜色,但我似乎没有取得任何进展。
MFMailComposeViewController
是通过
UIActivityViewController
激活的,我尝试了一些以前行之有效的方法(但不是通过
UIActivityViewController

这是我当前的代码:

    UINavigationBar.my_appearanceWhenContainedIn(MFMailComposeViewController).barTintColor = UIColor.blackColor()
有人建议这样做。我也试过:

    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)
    })

转到应用程序代理文件,将以下行添加到didFinishLaunchingWithOptions:)它将更新所有视图控制器的状态栏颜色

UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
此外,在info.plist文件中添加一个名为“查看基于控制器的状态栏外观”的新键,并将该值设置为“否”

更新

要设置视图之间的不同样式,请尝试以下操作:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}

然后,您可以根据您试图实现的目标返回亮或暗:)

MFMailComposeViewController
设置您无权访问的自己的状态栏样式。你也许可以挖掘一些私人API来实现这一点,但你的应用肯定会被苹果拒绝


不过,作为补充说明,您不应该对苹果提供的UIViewController进行任何更改。它们之所以看起来如此,是因为它们是按照原始应用程序设计的。这意味着在应用程序中给用户一种位置感和方向感。苹果可能也会拒绝你的应用,因为你已经更改了他们的内容。

对于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];

您可以将
MFMailViewController
子类化,并覆盖其
viewwillbeen
方法

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

在应用程序中完成加载。这将为您的整个应用程序设置lightContent。

我有这个,但我需要视图控制器之间的状态栏样式不同。虽然可能是这样,我已经批准了许多其他应用程序,它们可以做完全相同的事情,因此我不太担心它被拒绝。如果它解决了您的问题,您能将此标记为正确答案吗?