2017-10-13 4 views
3

Nous avons commencé à travailler sur notre projet avec Xcode 8.3 et tout allait bien jusqu'à iOS 10, mais lorsque nous exécutons notre application dans iOS 11, le bouton de retour n'est pas aligné comme prévu l'image ci-dessousLe bouton Précédent n'est pas correctement configuré dans iOS 11

iOS 11 screenshot

Mais avec iOS 10 correctement aligné son

iOS 10 Screenshot

Et ce que l'erreur de contrainte de mise en page que nous obtenons

(
"<NSLayoutConstraint:0x600000288200 _UIModernBarButton:0x7f7ef5c87f10.bottom == UILayoutGuide:0x6000005a0380'UIViewLayoutMarginsGuide'.bottom + 64.5 (active)>", 
"<NSLayoutConstraint:0x600000287f30 V:[_UIModernBarButton:0x7f7ef5c87f10]-(>=0)-| (active, names: '|':_UIButtonBarButton:0x7f7ef5c86e60)>", 
"<NSLayoutConstraint:0x600000282030 'UIView-bottomMargin-guide-constraint' V:[UILayoutGuide:0x6000005a0380'UIViewLayoutMarginsGuide']-(16)-| (active, names: '|':_UIButtonBarButton:0x7f7ef5c86e60)>" 

)

Répondre

3

Pour moi, c'est parce que j'utilise quelques trucs comme ci-dessous pour cacher le titre

UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -1000), for: .default) 

Nous ne devrions pas le faire, il ne fonctionne pas sur iOS 11 et déclenchera beaucoup du problème de mise en page automatique comme vous postez. Donc, vérifiez si vous avez appearance sur le bouton de retour.

Si vous voulez vraiment cacher le texte sur le bouton de retour, vous devez faire https://stackoverflow.com/a/46889050/1418457

1
UINavigationBar.appearance().backIndicatorImage = image.withRenderingMode(.alwaysOriginal) 
UINavigationBar.appearance().backIndicatorTransitionMaskImage = image.withRenderingMode(.alwaysOriginal) 

    if #available(iOS 11, *) { 
     UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .normal) 
     UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .highlighted) 
    } else { 
     UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffset(horizontal: -60, vertical: -60), for: .default) 
    } 
+1

lors de la suppression de la condition d'autre pour iOS avant 11 appareils, encore, ce code fonctionne. alors puis-je savoir ce qui est important à autre chose? – g212gs

+0

pour moins de ios 11 –

+0

Oui, ce que je comprends du code ci-dessus, mais lorsque je supprime le code d'autre, les appareils iOS 10 encore semble bonne interface utilisateur. – g212gs