Пользовательский фон/прозрачный фон на UIBarButtonItem?
Как достигается этот эффект? Фрагменты кода приветствуются.
Это можно увидеть в приложении Notes и других приложениях в App Store.
Кажется, что кнопки на навигационном контроллере прозрачны и показывают пользовательский фон контроллера навигации или что у них есть собственный фон, применяемый к ним. Любые идеи о том, как это достигается?
EDIT:
Вот пример из приложения iBooks для iPhone. Как вы можете видеть, не только UIButtons, но и сегментированный элемент управления имеют пользовательские фоны. Я думаю, что есть способ глобально установить прозрачность/фон для разных элементов интерфейса.
http://c0839932.cdn.cloudfiles.rackspacecloud.com/iBooks%201.1%20-%206.png
Ответы
Ответ 1
Если вы хотите иметь UIBarButtonItem
всюду в своем приложении, то вы можете сделать это в AppDelegate.m
и в вашем методе application:didFinishLaunchingWithOptions:
, вы можете написать
[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage alloc] init] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Это создаст пустое изображение, и оно установит для фона UIBarButtonItem
. С записью в AppDelegate
вы убедитесь, что везде, где вы используете UIBarButtonItem
, у него будет прозрачный фон, даже ваши кнопки назад.
Ответ 2
Я не думаю, что вы можете сделать его прозрачным, просто установив какое-то свойство (но я могу ошибаться).
Посмотрите документацию UIBarButtonItem. Существуют методы init
, которые будут использовать пользовательский вид или изображение и создать из него UIBarButtonItem
. Поэтому создайте представление или изображение с желаемым внешним видом и используйте его. Одна вещь, которую вы можете попробовать, - создать UIButton так, как вы хотите, чтобы он выглядел, а затем выполните [[UIBarButtonItem alloc] initWithCustomView:button];
Другое решение - отправить свойство tintColor
вашего UINavigationBar
на любой цвет, который вы хотите, и кнопка примет этот цвет.
Ответ 3
Вы также можете создать стандартный UIButton
и установить его стиль в качестве пользовательского и настроить свой цвет изображения или фона для этой кнопки и перетащить его на UINavigationBar
.
Ответ 4
Вы также можете использовать прокси-сервер 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?), поэтому, если у вас возникли проблемы, попробуйте изменить вставки, поскольку вы, возможно, наткнулись на эту ошибку.