视觉格式化语言、按钮宽度和高度约束

Posted

技术标签:

【中文标题】视觉格式化语言、按钮宽度和高度约束【英文标题】:Visual formatting language, button width and height constraint 【发布时间】:2014-07-09 12:42:58 【问题描述】:

有没有办法用 NSLayoutConstraints 设置 UIView 的宽度和高度? 例如我有以下约束设置

subView.setTranslatesAutoresizingMaskIntoConstraints(false);
        let cons:NSArray =   NSLayoutConstraint.constraintsWithVisualFormat("[subView(99)]", options:nil, metrics: nil, views: ["subView":subView]);
        self.view.addConstraints(cons);

这仅设置宽度,如何添加高度?

【问题讨论】:

【参考方案1】:

两种可能的选择:

[view setTranslatesAutoresizingMaskIntoConstraints:NO];
NSArray* vConstraints = [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view(25)]|" options:0 metrics:nil views:view]];
[parentView addConstraints:vConstraints];

NSLayoutConstraint* vConstraint = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:25];
[parentView addConstraint:vConstraint];

【讨论】:

【参考方案2】:

对于垂直布局,只需将 V: 添加到 VFL 字符串的开头:

  subView.setTranslatesAutoresizingMaskIntoConstraints(false);

  let horizontalCons:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("[subView(99)]", options:nil, metrics: nil, views: ["subView":subView]);
  let veritcleCons:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("V:[subView(50)]", options:nil, metrics: nil, views: ["subView":subView]);

  self.view.addConstraints(horizontalCons);
  self.view.addConstraints(veritcleCons);

【讨论】:

以上是关于视觉格式化语言、按钮宽度和高度约束的主要内容,如果未能解决你的问题,请参考以下文章

用于宽度或高度约束的布局格式选项?

如何以视觉语言格式编写具有内在大小优先级的内容?

不能满足约束 - 视觉格式语言

使用视觉格式语言约束 2 个视图

约束两个视图以使用视觉格式填充屏幕时忽略第二个视图的大小

了解 iOS Objective C 中的视觉格式约束