MFMailComposeViewController в UIActivityViewController имеет синий оттенок по умолчанию

Я представляю контроллер активности, как показано ниже:

let vc = UIActivityViewController(activityItems: [SettingsProvider.shareUrl], applicationActivities: nil)
vc.modalTransitionStyle = .crossDissolve
vc.modalPresentationStyle = .overCurrentContext
self.present(vc, animated: true, completion: nil)

Кроме того, я установил глобальный цвет оттенка для панели навигации, цвет оттенка окна, используя свойство внешнего вида.

Когда я нажимаю приложение, такое как приложение для сообщений, контроллер принимает цвет оттенка приложения для кнопок панели, кроме MFMailViewController. Есть ли способ изменить цвет оттенка представленных приложений UIActivityController.

Изменение внешнего вида BarButton создаст проблему для моего приложения. Любые другие решения приветствуются.


person cgeek    schedule 14.12.2017    source источник


Ответы (2)


Я нашел решение, но не знаю, правильно ли это.

Написание расширения для MFMailComposeViewController спасло меня.

extension MFMailComposeViewController: MFMailComposeViewControllerDelegate {
    open override func viewDidLoad() {
        super.viewDidLoad()
        navigationBar.tintColor = UIColor.white
    }
}

MFMailComposeViewController, представленный через контроллер активности, будет соответствовать расширению, которое я написал. Таким образом, MFMailComposeViewController будет реагировать на переопределенный метод viewDidLoad().

person cgeek    schedule 13.04.2018

пожалуйста, попробуйте этот код для изменения цвета кнопки панели, я думаю, это поможет вам.

var navigationBarAppearace = UINavigationBar.appearance()
navigationBarAppearace.tintColor = uicolorFromHex(0xffffff)
navigationBarAppearace.barTintColor = uicolorFromHex(0x034517)

ИЛИ

пожалуйста, используйте этот код. Я использовал этот код в цели c.

MFMailComposeViewController* mailViewController = [[MFMailComposeViewController alloc] init];        
mailViewController.mailComposeDelegate = self;
[mailViewController setToRecipients:@[@"[email protected]"]];

[mailViewController.navigationBar setTintColor:[UIColor blackColor]];

[self presentViewController:mailViewController animated:YES completion:nil]; 
person Bhumesh Purohit    schedule 14.12.2017
comment
Я уже установил это в appDelegate. У меня проблема с представленным MFMailComposeViewController UIActivityViewController. - person cgeek; 14.12.2017
comment
Я пробовал это, но не работал. Столкнулся с той же проблемой. - person Vishal; 14.12.2017
comment
У меня есть обновление моего кода, пожалуйста, обратитесь. @cgeek - person Bhumesh Purohit; 14.12.2017
comment
Я представляю UIActivityViewController, с помощью которого я могу открывать несколько приложений, таких как почта или приложения для обмена сообщениями. У меня нет прямого доступа к почте. Ваш код используется для представления контроллера представления почты. - person cgeek; 14.12.2017
comment
Я нашел решение. Я разместил в разделе ответов. - person cgeek; 13.04.2018