문법 기본 주차를 완료하고 오늘부터 UI를 이용한 앱 개발 입문에 들어갔다. 강의를 통해 들은 내용과 실습을 짧게 정리하고자 한다.
스토리보드를 이용하여 UI를 정의할 수 있지만, 코드를 통해 적용하는 것을 중점으로 공부하는 것이 좋을 것이라 생각한다.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else {return}
let window = UIWindow(windowScene: windowScene)
window.rootViewController = ViewController()
window.makeKeyAndVisible()
self.window = window
}
import UIKit
import SnapKit
class ViewController: UIViewController {
private var number = 0
let label = UILabel()
let minusButton = UIButton()
let plusButton = 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
minusButton.setTitle("감소", for: .normal)
minusButton.setTitleColor(.white, for: .normal)
minusButton.backgroundColor = .red
minusButton.layer.cornerRadius = 8
minusButton.addTarget(self, action: #selector(minusButtonTapped), for: .touchDown)
plusButton.setTitle("증가", for: .normal)
plusButton.setTitleColor(.white, for: .normal)
plusButton.backgroundColor = .blue
plusButton.layer.cornerRadius = 8
plusButton.addTarget(self, action: #selector(plusButtonTapped), for: .touchDown)
resetButton.setTitle("초기화", for: .normal)
resetButton.setTitleColor(.white, for: .normal)
resetButton.backgroundColor = .gray
resetButton.layer.cornerRadius = 8
resetButton.addTarget(self, action: #selector(ressetButtonTapped), for: .touchDown)
[label, minusButton, plusButton, resetButton]
.forEach { view.addSubview($0) }
label.snp.makeConstraints {
$0.width.equalTo(80)
$0.center.equalToSuperview()
}
minusButton.snp.makeConstraints {
$0.width.equalTo(60)
$0.height.equalTo(30)
$0.centerY.equalToSuperview()
$0.trailing.equalTo(label.snp.leading).offset(-32)
}
plusButton.snp.makeConstraints {
$0.width.equalTo(60)
$0.height.equalTo(30)
$0.centerY.equalToSuperview()
$0.leading.equalTo(label.snp.trailing).offset(32)
}
resetButton.snp.makeConstraints{
$0.width.equalTo(100)
$0.height.equalTo(30)
$0.centerX.equalToSuperview()
$0.top.equalTo(label.snp.bottom).offset(20)
}
}
@objc
private func minusButtonTapped(){
self.number -= 1
label.text = "\(number)"
}
@objc
private func plusButtonTapped(){
self.number += 1
label.text = "\(number)"
}
@objc
private func ressetButtonTapped(){
self.number = 0
label.text = "\(number)"
}
}