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