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.
Réponses
Trop de publicités?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
}
}
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
}
}
"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.
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:
Et lors de l'alignement de la superview, il s'affichera correctement:
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.