setFinishedSelectedImage:withFinishedUnselectedImage:
устарел в iOS7. Apple рекомендует использовать сеттеры image
и selectedImage
вместо UIImageRenderingModeAlwaysOriginal
. Я не могу найти пример использования UIImageRenderingModeAlwaysOriginal
. Итак, вопрос очень прост: как установить изображения для UITabBarItem
в iOS7?
UITabBarItem setFinishedSelectedImage: устарел в iOS7
Ответ 1
Если вы пытаетесь добиться отображения фактического изображения в UITabBar, используйте следующий код.
[yourTabBarItem setImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
и если вы хотите отобразить изображение в исходном состоянии для выбранного, используйте следующие
[yourTabBarItem setSelectedImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
эти две альтернативы
setFinishedSelectedImage: withFinishedUnselectedImage:
Ответ 2
setFinishedSelectedImage
устарел, потому что Apple хочет направить интерфейсы на использование изображений шаблонов и выбранного вами цвета tintColor (или синий по умолчанию.) Таким образом, легкое умолчание делает элементы панели табуляции таким образом.
Если вам нужно по-прежнему использовать изображение значка, как было разработано, вы создаете изображение с режимом рендеринга для Always Original. Как:
[[UIImage imageNamed:@"YourIcon.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
Чтобы установить значок, вы должны получить tabBarItem
из ViewController
. То, что я пропустил в своем приложении, состояло в том, что на каждой из моих вкладок была NavigationController
упаковка контроллера верхнего уровня на вкладке. В большинстве ответов на эту тему не упоминается получение navigationContoller, и это было ключом к тому, чтобы заставить его работать в моем приложении.
Итак, в моем подклассе UITableViewContoller я добавил следующее для просмотраDidLoad.
- (void)viewDidLoad
{
[super viewDidLoad];
...
[self.navigationController.tabBarItem setSelectedImage:[[UIImage imageNamed:@"MySelectedIcon.png"]
imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]];
}
Результатом стал значок, созданный при выборе вкладки. Если вы оставите вызов метода imageWithRenderingMode, значок будет рассматриваться как шаблон, окрашенный в tintColor. Надеюсь, это поможет.
Ответ 3
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.backgroundImage = UIImage()
self.tabBar.shadowImage = UIImage()
}
}