본문 바로가기

swift/snapkit

snapkit(10)

stackview 가로로 같은 사이즈 만들기


1.stackview를 생성한다.(세로와 거의 동일하다)

distibution을 fillEqually로 설정하면 stackview의 세로에 맞게 자동적으로 높이를 계산한다.

spacing은 view간의 간격을 정해준다.


stackview에 view를 추가할때는 addSubView가 아니고 addArrangedSubview로 해줘야지 view가 정렬된 상태로 들어간다.


stackview안에 있는 view는 특별히 가로 세로를 넣을것이 아니면 constraint를 안줘도 된다.


import Foundation
import UIKit
import SnapKit


class Stack2ViewController: UIViewController {
  var didSetupConstraints = false

  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 view1:UIView = {
    let view = UIView()
    view.backgroundColor = .blue
    return view
  }()

  let view2:UIView = {
    let view = UIView()
    view.backgroundColor = .red
    return view
  }()


  override func viewDidLoad() {
    super.viewDidLoad()

    self.initUI()
  }

  override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
  }

  static func instance() -> Stack2ViewController {
    let vc = Stack2ViewController()
    return vc
  }
}


//snapkit
extension Stack2ViewController {
  func initUI() {
    self.view.backgroundColor = .white

    self.view.addSubview(stackView1)
    self.stackView1.addArrangedSubview(view1)
    self.stackView1.addArrangedSubview(view2)

    view.setNeedsUpdateConstraints()
  }

  override func updateViewConstraints() {
    if (!didSetupConstraints) {
      stackView1.snp.makeConstraints { make in
        make.top.equalTo(topLayoutGuide.snp.bottom)
        make.bottom.left.right.equalTo(0)
      }

      didSetupConstraints = true
    }

    super.updateViewConstraints()

  }
}


결과화면 





https://github.com/choiks14/SnapkitTest



'swift > snapkit' 카테고리의 다른 글

snapkit을 한 3주일 공부한 느낌  (0) 2017.06.25
snapkit(11)  (0) 2017.06.25
snapkit(9)  (0) 2017.06.25
snapkit(8)  (0) 2017.06.25
snapkit(7)  (0) 2017.06.25