Я нашел 2 способа решить эту проблему.
Вот скриншот результата следующих решений:
Первое решение
UIMenuController не содержится в иерархии представлений View Controller. Таким образом, вы можете определить свой цвет UIButton таким образом (вместо установки глобального внешнего вида кнопки):
Свифт:
UIButton.appearanceWhenContainedInInstancesOfClasses([UIViewController.self]).setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)
Цель-C:
[[UIButton appearanceWhenContainedInInstancesOfClasses:@[UIViewController.class]] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
Это решение работает в большинстве случаев. Но если вы воспользуетесь кнопкой удаления или кнопкой действий в ячейках табличного представления, они также примут заданный цвет, и вы не сможете изменить этот цвет< /strong> через внешний прокси.
Второе решение (мое предпочтительное)
Во втором решении напрямую используется имя класса private UIButton, используемое Apple в контроллере меню. Я бы никогда не рекомендовал получать доступ к частному классу Apple (и, кроме того, через его имя), но в этом конкретном случае настройки цвета контроллера меню я думаю, что это лучшее решение. Это позволяет вам определить чистый способ отображения вашего представления.
Свифт:
Определите внешний вид цвета заголовка вашей глобальной кнопки:
UIButton.appearance().setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)
Конкретное исключение для MenuController :
(NSClassFromString("UICalloutBarButton")! as! UIButton.Type).appearance().setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
Цель-C:
Определите внешний вид глобального цвета заголовка кнопки:
[[UIButton appearance] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
Конкретное исключение для MenuController:
[[NSClassFromString(@"UICalloutBarButton") appearance] setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
person
Tanguy G.
schedule
25.02.2016