Подтвердить что ты не робот

Удалить верхнюю строку из TabBar

В iOS 10 этот код не работает, чтобы удалить теневую строку tabBar:

[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];

Кто-нибудь знает, что я должен сделать, чтобы удалить его?

В iOS 9.3 с этими двумя строками строка удаляется, но iOS 10 игнорирует команду setShadowImage.

4b9b3361

Ответ 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: (если используется фоновое изображение по умолчанию, теневое изображение по умолчанию будет используется).