Skip to content

ViewController Convention

Mintaek Kim (Meenu) edited this page Oct 24, 2022 · 2 revisions
  • ViewController 안의 요소들은 Property, View, Life Cycle, Method 순으로 작성한다.
  • ViewControllerView는 아래와 같은 형식으로 작성한다.
let view: UIView = {
    $0.translatesAutoresizingMaskIntoConstraints = false
    return $0
}(UIView())
  • Life Cycle 내부에는 최소한의 코드만 작성한다.
  • ViewController 안에 뷰를 배치하는 것은 attribute, 뷰들을 꾸미는 것은 layout이라는 Method 안에 작성한다.
  • text를 사용할 수 있는 뷰들은 선언시 반드시 .text 요소를 초기화시킨다.
private lazy var label: UILabelView = {
    $0.text = "기본 내용" // text의 내용이 바뀔 수 있다하더라도 반드시 초기화 (""와 같은 빈 텍스트로라도 반드시 초기화해야 함)
    $0.translatesAutoresizingMaskIntoConstraints = false
    return $0
}(UILabelView())

ViewController 예시

import UIKit

final class ViewController: UIViewController {

    // MARK: - Property

    private let text: String = ""
    private let isShowing: Bool = true

    // MARK: - View

    private lazy var button: UIButton = { 
        $0.translatesAutoresizingMaskIntoConstraints = false
        return $0
    }(UIButton())

    // MARK: - Life Cycle

    override func viewDidLoad() {
        super.viewDidLoad()

        attribute()
        layout()
    }

    // MARK: - Method

    private func attribute() {
        // 배경위에 올리는 요소들 (배경색, 버튼 등)
        view.background = .white
        view.addSubView(button)
    }

    private func layout() {
       button.topAnchor.constraint(view.topAnchor, constraint: 30).isActive = true
    }
...
}

// MARK: - UICollectionViewDelegate

extension ViewController {

}