Я решил ту же самую проблему следующим образом:
Моя цель состояла в том, чтобы настроить панель вкладок, используя изображения, которые были отправлены дизайнером для меня.
Я вложил файлы .png для проекта, инициализировал соответствующие переменные типа UIImage * и использовал функцию UITabBarItem setFinishedSelectedImage: withFinishedUnselectedImage: чтобы установить изображения для активного / неактивного состояния UITabbarItem:
UIImage * left_active, *left_inactive, *center_active, *center_inactive, *right_active, *right_inactive;
left_active = [UIImage imageNamed:@"left_active_img"];
...
[self.leftTabBarItem setFinishedSelectedImage:left_active withFinishedUnselectedImage:left_inactive];
[self.centerTabBarItem setFinishedSelectedImage:center_active withFinishedUnselectedImage:center_inactive];
[self.rightTabBarItem setFinishedSelectedImage:right_active withFinishedUnselectedImage:right_inactive];
Но настроенные элементы tabbarItem были меньше, чем изображения дизайнера, и располагались в центре экрана один за другим:
2) Чтобы это исправить, я добавил ДОПОЛНИТЕЛЬНЫЕ UITABBARITEMS - в левом и правом углу исходных
3) были созданы соответствующие торговые точки для UITabBarItems:
.h-файл:
@property (nonatomic, retain) IBOutlet UITabBar * tabBar;
// THE INTIAL items
@property (nonatomic, retain) IBOutlet UITabBarItem * leftTabBarItem;
@property (nonatomic, retain) IBOutlet UITabBarItem * centerTabBarItem;
@property (nonatomic, retain) IBOutlet UITabBarItem * rightTabBarItem;
// THE ADDITIONAL items
@property (nonatomic, retain) IBOutlet UITabBarItem * left_1;
@property (nonatomic, retain) IBOutlet UITabBarItem * left_2;
@property (nonatomic, retain) IBOutlet UITabBarItem * center_1;
@property (nonatomic, retain) IBOutlet UITabBarItem * center_2;
@property (nonatomic, retain) IBOutlet UITabBarItem * right_1;
@property (nonatomic, retain) IBOutlet UITabBarItem * right_2;
затем прикрепил розетки к UITabBarItems в порядке, указанном ниже:
- left_1
- leftTabBarItem
- left_2
- center_1
- centerTabBarItem
- center_2
- right_1
- rightTabBarItem
- right_2
и ИСПРАВЛЕНО МЕТОД UITabbarDelegate в делегирующем классе для ТОЛЬКО переключения свеклы на видимые элементы
.m-файл:
#pragma mark - UITabbarDelegate
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
if (item == self.leftTabBarItem)
{
NSLog(@"0"); // first visible item selected
} else if (item == self.centerTabBarItem)
{
NSLog(@"1"); // second visible item selected
} else if (item == self.rightTabBarItem)
{
NSLog(@"2"); // third visible item selected
} else if (item == self.left_1){
[self.tabBar setSelectedItem: self.leftTabBarItem];
} else if (item == self.left_2){
[self.tabBar setSelectedItem: self.leftTabBarItem];
} else if (item == self.center_1){
[self.tabBar setSelectedItem: self.centerTabBarItem];
}else if (item == self.center_2){
[self.tabBar setSelectedItem: self.centerTabBarItem];
}else if (item == self.right_1){
[self.tabBar setSelectedItem: self.rightTabBarItem];
} else if (item == self.right_2){
[self.tabBar setSelectedItem: self.rightTabBarItem];
}
}
Теперь все выглядит и работает правильно.
Вы можете использовать те же шаги, чтобы настроить размер и промежутки между UITabBarItems, добавив дополнительные элементы и исправив методы делегата.