Вопрос по ios, ios5, iphone – Вертикальное выравнивание изображения панели вкладок iOS 5

18

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

screenshot

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

<code>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"]];

}
</code>

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

Что может быть причиной этого странного поведения?

--- Update ---

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

screenshot 2

Ваш Ответ

6   ответов
-1

can help you out. Проверь это

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

Мне жаль, но я не понимаю, как это могло бы мне помочь - я просто нацеливаюсь на iOS 5.x здесь. boz
65

са)imageInsets.

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

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

Тем не менее, я могу нажать на дополнительное пространство, которое находится под опцией изображения карты, показанной в вопросе, а также на пространство над опцией карты после установки вставок изображения. Почему так?
Это сработало для меня, но только для невыбранных изображений. Выбранные изображения имеют черную линию вверху! Любая идея, кто-нибудь, пожалуйста?
Волшебный номер SIX =)
Работал как шарм. Хотя 5,0, -5,0 выглядели более выровненными по центру.
Ух ты отлично работает ....
3

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

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

2

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

Не могли бы вы уточнить, что вы подразумеваете под & quot; у вас всегда должен быть текст внутри табуляции & quot ;? На скриншоте выше кажется, что у вас уже есть текст в tabBarItem.title
Если текст нарисован как часть вашего изображения, и вы не хотите, чтобы над ним был дополнительный текст, просто установите строку с пробелом внутри: @ & quot; & quot ;, он будет работать, потому что он не является пустой строкой и не будет отображаться.
Этот текст был частью изображения, поэтому я попытался сделать заголовок просто пустой строкой. boz
23

ражения инспектора размера раскадровки Storyboard Size Inspector for Tab Bar Item

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

3

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

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

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

Это довольно умно - я попробую это в моем следующем приложении. Приложение, о котором я говорил в моем первоначальном вопросе, уже запущено. boz
Просто продолжайте добавлять дополнительную верхнюю прозрачную подложку к вашему изображению tabBar, и оно должно выравниваться по центру.

Похожие вопросы