Настройте высоту UITabBar в Xcode11 / iOS13 или 13.1 - PullRequest
0 голосов
/ 25 сентября 2019

Я использовал следующий код для регулировки высоты панели вкладок.Однако после того, как я обновляюсь до 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:

expected display

Однако при использовании Xcode 11 это выглядит так в iOS 12, высота панели вкладок возвращается к значению по умолчанию 49:

abnormal display under ios 12

, а в iOS 13 он отображается так же, как и в .inlineLayoutAppearance, даже если мое приложение было настроено только для портретной разметки, а целевое устройство - только iPhone.Мой настроенный шрифт также возвращается к системному по умолчанию.Как и в iOS 12, высота UITabBar возвращается к значению по умолчанию 49:

abnormal display under ios 13

Я упоминал этот похожий вопрос , но решениене работает для меня, и это не выглядит как правильное решение в любом случае.

Другая вещь, которую я не понимаю, связана с этим, что, когда я попытался установить внешний вид 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, что на самом делесбивает с толку ...

Кто-нибудь знает, есть ли для этого разумная причина, или это здесь возможная ошибка?Спасибо за любой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...