stackview 복합적으로 사용
1.stackview를 생성한다.
stackview 아래에 바로 stackview는 들어가지 않아서 view를 넣고 그 안에 stackview를 넣는다.
equalSpacing을 하고 view의 가로를 주면 가로만큼 생기고 동일한 간격이 된다.
stack.spacing는 무시된다.
import Foundation
import UIKit
import SnapKit
class Stack3ViewController: UIViewController {
var didSetupConstraints = false
let stackView:UIStackView = {
let stack = UIStackView()
stack.axis = .vertical
stack.spacing = 10
stack.translatesAutoresizingMaskIntoConstraints = false;
stack.backgroundColor = .white
stack.alignment = .fill
stack.distribution = .fillEqually
return stack
} ()
let view1:UIView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
let stackView1:UIStackView = {
let stack = UIStackView()
stack.axis = .horizontal
stack.spacing = 10
stack.translatesAutoresizingMaskIntoConstraints = false;
stack.backgroundColor = .white
stack.alignment = .fill
stack.distribution = .fillEqually
return stack
} ()
let view2:UIView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
let stackView2:UIStackView = {
let stack = UIStackView()
stack.axis = .horizontal
stack.spacing = 10
stack.translatesAutoresizingMaskIntoConstraints = false;
stack.backgroundColor = .white
stack.alignment = .fill
stack.distribution = .equalSpacing
return stack
} ()
let redView1:UIView = {
let view = UIView()
view.backgroundColor = .red
return view
}()
let blueView1:UIView = {
let view = UIView()
view.backgroundColor = .blue
return view
}()
let greenView2:UIView = {
let view = UIView()
view.backgroundColor = .green
return view
}()
let yellowView2:UIView = {
let view = UIView()
view.backgroundColor = .yellow
return view
}()
let blackView2:UIView = {
let view = UIView()
view.backgroundColor = .black
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
self.initUI()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
static func instance() -> Stack3ViewController {
let vc = Stack3ViewController()
return vc
}
}
//snapkit
extension Stack3ViewController {
func initUI() {
self.view.backgroundColor = .white
self.view.addSubview(stackView)
self.stackView.addArrangedSubview(view1)
self.stackView.addArrangedSubview(view2)
self.view1.addSubview(stackView1)
self.stackView1.addArrangedSubview(blueView1)
self.stackView1.addArrangedSubview(redView1)
self.view2.addSubview(stackView2)
self.stackView2.addArrangedSubview(blackView2)
self.stackView2.addArrangedSubview(greenView2)
self.stackView2.addArrangedSubview(yellowView2)
view.setNeedsUpdateConstraints()
}
override func updateViewConstraints() {
if (!didSetupConstraints) {
//wrapper
stackView.snp.makeConstraints { make in
make.top.equalTo(topLayoutGuide.snp.bottom)
make.bottom.left.right.equalTo(0)
}
//stackview1
stackView1.snp.makeConstraints { make in
make.top.bottom.left.right.equalTo(0)
}
//stackview2
stackView2.snp.makeConstraints { make in
make.top.bottom.left.right.equalTo(0)
}
blackView2.snp.makeConstraints { make in
make.width.equalTo(self.view).multipliedBy(0.30)
}
greenView2.snp.makeConstraints { make in
make.width.equalTo(self.view).multipliedBy(0.30)
}
yellowView2.snp.makeConstraints { make in
make.width.equalTo(self.view).multipliedBy(0.30)
}
didSetupConstraints = true
}
super.updateViewConstraints()
}
}
결과화면
https://github.com/choiks14/SnapkitTest
'swift > snapkit' 카테고리의 다른 글
| snapkit(12) (0) | 2017.07.02 |
|---|---|
| snapkit을 한 3주일 공부한 느낌 (0) | 2017.06.25 |
| snapkit(10) (0) | 2017.06.25 |
| snapkit(9) (0) | 2017.06.25 |
| snapkit(8) (0) | 2017.06.25 |