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

Ориентация вертикального выравнивания панели вкладок iOS 5

Я получаю странное поведение с моей настраиваемой панелью вкладок. Изображения, кажется, выровнены неправильно. Вот скриншот (я выделил свой собственный фон панели вкладок, чтобы выделить мою проблему):

screenshot

Вот код, который я использую для установки изображений для каждого состояния:

self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:homeNavController, whatsOnNavController, mapNavController, infoNavController, nil];
self.tabBarController.delegate = self;

// For iOS 5 only - custom tabs
if ([self.tabBarController.tabBar respondsToSelector:@selector(selectedImageTintColor)]) 
{

    // Set the background images
    //[[UITabBar appearance] setBackgroundImage: [UIImage imageNamed:@"nav_bg.png"]];
    [[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"nav_over.png"]];

    [homeNavController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"nav_home_over"] withFinishedUnselectedImage:[UIImage imageNamed:@"nav_home"]];
    [whatsOnNavController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"nav_whats_on_over"] withFinishedUnselectedImage:[UIImage imageNamed:@"nav_whats_on"]];
    [mapNavController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"nav_map_over"] withFinishedUnselectedImage:[UIImage imageNamed:@"nav_map"]];
    [infoNavController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"nav_info_over"] withFinishedUnselectedImage:[UIImage imageNamed:@"nav_info"]];

}

Все мои изображения сменных вкладок имеют правильный размер (49 пикселей в высоту и 80 пикселей в ширину для версий без сетчатки).

Что может вызвать это странное поведение?

--- Обновить ---

Вот обновленный снимок экрана с фоном на месте:

screenshot 2

4b9b3361

Ответ 1

Оказывается, вы всегда должны иметь текст внутри tabitem. Пространство было создано пустым текстом.

Ответ 2

В UIBarItem есть свойство (элемент UIBarButton наследуется от этого класса) imageInsets.

Чтобы использовать полноразмерные изображения (49 пикселей) для finishedSelectedImage и finishedUnselectedImage, вам нужно установить эти вставки изображения:

tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);

Ответ 3

Теперь вы можете исправить это в Storyboard. Коррекция вставки изображения раскадровки Storyboard Size Inspector for Tab Bar Item

Выберите элемент панели вкладок, который вы хотите настроить, откройте "Инспектор размеров" и отредактируйте вставки верхнего и нижнего изображений. Вам нужно настроить их на одну и ту же сумму, иначе они будут просто хлюпать/растягивать изображение (так что +5 в верхней части и -5 в нижней части)

Ответ 4

Это может показаться немного хакерским, но я считаю, что это единственный способ добиться того, чего вы хотите: вам просто нужно использовать готовые изображения с вкладками, которые имеют прозрачную 11-дюймовую "верхнюю прокладку" (22 пикселя для сетчатки). Затем ваши изображения должны быть высотой 60 пикселей (120 пикселей).

Мое приложение подключилось к App Store с помощью этой техники, поэтому вы должны быть в безопасности, чтобы использовать его.

Надеюсь, что это поможет!

Ответ 5

Этот API действительно плохо документирован.

Ваш finishedSelectedImage должен быть значком ~ 30x30 px. Это только значок на вкладке. Если вы создадите слишком высокий уровень finishedSelectedImage, система не поместит его в нижней части экрана.

Понятно, что вы начинаете с полной ширины, 49px high backgroundImage для tabBar, добавляете ширину одной табуляции, высоту 49px selectionIndicatorImage, которая работает как фоновое изображение для выбранной вкладки, а затем добавляет два версии каждого значка табуляции ~ 30x30 px, finishedUnselectedImage и finishedSelectedImage.

Ответ 6

Если вы добавите изображение в качестве подвью, а не с определенными фреймами, может помочь вам.  Проверьте это

Попробуйте использовать немного более мелкие изображения, табуляция слегка сглаживает их