使用autolayout可视化格式语言可以将视图的宽度设置为等于同一视图的高度吗?

时间:2016-07-13 23:28:19

标签: ios objective-c autolayout visual-format-language

使用autolayout可视化格式语言可以将视图的宽度设置为等于同一视图的高度吗?

这是我想要做的:

[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]];

2 个答案:

答案 0 :(得分:3)

您需要创建一个固定的宽高比约束,根据documentation for the visual formatting language,当前不可能这样做。

  

一个无法表达的有用约束是固定的宽高比   (例如,imageView.width = 2 * imageView.height)。创造这样的   一个约束,你必须使用   constraintWithItem:属性:relatedBy:toItem:属性:乘数:常数:

答案 1 :(得分:0)

Luke Van In对固定宽高比的回答是一个很好的答案!

当然,如果您只想在多个位置使用相同的值,则可以修改代码以使用度量字典,如下所示:

 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]];