Удалить верхнюю строку из TabBar
В iOS 10 этот код не работает, чтобы удалить теневую строку tabBar:
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
Кто-нибудь знает, что я должен сделать, чтобы удалить его?
В iOS 9.3
с этими двумя строками строка удаляется, но iOS 10
игнорирует команду setShadowImage
.
Ответы
Ответ 1
удаляет верхнюю линию для @iOS 13.0
let appearance = tabBar.standardAppearance
appearance.shadowImage = nil
appearance.shadowColor = nil
tabBar.standardAppearance = appearance;
удаляет верхнюю линию для iOS 12.0 и более ранних версий
tabBar.shadowImage = UIImage()
tabBar.backgroundImage = UIImage()
Ответ 2
Просто попробуйте ввести код для iOS 10: -
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"fondoTabBar"]];
[UITabBar appearance].layer.borderWidth = 0.0f;
[UITabBar appearance].clipsToBounds = true;
return YES;
}
Swift 3.x
UITabBar.appearance().layer.borderWidth = 0.0
UITabBar.appearance().clipsToBounds = true
Ответ 3
Для iOS 13
if (@available(iOS 13.0, *)) {
UITabBarAppearance *appearance = [self.tabBarController.tabBar.standardAppearance copy];
appearance.shadowImage = nil;
appearance.shadowColor = nil;
self.tabBarController.tabBar.standardAppearance = appearance;
}
Ответ 4
Для iOS 10 изменился стиль вкладки в черный, трюк
self.tabBarController.tabBar.shadowImage = UIImage()
self.tabBarController.tabBar.barStyle = .Black
Ответ 5
Протестировано на iOS 12.1
override func viewDidLoad() {
// Remove default border line
tabBar.shadowImage = UIImage()
tabBar.backgroundImage = UIImage()
tabBar.backgroundColor = UIColor.white
}
Ответ 6
У меня нет репутации, чтобы комментировать, но чтобы добавить к ответу gnoix, у меня была немного другая проблема в том, что я хотел, чтобы тень и фон были чистыми, поэтому я имел в Swift
if #available(iOS 13.0, *) {
let appearance = tabBar.standardAppearance.copy()
appearance.configureWithTransparentBackground()
tabBar.standardAppearance = appearance
} else {
tabBar.backgroundColor = UIColor.clear
let image = UIImage(ciImage: CIImage(color: CIColor.clear)).af_imageAspectScaled(toFit: tabBar.bounds.size)
tabBar.backgroundImage = image
tabBar.shadowImage = image
}
Ответ 7
У меня была та же проблема в ios 10. Я исправил эту проблему, просто изменив высоту UITabBar (по умолчанию 49). Проверьте здесь, как изменить высоту.
Ответ 8
Вы должны одновременно реализовать следующие два метода:
[[UITabBar appearance] setShadowImage:[UIImage new]];
[[UITabBar appearance] setBackgroundImage:[UIImage new]];
Ответ 9
Если вы создаете свой собственный подкласс UITabBarController, вы можете установить
значения в viewDidLoad как это
Swift 3
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.layer.borderWidth = 0
self.tabBar.clipsToBounds = true
}
Ответ 10
Это теневое изображение (свойство) вкладки. Попробуйте следующие решения и посмотрите.
Попробуйте это,
** 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()
Вот рекомендация apple для shadowImage.
@available(iOS 6.0, *)
open var shadowImage: UIImage?
Значение по умолчанию равно нулю. Когда не-nil, вместо теневого изображения вместо теневое изображение по умолчанию. Чтобы пользовательский тень отображалась, пользовательский фоновое изображение также должно быть установлено с -setBackgroundImage: (если используется фоновое изображение по умолчанию, теневое изображение по умолчанию будет используется).