Пользовательский фон / прозрачный фон на UIBarButtonItem? - PullRequest
11 голосов
/ 21 июня 2010

Как достигается этот эффект? Фрагменты кода приветствуются.

Это можно увидеть в приложении Notes и других приложениях в App Store.

Кажется, что либо кнопки на навигационном контроллере прозрачны и показывают пользовательский фон навигационного контроллера, либо к ним применен собственный фон. Любые идеи о том, как это достигается?

EDIT:

Вот пример из приложения iBooks для iPhone. Как видите, пользовательские фоны имеют не только кнопки UIB, но и сегментированный элемент управления. Я думаю, что есть способ глобально установить прозрачность / фон для различных элементов интерфейса.

example http://c0839932.cdn.cloudfiles.rackspacecloud.com/iBooks%201.1%20-%206.png

Ответы [ 4 ]

13 голосов
/ 22 марта 2013

Если вы хотите, чтобы UIBarButtonItem везде в вашем приложении, вы можете использовать AppDelegate.m и метод application:didFinishLaunchingWithOptions:, вы можете написать

[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage alloc] init] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

Это создаст пустое изображение, и оно установит фон UIBarButtonItem для этого изображения. С записью в AppDelegate вы будете уверены, что везде, где вы используете UIBarButtonitem, будет прозрачный фон, даже ваши кнопки назад.

4 голосов
/ 21 июня 2010

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

Посмотрите документацию UIBarButtonItem . Существуют init методы, которые принимают пользовательский вид или изображение и создают из него UIBarButtonItem. Поэтому создайте вид или изображение с нужным вам внешним видом и используйте его. Одна вещь, которую вы можете попробовать - создать UIButton так, как вы хотите, чтобы он выглядел, а затем выполнить [[UIBarButtonItem alloc] initWithCustomView:button];

.

Другое решение - отправить свойство tintColor вашего UINavigationBar в любой цвет, который вы хотите, и кнопка примет этот цвет.

3 голосов
/ 21 июня 2010

Вы также можете создать стандарт UIButton и установить его стиль на пользовательский, установить изображение или цвет фона для этой кнопки и перетащить его на UINavigationBar.

1 голос
/ 03 января 2013

Вы также можете использовать прокси-сервер Appearance, чтобы установить свойство backgroundImage UIBarButtonItems для вашего собственного прозрачного изображения:

UIImage *buttonImage = [[UIImage imageNamed:@"barButton"]  resizableImageWithCapInsets:UIEdgeInsetsMake(12, 8, 12, 8)];
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackButtonBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

Обратите внимание, что при установке вкладышей на определенные значения (11?13?) Поэтому, если у вас возникли проблемы, попробуйте заменить вставки, как вы, возможно, наткнулись на эту ошибку.

...