gpt4 book ai didi

ios7 - 去除MFMailComposeViewController的UINavigationBar的半透明效果

转载 作者:行者123 更新时间:2023-12-04 01:14:39 27 4
gpt4 key购买 nike

我没有找到将半透明效果(iOS 7)移除到 MFMailComposeViewController 的 UINavigationBar 的方法。我的应用程序中的所有其他 UINavigationBar 都没有问题。

我试过这个没有成功:

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] 之类的东西;它会崩溃,因为代理不支持此属性.

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

现在,要将 MFMailComposeViewController 的导航栏设置为非半透明,您需要更改其背景颜色(这是一个 UIView 允许的属性,UINavigationBar 是 UIView 的子类):
[[UINavigationBar appearance] setBackgroundColor:[UIColor whiteColor]];

确保在实例化 MFMailComposeViewController 之前执行此操作,例如:
[[UINavigationBar appearance] setBackgroundColor:[UIColor whiteColor]];
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];

您还可以使用 AppearanceWhenContainedIn:MFMailComposeViewController,仅当导航栏由 MFMailComposeViewController 拥有时才影响导航栏,或者您可以选择将其更改回之前在 mailComposeController:didFinishWithResult 中的任何内容。

关于ios7 - 去除MFMailComposeViewController的UINavigationBar的半透明效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19152340/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com