Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Установка высоты UITabBar

Автор вопроса: woutr_beОтветов: 3

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

UITabBar *tabBar = self.tabBarController.tabBar;
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
UITabBarItem *item2 = [tabBar.items objectAtIndex:2];

[item0 setFinishedSelectedImage:[UIImage imageNamed:@"activity_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"activity.png"]];
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"agenda_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"agenda.png"]];
[item2 setFinishedSelectedImage:[UIImage imageNamed:@"settings_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"settings.png"]];

Хотя это прекрасно работает, я заметил, что под моей панелью вкладок есть черное пустое пространство.

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

Мои изображения имеют высоту 44 пикселя, но я думаю, что мне нужно как-то изменить высоту панели вкладок.

iostabbar

Ответы

Ответ 1 · рейтинг 2 · DTs

Сам tabBar имеет размер 49 пикселей и отображается черным цветом за вашими изображениями (возможно, в [UITabBar layoutSubviews]). Затем ваши изображения отображаются сверху. Причина смещения заключается в том, что изображения, которые вы предоставляете, слишком велики, UITabBar ожидает значки размером 30x30 пикселей, а не изображение всего UITabBarItem.

Вот несколько вещей, которые можно попробовать:

  1. Укажите только значок размером 30x30 пикселей вместо всей кнопки вкладки.
  2. После того, как вы установили свои изображения на элемент вкладки, попробуйте следующее: [item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)]; // play with insets until it renders correctly
  3. Подкласс UITabBar и переопределите layoutSubviews, чтобы сначала вызвать super, а затем измените положение изображения по своему усмотрению. Не рекомендуется, это может сломаться в будущих версиях iOS.

Ответ 2 · rishi

Использовать -

tabBar.frame=CGRectMake(x,y,w,h);

Таким образом вы можете установить xCord, yCord, ширину и высоту.

Ответ 3 · MatthewK

Проверь это:

[self.tabBar setFrame:CGRectMake(self.tabBar.frame.origin.x, self.tabBar.frame.origin.y - 30, self.tabBar.frame.size.width, self.tabBar.frame.size.height + 30)];

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы