Ответ 1
Попробуйте установить прозрачное теневое изображение размером 1x1 пиксель для UITabBar:
[[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparentShadow.png"]];
Я реализовал пользовательский UITabBar, и у меня все еще есть этот градиент/тень поверх него. Я добавил
[self.tabBar setBackgroundImage:[UIImage imageNamed:@"navBarBottom.png"]];
который просто меняет фон, но сохраняет градиент тени.
Что я делаю неправильно? Можно ли что-то указать, чтобы избавиться от него?
Что у меня:
Что я хочу:
Спасибо.
Попробуйте установить прозрачное теневое изображение размером 1x1 пиксель для UITabBar:
[[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparentShadow.png"]];
Similary в ответ на этот вопрос... если вы не хотите связываться с каким-либо прозрачным изображением 1x1, эта работа тоже:
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
В быстрой:
UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
Swift
Попробуйте это для своей панели вкладок. Он будет скрывать горизонтальную линию тени.
self.tabBar.setValue(true, forKey: "_hidesShadow")
Цель C
[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
Swift 4
UITabBar.appearance().layer.borderWidth = 0.0
UITabBar.appearance().clipsToBounds = true
Вызов [[UITabBar appearance] setShadowImage:]
будет настраивать все экземпляры UITabBar
в вашем приложении.
Если вы хотите настроить только один UITTabBar
, вы можете сделать это:
[self.tabBarController.navigationController.navigationBar setShadowImage:[UIImage new]];
Вот еще один простой в реализации ответ:
[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
работал на меня.
Просто установите изображение, оно не удалит теневую линию, вы должны установить его borderWidth на 0. Вот код
[[Внешний вид UITabBar] setShadowImage: [UIImage new]];
[UITabBar внешний вид].layer.borderWidth = 0.0f;
[UITabBar появление].clipsToBounds = true;
Этот код работает как для iOS 13, так и ниже
if #available(iOS 13, *) {
let appearance = self.tabBar.standardAppearance.copy()
appearance.backgroundImage = UIImage()
appearance.shadowImage = UIImage()
appearance.shadowColor = .clear
self.tabBar.standardAppearance = appearance
} else {
self.tabBar.backgroundImage = UIImage()
self.tabBar.shadowImage = UIImage()
}
Поместите это в свой AppDelegate в doneFinishLaunchingWithOptions:
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];
Попробуйте это, ** Objective-C **
//Remove shadow image by assigning nil value.
[[UITabBar appearance] setShadowImage: nil];
// or
// Assing UIImage instance without image reference
[[UITabBar appearance] setShadowImage: [[UIImage alloc] init]];
** Swift **
//Remove shadow image by assigning nil value.
UITabBar.appearance().shadowImage = nil
// or
// Assing UIImage instance without image reference
UITabBar.appearance().shadowImage = UIImage()
Вот яблочный ориентир для shadowImage.
@available(iOS 6.0, *)
open var shadowImage: UIImage?
Значение по умолчанию равно нулю. Когда не-nil, вместо теневого изображения вместо теневое изображение по умолчанию. Чтобы пользовательский тень отображалась, пользовательский фоновое изображение также должно быть установлено с -setBackgroundImage: (если используется фоновое изображение по умолчанию, теневое изображение по умолчанию будет используется).
Я добился того же взгляда с помощью следующего метода.
1. Установите цвет фона панели цвета таким же, как и цвет фона основного родительского представления.
2.
this.TabBar.BarStyle = UIBarStyle.BlackOpaque;
Я использовал его в Xamarin. Пожалуйста, проверьте синтаксис Swift.
В вашем представлении контроллеры или контроллеры представлений или BasicViewController, которые большинство обработчиков view наследуют в viewDidLoad, просто поместите эти две строки:
[[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"tab_bar_background"]];
[[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparent_shadow"]];
Убедитесь, что [email protected] - это изображение 1x1 или 2x2, а [email protected] - это изображение 640x100, поскольку нижняя панель имеет высоту 50 пикселей.
Работает на iOS 9.3
Попробуйте это на viewDidload.
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.setValue(true, forKey: "_hidesShadow")
}
Это работает для меня
В iOS 7 - это работает:
[self.actionToolbar setShadowImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny];
[self.actionToolbar setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
Надеюсь, что это поможет кому-то.