Я использовал следующий код для регулировки высоты панели вкладок.Однако после того, как я обновляюсь до Xcode 11 и использую swift 5, пользовательский интерфейс больше не отображается правильно.
class MyTabBarController: UITabBarController {
private lazy var defaultTabBarHeight = { [unowned self] in
return self.tabBar.frame.size.height
}()
let higherTabBarInset: CGFloat = 24
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
let newTabBarHeight = defaultTabBarHeight + higherTabBarInset
var newFrame = tabBar.frame
newFrame.size.height = newTabBarHeight
newFrame.origin.y = view.frame.size.height - newTabBarHeight
tabBar.items?.forEach({e in
e.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -(higherTabBarInset / 2))
})
}
}
Он должен выглядеть примерно так: высота панели вкладок равна 72:
Однако при использовании Xcode 11 это выглядит так в iOS 12, высота панели вкладок возвращается к значению по умолчанию 49:
, а в iOS 13 он отображается так же, как и в .inlineLayoutAppearance
, даже если мое приложение было настроено только для портретной разметки, а целевое устройство - только iPhone.Мой настроенный шрифт также возвращается к системному по умолчанию.Как и в iOS 12, высота UITabBar возвращается к значению по умолчанию 49:
Я упоминал этот похожий вопрос , но решениене работает для меня, и это не выглядит как правильное решение в любом случае.
Другая вещь, которую я не понимаю, связана с этим, что, когда я попытался установить внешний вид UITabBarItem с помощью следующего кода:
tabBar.items?.forEach({e in
if #available(iOS 13.0, *) {
let appearance = UITabBarItemAppearance()
appearance.configureWithDefault(for: .stacked)
e.standardAppearance = appearance
}
})
Я получил сообщение о том, что Cannot assign value of type 'UITabBarItemAppearance' to type 'UITabBarAppearance?
,Затем я обнаружил, что даже если тип моей итерационной переменной e
равен UITabBarItem
, тип ее появления равен UITabBarAppearance?
... Я также не мог найти способ установить внешний вид моего UITabBarItem, что на самом делесбивает с толку ...
Кто-нибудь знает, есть ли для этого разумная причина, или это здесь возможная ошибка?Спасибо за любой ответ.