2012-03-08 3 views
1

Я пытаюсь установить tintColor из UIBarButtonItem в методе, который вызывается при запуске моей программы. Я настраивал все свои взгляды с помощью раскадровки. Затем я настраиваю внешний вид представлений с помощью новых руководств iOS5 для использования внешних прокси. Я настроен на фоне навигационной панели, выполнив следующие действия:Почему эта черная кнопка не понятна?

- (void)customizeAppearance 
{ 
    UIImage *leatherTexture = [[UIImage imageNamed:@"[email protected]"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 

    [[UINavigationBar appearance] setBackgroundImage:leatherTexture 
             forBarMetrics:UIBarMetricsDefault]; 
    [[UINavigationBar appearance] setBackgroundImage:leatherTexture 
             forBarMetrics:UIBarMetricsLandscapePhone]; 

    [[UIBarButtonItem appearance] setTintColor:[UIColor clearColor]]; 
} 

Я надеялся, что, установив UIBarButtonItemtintColor очистить позволит мне легко использовать стили кнопок по умолчанию, имея пользовательские текстуры фона. Однако установка tintColor для очистки просто превращает кнопку в черный цвет, а не прозрачную или прозрачную. Любые идеи, что я делаю неправильно? Есть ли способ создать четкую кнопку без использования пользовательских изображений для кнопок? Смотрите рисунок ниже:

bar

+0

посмотреть http://stackoverflow.com/questions/9138490/make-a-cleartransluscent-uibarbutttonitem-ios-5 –

+0

Anil - извините, я должен был упомянуть, что я использую раскадровки для настройки всех видов. Я добавлю его в сообщение. В любом случае у искателя есть такое же расстройство, как и я. Конечно, это можно сделать, используя пользовательские изображения с четкими кнопками, но было бы лучше, если бы это можно было сделать без необходимости создания пользовательских изображений. Поэтому я думаю, что это действительно мой вопрос - можно ли это сделать с помощью раскадровки и не использовать пользовательские изображения? –

+0

Тонированное управление не наследует альфа-значение цвета тонирования. –

ответ

1

Вы не можете сделать так (потому что IMO фон по умолчанию UIBarButtonItem черный и новый цвет оттенок над-слоистые на нем.).

Тем не менее вы можете настроить свой UIBarButtonItem с помощью UIButton (with background) как customView в UIBarButtonItem.

Или, если вы ориентируетесь IOS 5 только вы можете использовать коричневый оттенок цвета (который будет плоской и не будет отображаться фоновое изображение)

+0

Adil - это может работать, и я видел решения, подобные ему, но это не идеально, потому что вы создаете пользовательский UIBarButtonItem для каждого контроллера вида, который его использует. Идея прокси-сервера внешнего вида заключается в том, что вы определяете стиль один раз и применяете его ко всем контроллерам представлений. Вы знаете способ сделать то, что вы предлагаете, используя внешние прокси? –

+0

Вы можете посмотреть [этот пост] (http://stackoverflow.com/a/3095534/593709) и [этот пост также] (http://stackoverflow.com/q/3081203/593709) –

+1

Просто чтобы добавьте к этому ответу, если кто-нибудь еще прочитает это в будущем: после игры с различными методами подход, который Адил выделил, абсолютно прав. К сожалению, чтобы иметь «прозрачную кнопку», которая показывает задний фон, вам нужно использовать пользовательский образ и метод, который сказал Адил. Спасибо Адилю! –

1

Только что узнал, что в Xcode 4.5 вы можете просто перетащить UIButton в UIBarButton в Раскадке. UIButton затем полностью настраивается.

Смежные вопросы