Как вы нацеливаетесь на определенные UIViews при оформлении его UIAppearance? - PullRequest
3 голосов
/ 03 апреля 2012

Я устанавливаю глобальные стили в iOS 5 с помощью UIAppearance . Вот пример:

[[UIbarButtonItem appearance]
    setTtitletextAttributes:someStyle
    forState:UIControlStateNormal
];

В большинстве случаев выглядит хорошо:

enter image description here

Но есть случаи, когда глобальный стиль выглядит некрасиво, как в проигрывателе фильмов.

enter image description here

Для проигрывателя фильмов я бы предпочел иметь синюю кнопку по умолчанию. Так как бы я нацелился только на внешний вид кнопки «Назад», а не на готовую кнопку? У меня похожие проблемы с таргетингом на обычные ячейки таблицы и сгруппированные ячейки таблицы.

Ответы [ 3 ]

6 голосов
/ 03 апреля 2012

Вам необходимо использовать пользовательский подкласс UINavigationBar.Давайте назовем это MyNavigationBar.Затем вы можете сделать это:

[[UIBarButtonItem appearanceWhenContainedIn:[MyNavigationBar class], nil]
    setTintColor:[UIColor redColor]];

, и это повлияет только на кнопки на панели навигации, а не на панель навигации MPMoviePlayerController.

Проблема, конечно, заключается в том, чтоUINavigationController всегда использует базовый UINavigationBar ..., если вы создаете его в коде.Но если вы создаете его в перо, вы можете щелкнуть его панель навигации (в структуре документа кончика) и изменить класс панели в Инспекторе удостоверений.

4 голосов
/ 19 октября 2012

Если в вашем AppDelegate вы просто замените

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navback"]
                                   forBarMetrics:UIBarMetricsDefault];

с

[[UINavigationBar appearanceWhenContainedIn:[UINavigationController class], nil]
 setBackgroundImage:[UIImage imageNamed:@"navback"] forBarMetrics:UIBarMetricsDefault];

Видеоплеер будет иметь правильную черную полосу в полноэкранном режиме. Работает в iOS 5 и iOS 6

0 голосов
/ 03 апреля 2012

Вы можете изменить прокси-сервер так, чтобы он предназначался только для определенных иерархий представлений.Другими словами, когда представление, которое вы хотите настроить, содержится в определенном представлении, вы можете изменить его внешний вид иначе, чем остальные.Поэтому сначала установите свой глобальный (белый) стиль, а затем вызовите следующий метод, чтобы настроить внешний вид, когда кнопка появляется в MPMoviePlayerController или в любом другом месте.

[[UIBarButtonItem appearanceWhenContainedIn: 
      [MPMoviePlayerController class], nil] 
      setTitletextAttributes:someStyle
      forState:UIControlStateNormal];

Дайте мне знать, если это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...