SnapKit 알아보기

Tabber·2021년 9월 25일
0

기술스택

목록 보기
3/6

기술 스택 정리하기 세 번째 : SnapKit

SnapKit?

스냅킷은 iOS 앱 개발 시 핵심 요소인 오토 레이아웃을 조금 쉽게 사용할 수 있게 만들어진 라이브러리이다.
기존의 오토레이아웃 코드는 길고, 생각보다 복잡했다.
그래서 SnapKit을 사용하는 곳들이 많은 상황이다.

SnapKit 사용해보기

// MARK: - UI 세팅
    func settingUI() {
        // 타이틀
        view.addSubview(plusTitleLabel)
        plusTitleLabel.snp.makeConstraints {
            $0.top.equalTo(view.safeAreaLayoutGuide.snp.top).offset(10)
            $0.left.equalTo(view.safeAreaLayoutGuide.snp.left).offset(20)
        }
        // 텍스트 입력 창
        view.addSubview(writingTextView)
        writingTextView.snp.makeConstraints {
            $0.centerX.equalToSuperview()
            $0.height.equalTo(150)
            $0.leading.equalTo(view.safeAreaLayoutGuide.snp.leading)
            $0.trailing.equalTo(view.safeAreaLayoutGuide.snp.trailing)
            $0.centerY.equalToSuperview().offset(100)
        }
       . . .
}

이렇게 뷰를 생성하고 난 뒤에, 뷰에서의 크기나 위치를 지정할 때 SnapKit을 사용하면 기존에 존재했던 오토레이아웃 코드보다 훨씬 깔끔하게 코드를 작성할 수 있다.

SnapKit의 몇가지 기능들만 알아보자.

snp.makeConstraints

makeConstraints 를 통해 해당 view의 오토 레이아웃을 생성할 수 있다.

view1.snp.makeConstraints { (make) -> Void in
  self.topConstraint = make.top.equalTo(superview).offset(padding.top).constraint
  make.left.equalTo(superview).offset(padding.left)
}

snp.updateConstraints

Alternative if you are only updating the constant value of the constraint you can use the method snp.updateConstraints instead of snp.makeConstraints
제약 조건의 상수 값만 업데이트 하는 경우 makeConstraints , 대신 updateConstraints 를 사용할 수 있다.

override func updateConstraints() {
    self.growingButton.snp.updateConstraints { (make) -> Void in
        make.center.equalTo(self);
        make.width.equalTo(self.buttonSize.width).priority(250)
        make.height.equalTo(self.buttonSize.height).priority(250)
        make.width.lessThanOrEqualTo(self)
        make.height.lessThanOrEqualTo(self)
    }

위 코드는 실제 필자 과제에 적용을 해보고 싶었지만, 어떤 이유에서인지 에러가 많이 났었다. 아마도 크기나 길이 정도만 바꾸는 용도로 사용할 수 있나보다.

snp.remakeConstraints

snp.remakeConstraints is similar to snp.makeConstraints, but will first remove all existing constraints installed by SnapKit.
remakeConstraintsmakeConstraints와 유사하다. 하지만 먼저 SnapKit으로 정의된 모든 Constraints를 제거한다.

func changeButtonPosition() {
  self.button.snp.remakeConstraints { (make) -> Void in 
    make.size.equalTo(self.buttonSize)

    if topLeft {
      make.top.left.equalTo(10)
    } else {
      make.bottom.equalTo(self.view).offset(-10)
      make.right.equalTo(self.view).offset(-10)
    }
  }
}

이렇게 remakeConstraints 비슷한 행동을 하긴 하지만, 이미 정의 되어있는 것을 다 지우고 새로 적용하는 것에서 다른 점을가지고 있다.

이렇게 오토 레이아웃을 쉽게 사용할 수 있는 SnapKit에 대해 알아보았다.

profile
iOS 정복중인 Tabber 입니다.

0개의 댓글