2016-07-13 5 views
1

En utilisant le langage de format visuel autolayout, est-il possible de définir la largeur d'une vue égale à la hauteur de la même vue?L'utilisation du langage de format visuel autolayout est-il possible de définir la largeur d'une vue égale à la hauteur de la même vue?

Voici ce que je veux faire:

[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[stopButton(100)]" options:kNilOptions metrics:nil views:views]]; 
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-50-[stopButton(stopButton.height)" options:kNilOptions metrics:nil views:views]]; 

Répondre

3

Vous devez créer une contrainte de ratio d'aspect fixe qui, selon le documentation for the visual formatting language, est actuellement pas possible.

Une contrainte utile qui ne peut être exprimée est un rapport d'aspect fixe (par exemple, imageView.width = 2 * imageView.height). Pour créer une telle contrainte, vous devez utiliser constraintWithItem: attribute: relatedBy: toItem: attribute: multiplicateur: constant :.

0

La réponse de Luke Van In sur un format fixe est une excellente réponse!

Bien sûr, si vous voulez simplement utiliser la même valeur dans plusieurs endroits que vous souhaitez modifier le code pour utiliser un dictionnaire de paramètres comme suit:

NSDictionary* metrics = @{@"stopButtonSize":@100}; 
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[stopButton(stopButtonSize)]" options:kNilOptions metrics:metrics views:views]]; 
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-50-[stopButton(stopButtonSize)]" options:kNilOptions metrics:metrics views:views]];