36 votes

Comment corriger le problème de hauteur de la barre d'onglets sur iPhone X

Je vais avoir un problème avec mon application lors de l'essai pour iPhone X. je ne suis pas sûr de la façon de régler ce problème, ainsi que de ne pas en faire un problème pour les non iPhone X tailles. Cela semble être un problème sur l'iPhone X simulateur.

enter image description here

enter image description here

17voto

Andrey Points 171

Sur iOS 12.1, j'ai résolu ce problème en surchargeant safeAreaInsets dans la sous-classe UITabBar:

 class TabBar: UITabBar {
    private var cachedSafeAreaInsets = UIEdgeInsets.zero

    override var safeAreaInsets: UIEdgeInsets {
        let insets = super.safeAreaInsets

        if insets.bottom < bounds.height {
            cachedSafeAreaInsets = insets
        }

        return cachedSafeAreaInsets
    }
}
 

15voto

Mohamed Ali Points 60

Créez un fichier séparé avec le code suivant:

 extension UITabBar {
    override open func sizeThatFits(_ size: CGSize) -> CGSize {
        super.sizeThatFits(size)
        guard let window = UIApplication.shared.keyWindow else {
            return super.sizeThatFits(size)
        }
        var sizeThatFits = super.sizeThatFits(size)
        sizeThatFits.height = window.safeAreaInsets.bottom + 40
        return sizeThatFits
    }
}
 

10voto

Dipak Kacha Points 415

"Inspecteur de fichiers"

"Inspecteur de fichier" à droite du storyboard Xcode, activez la mise en page du guide des zones sûres pour prendre en charge votre application sur iPhone

Cet article décrit vraiment bien.

7voto

clopex Points 109

Pour iOS 11.3, cela a fonctionné pour moi:

 func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    tabBar.invalidateIntrinsicContentSize()
}
 

2voto

ben87nz Points 41

Juste alignez le bas de la UITabBar à la superview, pas de la zone de sécurité. Si vous aligner à la zone de sécurité, il sera comme ceci:

Align to safe area

Et lors de l'alignement de la superview, il s'affichera correctement:

Align to Superview

Je pense que c'est parce que Apple a donné l'onglet éléments de la barre d'un défaut de la marge vers le bas si c'est sur l'iPhone X comme ils veulent la barre d'onglet à être étendu au bas de l'écran pour éviter un bar flottant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X