자동 레이아웃을 사용하는 경우 translateAutoResizingMaskIntoConstraints
을 false
으로 설정하고 프레임을 무시하지만 수동으로 제약 조건을 추가하는 것을 잊지 마십시오.
override func viewDidLoad() {
super.viewDidLoad()
// no auto layout
let v = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
v.backgroundColor = UIColor.blue
view.addSubview(v)
// with auto layout
let v2 = UIView()
v2.backgroundColor = UIColor.red
// use auto layout
v2.translatesAutoresizingMaskIntoConstraints = false
// add width/height constraints
v2.addConstraint(NSLayoutConstraint(item: v2, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 100))
v2.addConstraint(NSLayoutConstraint(item: v2, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 100))
// must add to hirarchy before adding the following constraints
view.addSubview(v2)
view.addConstraint(NSLayoutConstraint(item: v2, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 100))
view.addConstraint(NSLayoutConstraint(item: v2, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1, constant: 0))
// auto layout, visual format
let v3 = UIView()
v3.translatesAutoresizingMaskIntoConstraints = false
v3.backgroundColor = UIColor.green
let views = [ "v3" : v3 ]
// must add v3 as subview before adding constraints referencing the parent view
view.addSubview(v3)
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-200-[v3(100)]", options: [], metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-0-[v3(100)]", options: [], metrics: nil, views: views))
}
많은 조회수를 들어, 어떤 전망들이 intrinsicContentSize
로 원하는 크기를 제공하기 때문에 크기를 지정할 필요가 없습니다 :
다음은 간단한 예입니다.
단추에 필요한 크기로 만들거나 제한을 사용하여 다른 크기로 강제 설정할 수 있습니다.
사용자 정의보기의 경우 -이 속성을 재정 의하여 사용자가 '필요한 크기'논리를 제공 할 수 있습니다.
'let button = UIButton()','view.addSubview (button)', 제약 조건 추가. – shallowThought