본문 바로가기

iOS (스파르타)/앱 개발 입문

카운터 앱 개발 - 코드베이스 SnapKit 미사용

 

튜터님이랑 잠깐 얘기하고 순간 엇,,, 스냅킷사용 안하고 어떻게 했지,,? 싶어서 해봤다

근데 이게 모람? ㅋㅋㅋㅋㅋ 왜? 안나오지?

싶었는데 

resetButton.translatesAutoresizingMaskIntoConstraints = false 요거 안넣어줬더라,,ㅎ

하,, 정말 헷갈리는 구만

성공했네요

 

UIKit으로만 작성한 코드!

import UIKit

class ViewController: UIViewController {
    
    private var number: Int = 0
    let label = UILabel()
    let plusButton = UIButton()
    let minusButton = UIButton()
    let resetButton = UIButton()

    override func viewDidLoad() {
        super.viewDidLoad()
        configureUI()
    }
    
    private func configureUI() {
        view.backgroundColor = .black
        label.text = "\(number)"
        label.textColor = .white
        label.font = .boldSystemFont(ofSize: 45)
        label.textAlignment = .center
        label.translatesAutoresizingMaskIntoConstraints = false
        
        minusButton.setTitle("감소", for: .normal)
        minusButton.backgroundColor = .red
        minusButton.setTitleColor(.white, for: .normal)
        minusButton.translatesAutoresizingMaskIntoConstraints = false
        minusButton.layer.cornerRadius = 8
        minusButton.addTarget(self, action: #selector(minusButtonTapped), for: .touchDown)
        
        plusButton.setTitle("증가", for: .normal)
        plusButton.backgroundColor = .blue
        plusButton.setTitleColor(.white, for: .normal)
        plusButton.translatesAutoresizingMaskIntoConstraints = false
        plusButton.layer.cornerRadius = 8
        plusButton.addTarget(self, action: #selector(plusButtonTapped), for: .touchDown)
        
        resetButton.setTitle("초기화", for: .normal)
        resetButton.backgroundColor = .gray
        resetButton.setTitleColor(.white, for: .normal)
        resetButton.translatesAutoresizingMaskIntoConstraints = false
        resetButton.layer.cornerRadius = 8
        resetButton.addTarget(self, action: #selector(resetButtonTapped), for: .touchDown)
        
        [label, minusButton, plusButton, resetButton]
            .forEach { view.addSubview($0) }
        
        NSLayoutConstraint.activate([
            label.widthAnchor.constraint(equalToConstant: 80),
            label.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            label.centerYAnchor.constraint(equalTo: view.centerYAnchor)
                ])
        
        NSLayoutConstraint.activate([
            minusButton.widthAnchor.constraint(equalToConstant: 60),
            minusButton.heightAnchor.constraint(equalToConstant: 30),
            minusButton.trailingAnchor.constraint(equalTo: label.leadingAnchor, constant: -32),
            minusButton.centerYAnchor.constraint(equalTo: label.centerYAnchor)
                ])
        
        NSLayoutConstraint.activate([
            plusButton.widthAnchor.constraint(equalToConstant: 60),
            plusButton.heightAnchor.constraint(equalToConstant: 30),
            plusButton.leadingAnchor.constraint(equalTo: label.trailingAnchor, constant: 32),
            plusButton.centerYAnchor.constraint(equalTo: label.centerYAnchor)
        ])

        NSLayoutConstraint.activate([
            resetButton.widthAnchor.constraint(equalToConstant: 80),
            resetButton.heightAnchor.constraint(equalToConstant: 30),
            resetButton.topAnchor.constraint(equalTo: label.bottomAnchor, constant: 100),
            resetButton.centerXAnchor.constraint(equalTo: view.centerXAnchor)
        ])
    }
    
    @objc
    private func minusButtonTapped() {
        self.number -= 1
        label.text = "\(number)"
    }
    
    @objc
    private func plusButtonTapped() {
        self.number += 1
        label.text = "\(number)"
    }
    
    @objc
    private func resetButtonTapped() {
        self.number = 0
        label.text = "\(number)"
    }


}