2014-01-30 3 views
2

Я нахожусь в проекте, где мне нужно создать как пользовательские UINavigationBar, так и UITabBar. Моя проблема заключается в цвете элементов (цвет оттенка!). Мне не нужен цвет оттенков для моих предметов. Я попытался поместить его в прозрачный цвет, но это только заставляет его исчезнуть (становится прозрачным).Пользовательский iOS UINavigationBar/UITabBar и удаление цветов оттенка

Итак, чтобы повторить, у меня есть свои собственные изображения для моих элементов бара, и каждый из них содержит свои собственные цвета. Я прочитал, что для того, чтобы делать то, что я хочу сделать, я должен подклассифицировать свои UIBar, но у меня больше нет информации. Что мне следует изменить в моем подклассе, чтобы избавиться от этого ограничения цвета оттенка? Спасибо.

EDIT: Цвет оттенка не применяется к изделию, но к стержню (так что все предметы). Поэтому моя проблема заключается в том, что я хочу, чтобы для моих предметов были конкретные цвета.

EDIT 2: Хорошо, я думаю, что понял! Решение состоит в том, чтобы использовать UIBarButtonItem метод: initWithCustomView:

UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
backBtn.bounds = CGRectMake(0, 0, 26, 26); 
[backBtn setImage:[UIImage imageNamed:@"BackBtn.png"] forState:UIControlStateNormal]; 
[backBtn addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:backBtn]; 
self.navigationItem.leftBarButtonItem = item; 

Но это работает только для UINavigationBar, потому что он принимает UIBarButtonItem. UITabBar, с другой стороны, принимает только UITabBarItem, который не соответствует initWithCustomView. Так что я все еще в рассоле там ...

+0

Я не понимаю, не является ли удаление цвета таким же, как прозрачным? Вы могли бы попробовать whiteColor? – Woodstock

+1

Отсутствие прозрачности означает, что цвет оттенка будет прозрачным, и поэтому содержимое (линии), образующие изображение, станет прозрачным. Другими словами, изображение станет прозрачным (так что ничего не появится, хотя изображение будет там) – Plot

ответ

3

Хорошо, думаю, я понял! Решение состоит в том, чтобы использовать UIBarButtonItem метод: initWithCustomView:

UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
backBtn.bounds = CGRectMake(0, 0, 26, 26); 
[backBtn setImage:[UIImage imageNamed:@"BackBtn.png"] forState:UIControlStateNormal]; 
[backBtn addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:backBtn]; 
self.navigationItem.leftBarButtonItem = item; 

Но это работает только для UINavigationBar, потому что он принимает UIBarButtonItem. UITabBar, с другой стороны, принимает только UITabBarItem, который не соответствует initWithCustomView. Так что я до сих пор в рассоле там ...

3

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

Ответ использовать этот метод UITabBarItem(title:, image:, selectedImage:)

с изображением включения режима всегда оригинального рендеринга

image.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

Надежда, что помогает!

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