如何使用自动布局定义最大宽度约束?

时间:2016-09-17 22:32:11

标签: swift autolayout nslayoutconstraint swift3

使用自动布局将UIImageView添加到UITableViewCell

UIImageView的宽度应为UITableViewCell宽度的50%,但无论如何不得大于50px。

这不起作用:

    NSLayoutConstraint.activate([
        cellImageView.topAnchor.constraint(equalTo: contentView.topAnchor),
        cellImageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
        cellImageView.centerXAnchor.constraint(equalTo: contentView.centerXAnchor),
        cellImageView.heightAnchor.constraint(equalTo: cellImageView.widthAnchor, multiplier: cellImage.size.height / cellImage.size.width),
        cellImageView.widthAnchor.constraint(equalTo: contentView.widthAnchor, multiplier: 0.5),
        cellImageView.widthAnchor.constraint(lessThanOrEqualToConstant: 50)
        ])

如何定义布局约束?

2 个答案:

答案 0 :(得分:2)

这是一个布局库吗?我不熟悉代码中的语法,但根据您的描述,它听起来像您想要的宽度限制:

  • lessThanOrEqualToConstant: 50
  • equalTo: contentView.widthAnchor, multiplier: 0.5 的优先级低于50pt约束

答案 1 :(得分:0)

您将设置两个具有不同优先级的单独约束。一个约束为50%宽度,UILayoutPriority.DefaultHigh优先级(例如750),而第二个约束为50 point约束,UILayoutPriority.Required优先级(例如1000 )。然后,这将尝试实现两个约束,但如果它们发生冲突(即超过50个点),将会打破50%的限制。