как удалить строку в UITabBar?

#ios #objective-c #uitabbar

#iOS #objective-c #uitabbar

Вопрос:

Помогите удалить строку в панели вкладок!

изображение

 `[[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];`  - NOT WORK
  

код:

 [[UITabBar appearance] setBarTintColor:[UIColor colorWithRed:54.0f/255.0f green:62.0f/255.0f blue:69.0f/255.0f alpha:1.0f]];
    [[UITabBar appearance] setTintColor:[UIColor whiteColor]];
    [[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];


    [[self.tabBar.items objectAtIndex:0] setFinishedSelectedImage:[UIImage imageNamed:@"barMap.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"barMapNo.png"]];

    [[self.tabBar.items objectAtIndex:2] setFinishedSelectedImage:[UIImage imageNamed:@"barNews.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"barNewsNo.png"]];

    [[self.tabBar.items objectAtIndex:1] setFinishedSelectedImage:[UIImage imageNamed:@"barNew.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"barNewNo.png"]];
  

Ответ №1:

Если вы пытаетесь удалить shadowImage , просто сделайте то же самое, что и вы, но назначьте его shadowImage вместо backgroundImage .

Комментарии:

1. Этого, но я обнаружил, что (начиная с iOS 7) использования [[UIImage alloc] init] недостаточно. Я рисую прозрачное изображение размером 1 пиксель с помощью CG и преобразую его в UIImage для использования.

2. @axiixc вы когда-нибудь пытались установить его на nil ? Прошло много времени с тех пор, как я возился с этим, и я помню, что в какой-то момент у меня появился один лайнер для работы.

3. не могу сказать, но моя интуиция заставила бы меня поверить, что это будет просто использовать внешний вид по умолчанию.

Ответ №2:

Похоже, что вы устанавливаете изображение на элемент панели вкладок (с рамкой по умолчанию), когда изображение больше рамки кнопки. Вам нужно заменить всю кнопку!

 UIImage *image = [UIImage imageNamed:@"image"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, image.size.width, image.size.height);
[button setImage:image forState:UIControlStateNormal];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button];
[tabBar setItems:@[ barButton, /* etc */ ]];
  

Ответ №3:

Попробуйте это,

 //Remove shadow image by assigning nil value.
[[UITabBar appearance] setShadowImage: nil];

// or 

// Assing UIImage instance without image reference
[[UITabBar appearance] setShadowImage: [[UIImage alloc] init]];
  

Вот руководство Apple для теневого изображения.

По умолчанию равно нулю. Когда значение не равно нулю, вместо теневого изображения по умолчанию отображается пользовательское теневое изображение. Для отображения пользовательской тени необходимо также задать пользовательское фоновое изображение с помощью -setBackgroundImage: (если используется фоновое изображение по умолчанию, будет использоваться изображение тени по умолчанию).