UITabBar ошибка прозрачных этикеток в iOS 13 - PullRequest
1 голос
/ 09 октября 2019

iOS: 13.1.2 Xcode: 11.1 (11A1027)

В нашей панели вкладок мы выбрали использование прозрачного текста для элементов вкладки, поэтому в iPhone мы показываем только изображение элемента вкладки, в то время как текстневидимый (и это должно быть видно только на iPad), мы делаем это, вызывая:

extension UITabBarItem {
    func updateTitleVisibility(for traitCollection: UITraitCollection) {
        switch traitCollection.horizontalSizeClass {
        case .compact:
            hideTabBarTitle()
        default:
            showTabBarTitle()
        }
    }

    func hideTabBarTitle() {
        imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
        setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.clear], for: .normal)
        setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.clear], for: .selected)
    }

    func showTabBarTitle() {
        imageInsets = .zero
        setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.licorice], for: .normal)
        setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.secondaryBlue], for: .selected)
    }
}

При компиляции нашего приложения для iOS 13 (этого не произошло на iOS 12), наблюдается странное поведениепроисходит (обратите внимание на панель вкладок):

Видео с ошибкой @ Imgur

(^ Мне не удалось вставить его в сообщение)

Imgur

Таким образом, текст вкладки внезапно отображается для неактивных вкладок после представления полноэкранного контроллера представления, но достаточно невероятно при проверке отладчика представления метки, которые должны быть прозрачными Действительно Прозрачный

view debugger

Кто-нибудь видел подобное поведение? Как я могу это исправить

1 Ответ

1 голос
/ 09 октября 2019

Ну, это из-за поведения в темном режиме по умолчанию на iOS 13.

Чтобы добиться того, что вы хотели с метками, как на версиях iOS ниже 13,

Просто добавьте это вваш Info.plist:

<key>UIUserInterfaceStyle</key>
<string>Light</string>

По сути, это изменение стиля глобального пользовательского интерфейса на стиль light, который является стилем по умолчанию для версий iOS ниже 13.

Если вы выиграли 'Если вы предпочитаете менять стиль пользовательского интерфейса, вы также можете изменить цвет оттенка невыбранных элементов на панели вкладок:

tabBar.unselectedItemTintColor = .darkGray

или любой другой цвет оттенка по вашему выбору.

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