#swift #xcode #uikit
#swift #xcode #uikit
Вопрос:
Я работаю над пользовательским UITabBar, который имеет большую высоту, пользовательскую тень и без заголовков элементов.
Я использую следующий код для своего пользовательского класса UITabBar для достижения этого, например:
class CustomUITabBar: UITabBar {
@IBInspectable private var height: CGFloat = .zero
override func sizeThatFits(_ size: CGSize) -> CGSize {
guard let window = UIApplication.shared.windows.first else {
return super.sizeThatFits(size)
}
var sizeThatFits = super.sizeThatFits(size)
if #available(iOS 11.0, *) {
sizeThatFits.height = height window.safeAreaInsets.bottom
} else {
sizeThatFits.height = height
}
return sizeThatFits
}
}
Вот результат: на iPhone с надрезом (iPhone X, XS, 11 и т. Д.) Все выглядит нормально, значки центрируются правильно, вот так:
Но на iPhone, у которых вместо этого есть кнопка home, элементы панели вкладок неправильно центрируются по вертикали. Есть ли решение для этого?
Ответ №1:
Теперь они не центрированы, как я вижу, на обоих устройствах. Вы можете поиграть с этим кодом:
guard let items = tabBar.items else { return }
for item in items {
item.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}
он настраивает изображение TabBarItem 🙂
С этими настройками они будут центрироваться в каждом элементе TabBarItem.
Комментарии:
1. Спасибо за усилия, но этот код ничего не изменил : (