iOS 11 Mise en page de conseils à propos de la Zone de sécurité pour l'iPhone x
Mon application dans l'app store, hier j'ai mis à jour mon Xcode version 9 et fonctionne bien sauf iPhone x. L'INTERFACE utilisateur a obtenu s'est effondré.
1.Ici, j'ai Créé Deux UIView(hauteur fixe) nommé comme en-Tête et la barre d'Onglet et j'ai caché mon NavigationBar totalité de l'app.
2.Ajout de l'extension de UIViewController pour faire en-Tête et barre d'Onglet
func addHeaderTab(currentViewController:UIViewController,content:String, isMenu:Bool){
let noView = TopHeaderView()
noView.tag = 12345
noView.isMenu = isMenu
noView.translatesAutoresizingMaskIntoConstraints = false
currentViewController.view .addSubview(noView)
if isMenu{
noView.menuBtn .setImage(UIImage(named: "Small"), for: .normal)
noView.logoImg.isHidden = false
}else{
noView.menuBtn .setImage(UIImage(named: "arrow_small"), for: .normal)
noView.logoImg.isHidden = true
}
noView.titleLbl.text = content
noView.delegate = (currentViewController as! menuOpen)
NSLayoutConstraint(item: noView, attribute: .leading, relatedBy: .equal, toItem: currentViewController.view, attribute: .leading, multiplier: 1.0, constant: 0.0).isActive = true
NSLayoutConstraint(item: noView, attribute: .trailing, relatedBy: .equal, toItem: currentViewController.view, attribute: .trailing, multiplier: 1.0, constant: 0.0).isActive = true
NSLayoutConstraint(item: noView, attribute: .top, relatedBy: .equal, toItem: currentViewController.view, attribute: .top, multiplier: 1.0, constant: 0.0).isActive = true
NSLayoutConstraint(item: noView, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .height, multiplier: 1.0, constant: 64).isActive = true
}
et ce tous les Viewcontroller comme ci-dessous :
self.addHeaderTab(currentViewController: self, content:"நிகழ்ச்சி நிரல்" , isMenu: true)
Comme celle de la barre des onglets aussi j'ai fait, mais tout le travail de l'appareil s'attendre à iPhone x.
Voir Ma capture d'écran :
j'ai étudié à propos https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/
mais je ne suis pas clair avec leur document.
Aide serait appréciée, Merci d'avance.
OriginalL'auteur karthikeyan | 2017-09-21
Vous devez vous connecter pour publier un commentaire.
Avec iOS11 (et l'apparition de iPhoneX) Apple a présenté la de la Zone de Sécurité Guide de Présentation de l' d'adapter votre point de vue à la iPhoneX.
De la Zone de Sécurité est la zone de l'écran qui n'est pas recouverte par l'encoche ou le domicile de l'indicateur.
Pour éviter le problème que vous rencontrez, vous devez changer votre noView haut de contrainte pour iOS11:
Malheureusement ce n'est pas tout. Parce que maintenant votre
noView
se déplace vers le bas sur iPhone X, mais la barre d'état n'a pas un arrière-plan rouge plus. Vous devez ajouter un arrière-plan rouge derrière la barre d'état:Vous pourrait rendre les choses beaucoup plus facile en utilisant un UINavigationController (avec un rouge de la barre de navigation):
Avec cette approche, vous n'avez pas à mettre tout les contraintes! Les systèmes de fait tous les réglages automatiquement pour vous.
Bien sûr, vous pouvez personnaliser la barre de navigation à l'aide de votre point de vue du contrôleur de
UINavigationItem
(lorsque votre vue-contrôleur est intégré dans une manette de navigation). Vous pouvez ajouter des éléments de bouton et un titre vue (qui peut être n'importeUIView
). Jetez un oeil à ces docs: developer.apple.com/documentation/uikit/uinavigationitemj'ai essayé de chargement xib et sous-vue à titre de point de vue, mais ne fonctionne pas correctement
Je ne suggère pas à insérer une nouvelle
UIViewController
. J'ai suggéré que l'opération doit utiliser uneUINavigationController
au lieu de la construction de sa propre Barre de Navigation personnalisée. C'est ce queUINavigationController
; -)Si c'était uniquement sur l'affichage d'une icône en haut, je ne pouvais pas être plus d'accord. Et puis je ne utilisez un
UIView
au lieu d'unUINavigationBar
. Mais à l'OP de l'exemple, il y a une icône de menu, donc il ya certainement certains de navigation qui se passe. C'est pourquoi je voudrais utiliser unUINavigationController
ici.OriginalL'auteur joern
En Objective-C pour le haut et le bas de la marge quand sur iPhone-X
OriginalL'auteur Chandan
Si vous ne souhaitez pas utiliser un
UINavigationController
mais vous voulez avoir une barre de navigation, vous pouvez le faire de cette manière (à l'aide d'unUIImageView
):https://medium.com/@kahseng.lee123/creating-custom-navigation-bar-tab-bar-for-iphone-x-f03b1e1827d3
Ou vous pouvez créer une vue et de définir son haut contrainte vers le haut de la superview et ses bas contrainte vers le haut de la barre de navigation. N'oubliez pas de le faire en rouge. 🙂
OriginalL'auteur
Régler la hauteur de contraindre de headerView en fonction de l'appareil.
Et de l'ensemble de tous les sous-vue(de headerView) contraindre respectifs de bas de superview(headerView).
Note complémentaire sur pourquoi nous avons ajouté 24 pixels pour iphoneX:
OriginalL'auteur Mehul Sojitra