3

Я в настоящее время использую механизм определения селектора (UIStatusBarStyle)preferredStatusBarStyle на UINavigationController подклассов контролировать появление в строке состояния в модальне представленных просмотров (возвращающееся UIStatusBarStyleLightContent) IOS 7. С экземпляром MFMailComposeViewController я никак не могу повлиять на внешний вид строки состояния.Невозможно изменить UIStatusBarStyle на MFMailComposeViewController

Похоже, вопрос в том, что вид сверху MFMailComposeViewController (который является UINavigationController подкласс) является MFMailComposeInternalViewController, который является приватным и не имеющих документов, и похоже на то, что я не должен быть баловаться с. Попытка подкласса или создания его категории генерирует ошибки компилятора. Это preferredStatusBarStyle is UIStatusBarStyleDefault, где я хочу, чтобы это было UIStatusBarStyleLightContent.

Другие ответы предложили установить значение plist для «Просмотр состояния панели управления на основе контроллера» на NO, но я не могу сделать это, не затрагивая другие части моего приложения. Есть ли способ изменить внешний вид этой строки состояния?

+0

Я не думаю, что вам разрешено связываться с MFMailComposerViewController или MessageComposerViewController, потому что они являются собственностью компании Apple, или «собственностью» I должен сказать. – user2277872

+0

У меня такая же проблема. Когда-нибудь найти обходной путь? – Stephen

ответ

2

MFMailComposeViewController, так как iOS6, на самом деле не является реальным контроллером представления, или, скорее, он не содержит истинную иерархию представлений контроллера представления состава почты. Вместо этого он является прокси-сервером для контроллера удаленного вида, который полностью обрабатывается другим процессом, используя XPC.

Даже если вы переопределите или swizzle методы в классе MFMailComposeViewController, вы не сможете повлиять на его поведение. Это специально для Apple.

Более подробную информацию о пультах дистанционного управления и просмотра XPC здесь: http://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/

1

Добавление категории в MFMailComposeViewController (вместо MFMailComposeInternalViewController), чтобы обеспечить preferredStatusBarStyle работал для меня, и не генерировать любые ошибки компиляции или предупреждений.

Смотрите этот вопрос для оригинального ответа я ссылка:

MFMailComposeViewController in iOS 7 statusbar are black

+0

Это не работает для меня! – Yarlik

+0

Вы также включили UIViewControllerBasedStatusBarAppearance? Это является необходимым условием для этого. – lintmachine

+0

Если я включу эту строку статуса статуса, цвет шрифта станет черным для всех контроллеров в моем приложении. [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleLightContent]; прекращает работать. - (UIStatusBarStyle) preferredStatusBarStyle { возвращение UIStatusBarStyleLightContent; } тоже не поможет. – Yarlik

Смежные вопросы