Подтвердить что ты не робот

UITabBarItem setFinishedSelectedImage: устарел в iOS7

setFinishedSelectedImage:withFinishedUnselectedImage: устарел в iOS7. Apple рекомендует использовать сеттеры image и selectedImage вместо UIImageRenderingModeAlwaysOriginal. Я не могу найти пример использования UIImageRenderingModeAlwaysOriginal. Итак, вопрос очень прост: как установить изображения для UITabBarItem в iOS7?

4b9b3361

Ответ 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()
    }

}