J'ai déjà essayé d'utiliser des contraintes AutoLayout dans IB et je comprends comment elles fonctionnent et qu'elles doivent être non ambiguës, etc ...
Mais lorsque vous avez plus de quelques vues, cela devient un peu compliqué et tend à se casser.
Alors, je viens de lire un blog où un gars avait le même problème et utilisait le code ASCII pour créer les contraintes à la place.
J'ai une UITableView avec une UITableViewCell personnalisée qui a une taille dynamique basée sur la quantité de contenu. Un candidat idéal pour Auto Layout.
J'ai donc essayé plusieurs façons de le faire et maintenant j'ai réduit le contenu pour qu'il n'y ait qu'une seule étiquette dans la cellule.
Je voudrais que l'étiquette remplisse la cellule avec une bordure autour.
c'est-à-dire la taille standard pointe à partir de chaque bord de la cellule.
Je l'ai fait comme ça...
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
_label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
_label.textColor = [UIColor colorWithWhite:0.53 alpha:1.0];
_label.backgroundColor = [UIColor yellowColor];
[self addSubview:_label];
NSDictionary *views = NSDictionaryOfVariableBindings(_label);
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[_label]-|"
options:0
metrics:nil
views:views]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-[_label]-|"
options:0
metrics:nil
views:views]];
self.backgroundView = [[UIView alloc] initWithFrame:CGRectZero];
self.backgroundColor = [UIColor clearColor];
}
return self;
}
Mais lorsque la cellule est affichée, l'étiquette est dans le coin supérieur gauche exactement comme le CGRect que j'ai utilisé pour l'initialiser et je reçois cette série d'erreurs concernant les contraintes...
Impossible de satisfaire simultanément les contraintes.
Probablement au moins l'une des contraintes de la liste suivante est une que vous ne voulez pas. Essayez ceci : (1) examinez chaque contrainte et essayez de comprendre laquelle vous n'attendez pas ; (2) trouvez le code qui a ajouté la ou les contraintes non désirées et corrigez-le. (Remarque : si vous voyez des NSAutoresizingMaskLayoutConstraints que vous ne comprenez pas, consultez la documentation de la propriété UIView translatesAutoresizingMaskIntoConstraints)
(
"",
""
)
Tentative de récupération en cassant la contrainte
Interrompez objc_exception_throw pour capturer cela dans le débogueur.
Les méthodes de la catégorie UIConstraintBasedLayoutDebugging sur UIView répertoriées dans peuvent également être utiles.
2013-03-07 11:56:14.841 unasys[13082:907] Impossible de satisfaire simultanément les contraintes.
Probablement au moins l'une des contraintes de la liste suivante est une que vous ne voulez pas. Essayez ceci : (1) examinez chaque contrainte et essayez de comprendre laquelle vous n'attendez pas ; (2) trouvez le code qui a ajouté la ou les contraintes non désirées et corrigez-le. (Remarque : si vous voyez des NSAutoresizingMaskLayoutConstraints que vous ne comprenez pas, consultez la documentation de la propriété UIView translatesAutoresizingMaskIntoConstraints)
(
"",
""
)
Tentative de récupération en cassant la contrainte
Interrompez objc_exception_throw pour capturer cela dans le débogueur.
Les méthodes de la catégorie UIConstraintBasedLayoutDebugging sur UIView répertoriées dans peuvent également être utiles.
2013-03-07 11:56:14.854 unasys[13082:907] Impossible de satisfaire simultanément les contraintes.
Probablement au moins l'une des contraintes de la liste suivante est une que vous ne voulez pas. Essayez ceci : (1) examinez chaque contrainte et essayez de comprendre laquelle vous n'attendez pas ; (2) trouvez le code qui a ajouté la ou les contraintes non désirées et corrigez-le. (Remarque : si vous voyez des NSAutoresizingMaskLayoutConstraints que vous ne comprenez pas, consultez la documentation de la propriété UIView translatesAutoresizingMaskIntoConstraints)
(
"",
"",
"",
""
)
Tentative de récupération en cassant la contrainte
Interrompez objc_exception_throw pour capturer cela dans le débogueur.
Les méthodes de la catégorie UIConstraintBasedLayoutDebugging sur UIView répertoriées dans peuvent également être utiles.
2013-03-07 11:56:14.858 unasys[13082:907] Impossible de satisfaire simultanément les contraintes.
Probablement au moins l'une des contraintes de la liste suivante est une que vous ne voulez pas. Essayez ceci : (1) examinez chaque contrainte et essayez de comprendre laquelle vous n'attendez pas ; (2) trouvez le code qui a ajouté la ou les contraintes non désirées et corrigez-le. (Remarque : si vous voyez des NSAutoresizingMaskLayoutConstraints que vous ne comprenez pas, consultez la documentation de la propriété UIView translatesAutoresizingMaskIntoConstraints)
(
"",
"",
"",
""
)
Tentative de récupération en cassant la contrainte
et je ne sais pas du tout par où commencer pour déboguer cela. Les contraintes sont absolument minimales mais cela échoue complètement.
Est-ce que quelqu'un peut me donner des indications sur la bonne manière de faire fonctionner cette contrainte?