我正在尝试更改 iOS7 中MFMailComposeViewController
的背景颜色,但我无法使其正常工作。
我正在使用以下剪辑:
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
if([picker.navigationBar respondsToSelector:@selector(barTintColor)]) {
// iOS7
picker.navigationBar.barTintColor = READER_NAVIGATION_BAR_BACKGROUND_COLOR;
// Set back button arrow color
[picker.navigationBar setTintColor:READER_NAVIGATION_BAR_BACK_BUTTON_ARROW_COLOR];
// Set Navigation Bar Title Color
[picker.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:READER_NAVIGATION_BAR_TITLE_NORMAL_FONT_COLOR forKey:UITextAttributeTextColor]];
// Set back button color
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:READER_NAVIGATION_BAR_BUTTONS_FONT_COLOR, UITextAttributeTextColor,nil] forState:UIControlStateNormal];
}
有人知道如何更改iOS7中MFMailComposeViewController
的bakcground颜色吗?
答案 0 :(得分:68)
这里的诀窍是调用'外观方法',例如
[UINavigationBar appearance].barTintColor = [UIColor whiteColor];
[UINavigationBar appearance].tintColor = [UIColor redColor];
在致电
之前[[MFMailComposeViewController alloc] init];
这样,配色方案将应用于邮件编辑器。
它可能会返回到mailComposeController:didFinishWithResult:
答案 1 :(得分:32)
试试这个。为我工作。
MFMailComposeViewController* myailViewController = [[MFMailComposeViewController alloc] init];
// set other attributes of mailcomposer here.
myMailViewController.mailComposeDelegate = self;
[myMailViewController.navigationBar setTintColor:[UIColor whiteColor]];
[self presentViewController:myMmailViewController animated:YES completion:nil];
答案 2 :(得分:17)
Swift 3解决方案:
extension MFMailComposeViewController {
override open func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
}
open override func viewDidLoad() {
super.viewDidLoad()
navigationBar.isTranslucent = false
navigationBar.isOpaque = false
navigationBar.barTintColor = UIColor.white
navigationBar.tintColor = UIColor.white
}
}
答案 3 :(得分:4)
对于iOS8:
NSDictionary *navbarTitleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor],UITextAttributeTextColor,
[UIColor blackColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(-1, 0)], UITextAttributeTextShadowOffset, nil];
[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];
或者
navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor yellowColor] forKey:UITextAttributeTextColor];
答案 4 :(得分:1)
试试这个,但BarTintColor只有一件事可用iOS7
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
默认情况下,此颜色为半透明,除非您将半透明属性设置为NO。
或尝试此链接会对您有所帮助
答案 5 :(得分:1)
尝试以下代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]];
[[UINavigationBar appearance] setBackgroundColor:[UIColor blackColor]];
// Your usual code follows here ......
答案 6 :(得分:1)
@ SoftDesigner的回答:
从iOS 9开始:
[UINavigationBar appearance].tintColor = yourFavoriteColor;
不适用于MFMailComposeViewController。
答案的其余部分(我使用过它),但据我所知,你仍然坚持使用Apple的导航栏按钮颜色。
希望这可以让别人感到焦虑。
答案 7 :(得分:0)
首先显示MFMailComposeViewController
然后更改其tintColor
[self presentViewController:emailDialog animated:TRUE completion:nil];
[[UINavigationBar appearance] setBackgroundImage:nil
forBarPosition:UIBarPositionTopAttached
barMetrics:UIBarMetricsDefault];
答案 8 :(得分:0)
我遇到了一个阻止我设置背景颜色的问题。结果我在其他地方设置了其他代码将背景图像设置为[UIImage new]。
以下代码修复了它:
[[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:nil];