我想要一个以超级视图为中心的视图,但由于本例中的内容标签而增长。但我不希望它变得不再适合屏幕,所以这就是我固定左右的原因。
我已经戴上了一个测试视图控制器:
import UIKit
import PureLayout
final class ViewController: UIViewController {
let container: UIView = {
let container = UIView(forAutoLayout: ())
container.backgroundColor = UIColor.blackColor()
container.clipsToBounds = true
return container
}()
let label: UILabel = {
let label = UILabel(forAutoLayout: ())
label.textAlignment = NSTextAlignment.Center
label.numberOfLines = 1
label.textColor = UIColor.redColor()
label.text = "This is a very very very long message"
return label
}()
var rightView: UIView = {
let view = UIView(forAutoLayout: ())
view.backgroundColor = .redColor()
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
self.container.addSubview(self.label)
self.view.addSubview(self.container)
self.view.addSubview(self.rightView)
self.container.autoPinEdgeToSuperviewEdge(.Bottom, withInset: 20)
self.container.autoAlignAxisToSuperviewAxis(.Vertical)
self.container.autoSetDimension(.Height, toSize: 36)
self.container.layer.cornerRadius = 18
self.container.autoPinEdge(.Right, toEdge: .Left, ofView: self.rightView, withOffset: -20, relation: .LessThanOrEqual)
self.container.autoPinEdgeToSuperviewEdge(.Left, withInset: 20, relation: .GreaterThanOrEqual)
self.container.setContentCompressionResistancePriority(UILayoutPriorityRequired, forAxis: .Horizontal)
self.label.autoPinEdgesToSuperviewEdgesWithInsets(UIEdgeInsetsMake(10, 20, 10, 20))
self.rightView.autoPinEdgeToSuperviewEdge(.Right, withInset: 5)
self.rightView.autoPinEdgeToSuperviewEdge(.Bottom, withInset: 20)
self.rightView.autoSetDimension(.Width, toSize: 50)
self.rightView.autoSetDimension(.Height, toSize: 60)
}
}
结果是:
为什么黑色视图没有增长,直到它不能由于左右约束?行数为 1 且 ContentCompressionResistancePriority 开启?