ios7 – 删除MFMailComposeViewController的UINavigationBar的半透明效果

我没有找到去除MFMailComposeViewController的UINavigationBar的半透明效果(iOS 7)的方法.在我的应用程序中的所有其他UINavigationBars没有问题.

我没有成功尝试过:

MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
mailController.navigationBar.translucent = NO;

任何想法 ?

解决方法

有点迟了,但是对于谁遇到这个帖子:

默认情况下,MFMailComposeViewController的导航栏将是半透明的,您无法更改.您可以更改的唯一属性是外观代理支持的属性.从苹果文档:

The view hierarchy of this class is private and you must not modify
it. You can,however,customize the appearance of an instance by using
the UIAppearance protocol.

这会让您有限的选项来更改您的MFMailComposeViewController的导航栏外观,因为并不是所有的属性都被支持(例如,如果你尝试像[UINavigationBar外观] setTranslucent:NO];它会崩溃,因为该属性不被代理支持.

以下是Appearance代理支持的属性列表:https://gist.github.com/mattt/5135521

现在,要将MFMailComposeViewController的导航栏设置为非半透明,您需要更改其backgroundColor(它是一个UIView允许的属性,UINavigationBar是UIView的子类):

[[UINavigationBar appearance] setBackgroundColor:[UIColor whiteColor]];

在您实例化MFMailComposeViewController之前,请确保执行此操作,例如:

[[UINavigationBar appearance] setBackgroundColor:[UIColor whiteColor]];
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];

您也可以使用外观WConContainedIn:MFMailComposeViewController,仅当它由MFMailComposeViewController拥有时影响navBar,或者您可以选择将其更改回任何以前在mailComposeController中执行的操作:didFinishWithResult.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...