Ios iMessages更改文本颜色

Ios iMessages更改文本颜色,ios,objective-c,Ios,Objective C,我的应用程序正在通过UIActivityController显示iMessages ViewController。然而,标签的颜色都是乱七八糟的(蓝色的,所以几乎看不见)。我想这是因为视图控制器正在使用我的应用程序的色调。见下文 我怎样才能解决这个问题? 谢谢 我遇到了类似的情况,即以模式呈现MFMailComposerViewController。演示“活动控制器”时,请尝试将应用程序的着色颜色的外观设置为nil,然后在完成后返回到所需的应用程序着色。以下是我使用MFMailComposer

我的应用程序正在通过UIActivityController显示iMessages ViewController。然而,标签的颜色都是乱七八糟的(蓝色的,所以几乎看不见)。我想这是因为视图控制器正在使用我的应用程序的色调。见下文

我怎样才能解决这个问题?
谢谢

我遇到了类似的情况,即以模式呈现
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];

我使用UIActivityViewController演示它,因此我没有访问这些委托方法的权限。您的建议应该可以实现,但不幸的是,我无法访问这些方法,因为我没有直接演示Mail view控制器。它们由UIActivityController呈现。此链接包含有关活动视图以及如何处理不同操作的一般信息:我访问过该链接,它不包含任何与我的问题相关的内容。真的吗?“您将控制器的
completionHandler
设置为一个块,当用户与活动界面的交互结束时将调用该块。”也就是说,当用户完成其活动控制器时,使用类似于演示的完成块来执行代码。或者,如果他们取消:“如果您为
UIPopoverController
设置了一个委托,那么如果用户取消“是”,它将被发送
PopOvercontrollerdDismissPopOver:
。认真地仅当显示了显示的视图控制器并结束时,才会调用该块。当它出现的时候就不会了。因此,例如,如果我要将“染色颜色”设置为“零”,我就无法知道显示的视图控制器是否从未显示过(即,用户从UIActivityController中取消)。想想看。