Можно ли настроить цвет UIMenuController?

Цвет фона по умолчанию - черный. Как изменить цвет, аналогично tintColor для панелей навигации?


person James Skidmore    schedule 29.03.2011    source источник


Ответы (3)


Я почти уверен, что это невозможно. Вы можете что-то придумать, если разделите это на подклассы.

РЕДАКТИРОВАТЬ: Я взглянул на файл UIMenuController.h, и, похоже, нет очевидных способов изменить цвет. Это подкласс NSObject, если это вам поможет. Кроме того, если вы посмотрите, как люди создают подкласс UITabBarController, чтобы изменить его цвет, вы можете найти аналогичное решение.

person Community    schedule 29.03.2011
comment
Это синглтон, возвращающий только sharedMenuController, поэтому я не могу создать его подкласс. Спасибо за ответ! - person James Skidmore; 29.03.2011
comment
Это бесполезно, но вы можете использовать UIAppearance для изменения цвета фона UIButton. Оттуда теряются закругленные углы. Я думаю, что это можно изменить, если изменить слой, но я не вижу способа получить к нему доступ. - person JoePasq; 18.11.2014

Возможное решение для изменения цвета текста состоит в использовании прокси внешнего вида UIButton внутри UIMenuController. Дело в том, что он напрямую использует частный подкласс UIButton, используемый Apple в контроллере меню. Я бы никогда не рекомендовал получить доступ к частному классу Apple (и, более того, через его имя), но в этом конкретном случае настройки цвета Контроллера меню я думаю, что это лучшее решение. Это позволяет вам определить чистый способ внешнего вида вашего представления.

Swift

(NSClassFromString("UICalloutBarButton")! as! UIButton.Type).appearance().setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)

Цель-C

[[NSClassFromString(@"UICalloutBarButton") appearance] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
person Tanguy G.    schedule 25.02.2016
comment
Кто-нибудь когда-нибудь использовал это при прохождении обзора в App Store? - person shallowThought; 17.09.2018
comment
@shallowThought Да и прошло - person Tanguy G.; 23.09.2018

Вы можете установить цвет фона UIMenuController следующим образом:

Цель-C

[[NSClassFromString(@"UICalloutBarButton") appearance] setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.8]];

Убедитесь, что вы используете цвет с прозрачностью / альфа, иначе это вызовет ошибку.

person Rishabh Wadhwa    schedule 02.09.2019