Я создал простую настраиваемую панель вкладок, установив изображения каждого элемента следующим образом:
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 пикселя, но я думаю, что мне нужно как-то изменить высоту панели вкладок.
Ответ 1 · рейтинг 2 · DTs
Сам tabBar имеет размер 49 пикселей и отображается черным цветом за вашими изображениями (возможно, в [UITabBar layoutSubviews]). Затем ваши изображения отображаются сверху. Причина смещения заключается в том, что изображения, которые вы предоставляете, слишком велики, UITabBar ожидает значки размером 30x30 пикселей, а не изображение всего UITabBarItem.
Вот несколько вещей, которые можно попробовать:
- Укажите только значок размером 30x30 пикселей вместо всей кнопки вкладки.
- После того, как вы установили свои изображения на элемент вкладки, попробуйте следующее:
[item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)]; // play with insets until it renders correctly
- Подкласс 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)];