Настройка выбранного изображения в панели вкладок контроллер с раскадровкой


Я использую раскадровку, и у меня есть контроллер панели вкладок с пятью вкладками. В раскадровке я могу установить изображение для элемента панели вкладок. Apple docs предлагает иметь два значка для каждого элемента панели вкладок - один для выбранного и один для невыбранного состояния.

Я не могу понять, как я могу сделать это с помощью раскадровки.

9 54

9 ответов:

вы можете использовать раскадровку, чтобы установить выбранное изображение панели вкладок. Я попробовал и это сработало для меня. Выберите UITabbarItem и добавьте атрибут времени выполнения "selectedImage", выберите тип как "изображение" и укажите имя вашего изображения в качестве его значения.

Setting selected image of Tabbar using storyboard

Я использую XCode 6.0, и моя минимальная цель развертывания-iOS 8.0.

вот полное решение для выбранного / невыбранного изображения в панели вкладок для XCode >= 8:

  • перейдите в раздел ресурсы изображений - > выберите изображение
  • выберите рендер как: "исходное изображение"

enter image description here

  • после этого перейдите в раскадровку - > выберите элемент таббара
  • в разделе инспекторы атрибутов установите "выбранное изображение" и "изображение", как показано на следующем скриншоте, это это:

enter image description here

Да, это не может быть сделано с помощью раскадровки - код должен быть написан.

на UINavigationViewController ' s viewDidLoad способ, мы можем написать следующий код -

UITabBar *tabBar = self.tabBar;

UITabBarItem *targetTabBarItem = [[tabbar items] objectAtIndex:0]; // whichever tab-item
UIImage *selectedIcon = [UIImage imageNamed:@"name-of-selected-image.png"];
[targetTabBarItem setSelectedImage:selectedIcon];

в XCode 8 и выше вы можете просто сделать это в Image assets,просто выберите изображение и выберите Render как "исходное изображение". (Пожалуйста, проверьте прилагаемое изображение)..Удачи:)enter image description here

теперь вы можете сделать это легко в раскадровке. На каждом tabviewcontroller, который у вас есть, он должен содержать элемент панели вкладок в иерархии (выглядит как маленькая синяя звезда), нажмите на это, и настройки справа должны выглядеть как изображение ниже. Заголовок и изображение панели вкладок можно изменить здесь.

enter image description here

Я думаю, что самый простой способ-установка изображения от инспектора. у вас есть поле под названием Bar Item - > Image, и это там, где вы должны указать имя изображения. Берегись, не путай с Элемент Панели Вкладок - > Выбранное Изображение

enter image description here

в новом Xcode 8 Вы можете сделать в раскадровке без необходимости определять атрибуты времени выполнения, как это предлагается в высокоточном ответе.

Print Screen Tab Bar item

Не забывайте, что изображение должно быть такого размера:

  • @1x: около 25 x 25
  • @2x: около 50 x 50
  • @3x: около 75 x 75

значок должен быть установлен в соответствующий вид контроллера. При этом вы можете изменить порядок контроллеров вида внутри раскадровки контроллер главной вкладки без необходимости изменять код (objectAtIndex:0) для каждого значка.

поместите следующую строку в viewDidLoad способ:

 if (self.navigationController.viewControllers.count < 2)
     self.navigationController.tabBarItem.selectedImage = [UIImage imageNamed:@"image-selected.png"];

The ifусловие гарантирует, что кнопка изменяется только для самого верхнего контроллера вида. Это необходимо при повторном использовании контроллеров представлений в иерархии навигации в качестве контроллеров подвидов.

SWIFT 3.0 --> Идеальный способ установить изображения кнопок панели вкладок выглядит следующим образом:

первый набор изображений, которые вы хотите использовать для кнопки :

    let homeImage = UIImage(named: "TabHome")
    let homeTappedImage = UIImage(named: "TabHomeRed")

затем установите кнопку типа UITabButtonItem:

    let homeButton = UITabBarItem(title: homeText, image: homeImage, selectedImage: homeTappedImage)

    //with this method you set the image when the button is not selected 
    homeButton.image = homeImage?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)


    //with this method you set the image when the button is selected 
    homeButton.selectedImage = homeTappedImage?.withRenderingMode(.alwaysOriginal)