UITabbar Изображения и заголовок не выровнены по центру в iPad

Я работаю над приложением, которое использует Tabbarcontroller (есть две вкладки). На iphone все работает нормально, но на ipad обе вкладки находятся в центре экрана.

Я хочу показать заголовок и изображения в центре каждой вкладки (учитывая, что ширина вкладки составляет половину экрана)

При поиске я наткнулся на UIEdgeInsetsMake.

Отрегулируйте заголовок элемента панели вкладок iOS по центру но с этим не поможет.

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

Вот мой код appDelegete:

FirstViewController *firstVC = [[FirstViewController alloc] init];
UINavigationController *navController1 = [[UINavigationController alloc] initWithRootViewController:firstVC];
//navController1.title = @"First Tab";
navController1.tabBarItem.image = [UIImage imageNamed:@"first.png"];

SecondViewController *secondVC = [[SecondViewController alloc] init];
UINavigationController *navController2 = [[UINavigationController alloc] initWithRootViewController:secondVC];
navController2.title = @"Second Tab";
navController2.tabBarItem.image = [UIImage imageNamed:@"second.png"];

NSArray *array = [[NSArray alloc] initWithObjects:navController1,navController2, nil];
UITabBarController *tabBarController = [[UITabBarController alloc] init];
 tabBarController.tabBarItem.imageInsets = UIEdgeInsetsMake(0, -50, 0, 50);

tabBarController.viewControllers = array;

[self.window setRootViewController:tabBarController];

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;

Кто-нибудь может помочь?


person Poonam    schedule 24.05.2014    source источник


Ответы (2)


Со ссылкой на этот ответ я предложил бы вам сделать так

1 Получите ширину экрана и разделите ее на количество элементов панели вкладок, которые у вас есть

2 После деления назначьте среднее значение через setItemWidth к UITabBar

CGRect screenSize = [[UIScreen mainScreen] applicationFrame];
int count  = [array count];
float width  = screenSize.size.width/count;
[[UITabBar appearance] setItemWidth:width];
person Girish Nair    schedule 26.05.2014
comment
Обратите внимание, что это установит ширину всех панелей вкладок в приложении — обычно у вас будет только одна, но вы все равно можете ограничить настройку каждой панелью вкладок по отдельности (tabBarController.tabBar.itemWidth = ширина). - person SVD; 29.08.2014

Вы должны поместить этот код в viewWillLayoutSubviews вашего UITabBarController.

self.tabBar.itemPositioning = UITabBarItemPositioningFill;

Свифт 4, 5

self.tabBar.itemPositioning = .fill
person Earl0Grey    schedule 27.08.2016
comment
Потрясающе.. просто и легко… :) - person Jain_Taresh; 05.03.2018
comment
С последней быстрой версией логика ниже. self.tabBar.itemPositioning = .fill - person Ganesh; 29.07.2019