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

Только изображение как UITabBarItem

Мне хотелось бы иметь значок как UITabBarItem, а не текст под ним, и мне было интересно, возможно ли это, если да, как? ТИА

4b9b3361

Ответ 1

Если вы используете панель рассказов, возможно, вы можете использовать Image Inset из инспектора размера элемента бара и одновременно задать пустое место:

enter image description here

Ответ 2

УДАЛИТЬ НАЗВАНИЕ

Простой способ с инспектором

  • Выберите свой TabbarItem
  • В Позиция заголовка изменится на Custom Offset
  • Установите значение по вертикали на 100
  • Готово

введите описание изображения здесь

Исправить IMAGE

Настройка изображения

  • Выберите свой TabbarItem
  • укажите Верх и Нижний

введите описание изображения здесь

Ответ 3

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

int offset = 7;
UIEdgeInsets imageInset = UIEdgeInsetsMake(offset, 0, -offset, 0);

После того, как вы установили изображение значка для TabBarItem, вы устанавливаете значение свойства для изменения положения изображения, делая:

uiViewController.tabBarItem.imageInsets = imageInset;

Ответ 4

Настройка заголовка элемента на нуль часто недостаточна, потому что если вы установите заголовок контроллера представления, он также установит заголовок элемента панели.

Вместо этого сделайте следующее:

tabbarItem.titlePositionAdjustment = UIOffsetMake(0.f, 50.f);

Ответ 5

Вы можете использовать это расширение Swift для определения нового метода tabBarItemShowingOnlyImage(), который вернет любой UITabBarItem, измененный для отображения только изображения:

// helper for creating an image-only UITabBarItem
extension UITabBarItem {
    func tabBarItemShowingOnlyImage() -> UITabBarItem {
        // offset to center
        self.imageInsets = UIEdgeInsets(top:6,left:0,bottom:-6,right:0)
        // displace to hide
        self.setTitlePositionAdjustment(UIOffset(horizontal:0,vertical:30000))
        return self
    }
}

Это расширение основывается на советах, предлагаемых в других комментариях.

Он скрывает заголовок, вытесняя его, а не устанавливая его на nil, потому что иногда другие объекты, такие как сам контроллер представления, будут устанавливать заголовок на некоторое значение после инициализации элемента панели табуляции. Он центрирует изображение, используя imageInsets, чтобы компенсировать его 6pt, значение, которое я получаю, только от глазного яблока на iPhone 6 под управлением iOS8.3.

Я полагаю, что для других устройств и конфигураций компоновки может потребоваться другая коррекция смещения, поэтому общее решение, вероятно, должно быть более сложным.

Ответ 6

Я знаю, что это было довольно давно. Но у меня может быть решение этой проблемы.

Ответ на

@ThiagoPires полезен, только если изображение достаточно велико, чтобы покрыть заголовок. В противном случае заголовок будет виден под изображением.

Я думаю, что самый простой способ добиться этого - установить заголовок tabBarItem в "" в вашем коде контроллера вида.

Важно знать, что каждый раз, когда вы меняете заголовок контроллера, заголовок tabbaritem также будет обновлен. Вы могли бы приглядеться, используя KVO, чтобы наблюдать за изменением названия и соответственно установить "" на заголовок tabbaritem. Но если вы не измените его во многих местах вашего кода, вы можете просто установить его прямо там, где вы меняете заголовок ViewController.

Вот пример в swift:

override func viewDidLoad() {

    super.viewDidLoad()

    self.title = "View controller Title"

    self.tabBarItem.title = ""
}

Что это. Надеюсь, я смогу помочь.

Ответ 7

Соответствующие документы (выделение моего):

initWithTitle: изображение: тег: Создает и возвращает новый элемент с использованием указанных свойств.

- (id)initWithTitle:(NSString *)title image:(UIImage *)image tag:(NSInteger)tag

Параметры

title: Заголовок элемента. Если nil, заголовок не отображается.

image: Изображение элементов. Если nil, изображение не отображается. Изображения, отображаемые на панели вкладок, взяты из этого изображения. Если это изображение слишком велико, чтобы поместиться на панели вкладок, оно обрезается, чтобы соответствовать. Размер изображения на вкладке обычно составляет 30 х 30 точек. Значения альфа в исходном изображении используются для создания невыбранных и выбранных изображений - непрозрачные значения игнорируются.

Тег

: тег приемников, целое число, которое вы можете использовать для идентификации объектов элемента бара в своем приложении.

Возвращаемое значение: новый инициализированный элемент с указанными свойствами.

Ответ 8

как это

UITabBarItem * personalBarItem = [[UITabBarItem alloc] init];
[personalBarItem setFinishedSelectedImage:[UIImage imageNamed:@"personal_click"] withFinishedUnselectedImage:[UIImage imageNamed:@"personal"]];

Ответ 9

Попробуйте использовать код ниже:

UIViewController *viewController1=[[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];
UIViewController *viewController2=[[SecondViewCtr alloc]initWithNibName:@"SecondViewCtr" bundle:nil];
UIViewController *viewController3=[[ThirdViewCtr alloc]initWithNibName:@"ThirdViewCtr" bundle:nil];
UIViewController *viewController4=[[FourthVIewCtr alloc]initWithNibName:@"FourthVIewCtr" bundle:nil];
UIViewController *viewController5=[[FIfthViewCtr alloc]initWithNibName:@"FIfthViewCtr" bundle:nil];


UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:viewController2];
UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:viewController3];
UINavigationController *nav4 = [[UINavigationController alloc] initWithRootViewController:viewController4];
UINavigationController *nav5 = [[UINavigationController alloc] initWithRootViewController:viewController5];
peekArray = [[NSMutableArray alloc] init];

self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2,nav3,nav4,nav5, nil];

UITabBar *tabBar = _tabBarController.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2];
UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3];
UITabBarItem *tabBarItem5 = [tabBar.items objectAtIndex:4];

[tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"home123.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"home_112.png"]];
[tabBarItem2 setFinishedSelectedImage:[UIImage imageNamed:@"gift123.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"gift_112.png"]];
[tabBarItem3 setFinishedSelectedImage:[UIImage imageNamed:@"cam12.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"cam_112.png"]];
[tabBarItem4 setFinishedSelectedImage:[UIImage imageNamed:@"message12.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"message_112.png"]];
[tabBarItem5 setFinishedSelectedImage:[UIImage imageNamed:@"people12.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"people_112.png"]];

[self.tabBarController setSelectedIndex:0];
self.window.rootViewController = self.tabBarController;