web-dev-qa-db-fra.com

Alignement horizontal de début ou de fin avant iOS 11

Attention: leading or trailing horizontal alignment before iOS 11

Je suis au-dessus des avertissements lors de la compilation sur Xcode 9.1 sur l'une des scènes d'un fichier de storyboard. Il existe d'autres storyboards (avec la cible de déploiement iOS 10.0) et pourtant l'avertissement est affiché pour cette scène spécifique sur un fichier Storyboard spécifique.

L'avertissement est supprimé si je change de cible de déploiement pour iOS 11.0 sur la scène où l'avertissement est affiché, mais je ne souhaite pas le faire.

Quelqu'un at-il rencontré cette affaire?

47
Prabhav

Pour moi, le problème était d'utiliser trailingleading alignement sur UIButton lui-même.

La zone de sécurité semble être parfaitement adaptée à l’utilisation - elle est rétrocompatible et se traduit par des marges de super vue appropriées.

Mais cette fonctionnalité concerne uniquement iOS 11. Vous devez donc utiliser l’alignement gauche/droite standard si vous ciblez des versions iOS plus basses.

Le moyen le plus simple de savoir quelle vue est à l'origine du problème consiste à rechercher contentHorizontalAlignment="leading" ou contentHorizontalAlignment="trailing" dans le code source pour .xib

enter image description here

109
Grzegorz Krukowski

Étape 1:

Affichez le storyboard incriminé sous forme de code source: enter image description here

Étape 2:

Remplacer toutes les instances de:

contentHorizontalAlignment="leading"

avec:

contentHorizontalAlignment="left"

Étape 3:

Remplacer toutes les instances de:

contentHorizontalAlignment="trailing"

avec:

contentHorizontalAlignment="right"

Étape 4:

Compiler et regarder les avertissements disparaître.

Je trouve cette approche plus facile lorsque vous avez une tonne d’éléments à modifier. "début" et "fin" en tant que types de valeur "contentHorizontalAlignment" ont été introduits avec iOS 11. iOS 10 ne connaît pas les "début" et "fin" qui est la raison de l'avertissement.

30
etayluz

Dans le journal de construction, juste avant le mot "warning", vous verrez un identifiant Interface Builder sous la forme "xxx-yy-zzz". Copiez-le et collez-le dans la barre de recherche Xcode pour que le contrôle "offensant" apparaisse pour vous. Cliquez sur le résultat de la recherche et cela vous mènera directement dans le storyboard avec le contrôle correspondant sélectionné. Le reste du problème peut être résolu en utilisant les autres réponses.

1
David Hoy

J'ai eu ce problème avec tout un tas de boutons dont j'avais besoin aligné à gauche avec un petit décalage. J'ai supprimé l'alignement du storyboard et je l'ai fait comme cela dans viewDidLoad avec un tableau des boutons nécessaires.

func indentButtons(buttons: [UIButton?]){
    for i in 0..<buttons.count{
        buttons[i]!.contentHorizontalAlignment = .left
        buttons[i]!.titleEdgeInsets = UIEdgeInsetsMake(0, 5, 0, 0)
    }
}
0
user462990