我没有找到将半透明效果(iOS 7)删除到MFMailComposeViewController的UINavigationBar的方法。我的应用程序中的所有其他UINavigationBars都没有问题。
我尝试了这个但没有成功:
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
mailController.navigationBar.translucent = NO;
任何想法 ?
最佳答案
有点晚了,但是对于发现这篇文章的人来说:
默认情况下,MFMailComposeViewController的navigationBar将是半透明的,您不能更改它。唯一可以更改的属性是外观代理支持的属性。从Apple文档中:
这使您只能更改有限的选项来更改MFMailComposeViewController的导航栏外观,因为并非所有属性都受支持(例如,如果尝试使用[UINavigationBar外观] setTranslucent:NO]之类的方法,则会崩溃,因为代理不支持此属性。 。
这是外观代理支持的属性的列表:https://gist.github.com/mattt/5135521
现在,要将MFMailComposeViewController的navigationBar设置为非半透明,您需要更改其backgroundColor(这是允许的UIView属性,UINavigationBar是UIView的子类):
[[UINavigationBar appearance] setBackgroundColor:[UIColor whiteColor]];
实例化MFMailComposeViewController之前,请确保已执行此操作,例如:
[[UINavigationBar appearance] setBackgroundColor:[UIColor whiteColor]];
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
您也可以使用appearanceWhenContainedIn:MFMailComposeViewController来影响navBar,仅当它由MFMailComposeViewController拥有时,或者可以有选择地将其更改回mailComposeController:didFinishWithResult中的任何内容。
关于ios7 - 删除对MFMailComposeViewController的UINavigationBar的半透明效果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19152340/