Ответ 1
UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar_bg.png"];
[[UITabBar appearance] setShadowImage:tabBarBackground];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
Apple добавила крошечную строку над tabBar в iOS 7, которая должна работать как тень или исчезать между tabBar и пользовательским интерфейсом
Так как я использую пользовательский tabBar, линия довольно раздражает. Как его удалить? Пожалуйста, скажите мне, что это возможно, иначе мне нужно перепроектировать все мое приложение lol....
/С уважением
* Изменить
Считайте мою проблему следующей строкой кода:
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar_bg.png"];
[[UITabBar appearance] setShadowImage:tabBarBackground];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
Этот код работает очень хорошо для меня (у меня на самом деле нет фонового изображения для панели вкладок):
[tab_main.tabBar setBackgroundImage:[[UIImage alloc] init]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
И я также использую этот код для добавления фрейма:
UIColor* color_green = UIColorFromRGB(0x348e5b);
tab_main.tabBar.layer.borderWidth = 0.50;
tab_main.tabBar.layer.borderColor = color_green.CGColor;
[[UITabBar appearance] setTintColor:color_green];
Надеюсь, что это поможет.
В iOS 8 верхнюю границу можно удалить, установив стиль панели вкладок в черный цвет в инспекторе.
Swift
Хорошее простое решение:
Запишите этот ниже код в свой собственный класс панели вкладок. Затем он скроет горизонтальную линию тени.
self.tabBar.setValue(true, forKey: "_hidesShadow")
Цель C
[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
self.tabBarController = [[UITabBarController alloc] init];
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"YOURIMAGE.png"]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
Я не вижу ничего в API UITabBar
для воздействия на этот разделитель, но если разделитель находится в UITabBar (подкласс UIView), я бы ожидал, что вы сможете вставить новый UIView с одним пикселем на наверху. Вам нужно будет захватить фрагмент изображения, который вы хотите отобразить, и нарисовать его в новом представлении. И я не уверен, что UITabBar каким-то образом предотвратит добавление подзапроса или предотвратит включение subview. Но это где я начну.
Добавьте следующий код в метод AppDelegate.m
didFinishLaunchingWithOptions:
if ([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0)
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
Это сработало для меня
UIImage* tabBarBackground = [UIImage new];
if(!OSVersionIsAtLeastiOS7())
{
tabBarBackground = [UIImage imageNamed:@"whitebg"];
}
[[UITabBar appearance] setShadowImage:tabBarBackground];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
Вы можете скрыть "разделительную линию" с помощью этого кода:
[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
[_tabBarController.tabBar setBackgroundImage:[UIImage imageNamed:@"tabtarsprnt"]]; //your custom image
[self.tabBarController.tabBar setClipsToBounds:YES];
этот код также решил мою проблему
В моем случае мне также нужно было установить другую тень, в конце концов, единственное, что работало при настройке настраиваемой тени, заключалось в том, чтобы добавить одноточечную высоту UIView 1 над панелью вкладок:
UIView *whiteLine = [[UIView alloc] initWithFrame:CGRectMake(0.0, -1.0, self.tabBar.frame.size.width, 1.0)];
whiteLine.backgroundColor = [UIColor whiteColor];
[self.tabBar addSubview:whiteLine];