iMessages更改文本颜色

时间:2014-06-03 16:14:00

标签: ios objective-c

我的应用程序通过UIActivityController显示iMessages ViewController。然而,标签的颜色都搞砸了(蓝色,因此它们几乎看不见)。我认为这是因为视图控制器正在使用我的应用程序的色调。见下文。

enter image description here

我该如何解决这个问题? 谢谢!

1 个答案:

答案 0 :(得分:0)

我遇到类似的事情,以模态方式呈现MFMailComposerViewController。尝试在呈现活动控制器时将应用的色调颜色外观设置为nil,然后在完成后返回到所需的应用色调。这是我对MFMailComposer所做的事情。您应该能够为您的活动控制器进行修改:

...
[[UINavigationBar appearance] setBarTintColor:nil];  // Set to default before presenting
MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init];
mailVC.mailComposeDelegate = self;
[self.navigationController presentViewController:mailVC animated:YES completion:nil];
...

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
    [[UINavigationBar appearance] setBarTintColor:MyAppsCustomColor];  // set it back when finished
    [self.navigationController dismissViewControllerAnimated:YES completion:nil];
}

修改
当我使用此解决方案时,它会更改在活动视图控制器中选择的呈现模式中的导航栏外观(消息,邮件等)。我在我的代理中将我的应用的导航栏外观设置为蓝色,然后在完成块中将其设置为蓝色。应用程序的导航栏保持蓝色,显示的消息/邮件模式显示为默认的浅灰色导航栏。

UIActivityViewController* avc =
[[UIActivityViewController alloc] initWithActivityItems:@[@""]
                                  applicationActivities:nil];
avc.completionHandler = ^(NSString *activityType, BOOL completed) {
    // ...
    dispatch_async(dispatch_get_main_queue(), ^{
        // Set tint color back to blue.
        // This block is executed whether the user finishes or cancels.
        [[UINavigationBar appearance] setBarTintColor:[UIColor blueColor]];
        [[self navigationController] setNeedsStatusBarAppearanceUpdate];
    });
};
[[UINavigationBar appearance] setBarTintColor:nil];
[self presentViewController:avc animated:YES completion:nil];