📖코드로 View를 만들어보자

1. view 인스턴스 생성

closure의 실행문 형태로 구현하면 view 속성 설정하는 코드를 closure 안에 쓸 수 있어서 코드가 깔끔✨

    private let mainLabel: UILabel = {
        let label = UILabel()
     
        // 여기에다가 속성들 설정
 
        return label
 
    }()
    
    private lazy var mainButton: UIButton = {
        let button = UIButton(type: .custom)
        
        // 여기에다가 속성들 설정
 
        return button
    }()
 
    private lazy var stackView: UIStackView = {
        let stview = UIStackView(arrangedSubviews: [mainLabel, mainButton])
 
        // 여기에다가 속성들 설정
 
        return stview
 
    }()

addTarget

속성 뿐만 아니라 addTarget을 통한 동작 설정도 클로져의 실행문 안에 작성

2. view 메모리에 올리기(표시)

⭐️ 어쨌든 핵심은 addSubview()

    private func configure() {
        [stackView, passwordResetButton].forEach { view.addSubview($0) }
    }
  • forEach를 통해서라면 stackView와 같이 묶여있는 View들을 올려주기 편하다
  • addSubview를 한 순서대로 view가 올라감(가장 마지막에 올린 게 가장 위로 올라감)

addSubview를 하지 않는다면?

autoLayout은 설정했는데 그 View는 없어 머야 이게!!!

3. Autolayout 설정

정말 하나하나 잡아줘야 함(겁나 헷갈려 ;-;) 어디를 기준으로 맞출건지에 대한 기준 필수 storyboard에서는 기본적으로 Safe Area를 기준으로 잡음

    private func makeAutoLayout() {
        NSLayoutConstraint.activate([
            notAutoView.topAnchor.constraint(equalTo: view.topAnchor, constant: 200),
            notAutoView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 8),
            notAutoView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 8),
            notAutoView.heightAnchor.constraint(equalToConstant: viewsHeight)
        ])
    }
  • equalToConstant : 직접적인 숫자로 제약을 설정 → 변수로 숫자를 설정한다면 변수값만 변경해도 손쉽게 싹 다 변경 가능