1
votes

Avoir le bouton dans la couverture UIToolbar pleine hauteur sous l'indicateur d'accueil de l'iPhone X

J'ai une UIToolbar en bas de l'écran qui contient trois boutons, tous avec des couleurs de fond différentes. J'utilise la mise en page automatique et contraint la barre d'outils au guide de mise en page inférieur (je dois prendre en charge iOS 8, donc pas de guides de mise en page de zone de sécurité) afin que la barre d'outils s'affiche correctement au-dessus de l'indicateur d'accueil de l'iPhone X.

Mon problème est que je veux que les boutons couvrent toute la hauteur de la barre d'outils et qu'ils soient dessinés sous l'indicateur d'accueil. J'ai actuellement ceci:

 Actuel

Notez l'espace blanc sous l'indicateur d'accueil.

J'aimerais que cet espace soit couvert par la couleur d'arrière-plan du bouton (les étiquettes, bien sûr, doivent rester au-dessus de l'indicateur d'accueil):

 Idéal

Je dois prendre en charge les appareils jusqu'à iOS 8 , en mode paysage et portrait.

< gagnantEdit:

Lorsque je contraint la barre d'outils au bas de la vue de supervision, elle est trop basse et les boutons sont couverts par l'indicateur d'accueil:

 Aligné en bas


4 commentaires

Vous pouvez probablement utiliser la même approche que celle présentée ici: stackoverflow.com/a/56171264/6257435


Oui, cela fonctionnera, merci! Si vous postez le lien comme réponse, je l'accepterai (je ne peux pas le marquer comme duplicata).


Utilisez-vous un UIToolBar réel? Ou avez-vous simplement besoin des 3 boutons en bas de la vue?


J'utilise une UIToolbar réelle. J'ai pu trouver une solution de contournement en utilisant des UIView simples, mais idéalement, j'aimerais utiliser une UIToolbar.


3 Réponses :


0
votes

Vous devez jouer avec les contraintes en définissant la contrainte de hauteur sur chaque bouton et en augmentant / diminuant en fonction de l'état de l'appareil.


2 commentaires

Merci pour votre réponse. La hauteur des boutons est déjà contrainte à égaler la hauteur de la barre d'outils. Le problème est que la barre d'outils a une vue de contenu qui contient les boutons, qui commence au-dessus de l'indicateur d'accueil. La vue du contenu est plus petite que la barre d'outils réelle (qui va sous l'indicateur d'accueil).


@Mark Pour cela, vous devez définir des contraintes en bas avec SuperView au lieu de zone de sécurité.



1
votes

Si vous utilisez la mise en page automatique, vous devez ajouter la contrainte inférieure pour superviser la zone non sûre, cela devrait fonctionner.

Si vous utilisez des cadres, vous pouvez probablement ajuster un peu la hauteur pour obtenir le résultat souhaité.

Et si vous souhaitez prendre en charge les appareils inférieurs à iOS 11, vous pouvez probablement utiliser le hack ci-dessous pour vérifier le type d'appareil et donner la hauteur de la barre d'onglets en conséquence, mais vous devrez donner des contraintes dans le code.

if #available(iOS 11.0, *) {
    if UIApplication.shared.windows[0].safeAreaInsets.bottom > 0{
        //The device is a notch device and you need to give extra height to accommodate the bottom button and tab (Make sure your labels are attached to the top so they are properly placed over the bottom line)
    }else{
        //The device is not a notch device and is iPhone 8 or less so you can have regular tab bar height
    }
} else {
    //You probably do not have to worry about increased tab bar height and you can give regular tab bar height
}

Ce n'est peut-être pas la meilleure solution, mais vous pourrez résoudre votre problème actuel pour le moment. J'espère que cela aide


3 commentaires

Merci pour votre suggestion. Si je me contraint à superview.bottom, l'indicateur Home se trouve au-dessus des boutons. Je pense que contraindre le guide de mise en page inférieur (pas de zone de sécurité dans iOS 8), est la bonne façon. J'ai seulement besoin de comprendre comment développer les boutons.


@Mark J'ai mis à jour ma réponse. vous pouvez l'essayer et vérifier si cela fonctionne pour vous


Merci pour la mise à jour. Re "l'appareil est un appareil à encoche et il faut donner une hauteur supplémentaire": la hauteur de l'UIToolbar est gérée par le système. Je voudrais trouver un moyen pour les éléments de la barre d'outils de s'étirer verticalement sur toute la hauteur de la barre d'outils.



0
votes

Je pense que cela fonctionnera pour vous.

  1. Vous devez définir la contrainte du bouton de la barre d'outils sur zone sûre.
  2. Ensuite, vous avez besoin d'une autre vue qui ne contient que trois vues colorées sans aucun texte. et définissez la contrainte suivante pour cette vue. -> Contrainte d'espace vertical à la barre d'outils -> Contrainte de début, de fin et de bas pour superview.

Ainsi, dans les appareils Nouch, cette vue fictive est étendue et dans d'autres appareils, sa hauteur est automatiquement nulle.

Aucun codage spécifique à l'appareil requis.


0 commentaires