我没有找到去除MFMailComposeViewController的UINavigationBar的半透明效果(iOS 7)的方法.在我的应用程序中的所有其他UINavigationBars没有问题.
@H_301_2@我没有成功尝试过:
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init]; mailController.navigationBar.translucent = NO;@H_301_2@任何想法 ?
解决方法
有点迟了,但是对于谁遇到这个帖子:
@H_301_2@默认情况下,MFMailComposeViewController的导航栏将是半透明的,您无法更改.您可以更改的唯一属性是外观代理支持的属性.从苹果文档:
@H_301_2@The view hierarchy of this class is private and you must not modify@H_301_2@这会让您有限的选项来更改您的MFMailComposeViewController的导航栏外观,因为并不是所有的属性都被支持(例如,如果你尝试像[UINavigationBar外观] setTranslucent:NO];它会崩溃,因为该属性不被代理支持. @H_301_2@以下是Appearance代理支持的属性列表:https://gist.github.com/mattt/5135521 @H_301_2@现在,要将MFMailComposeViewController的导航栏设置为非半透明,您需要更改其backgroundColor(它是一个UIView允许的属性,UINavigationBar是UIView的子类):
it. You can,however,customize the appearance of an instance by using
the UIAppearance protocol.
[[UINavigationBar appearance] setBackgroundColor:[UIColor whiteColor]];@H_301_2@在您实例化MFMailComposeViewController之前,请确保执行此操作,例如:
[[UINavigationBar appearance] setBackgroundColor:[UIColor whiteColor]]; MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];@H_301_2@您也可以使用外观WConContainedIn:MFMailComposeViewController,仅当它由MFMailComposeViewController拥有时影响navBar,或者您可以选择将其更改回任何以前在mailComposeController中执行的操作:didFinishWithResult.