앞서 만들었던 NavigationController를 이용해 가벼운 조건문을 이용한 배경색 바꾸기를 만들어보았음.
기존의 로그인화면에서 로그인 버튼을 누르게 되면 배경색을 바꾸게 되는 화면으로 넘어가게 함.
import UIKit
class LoginViewController: UIViewController {
@IBOutlet weak var loginBtn: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
//상단 네비게이션 바 숨김 처리
self.navigationController?.isNavigationBarHidden = true
loginBtn.addTarget(self, action: #selector(moveToMainViewController), for: .touchUpInside)
}
@objc fileprivate func moveToMainViewController(){
print("LoginViewController - moveToMainController() called")
let mainViewController = MainViewController()
self.navigationController?.pushViewController(mainViewController, animated: true)
}
}
로그인 버튼을 누르게 되면 pushViewController로 mainViewController로 push. 이는 액션에 관련된 함수이며 viewDidLoad에서 addTarget을 해준 뒤에 사용.
코드만으로 새로운 뷰 컨트롤러를 만들어주고 버튼을 이용해 색을 바꿀 수 있도록 해줌.
import Foundation
import UIKit
class MainViewController: UIViewController {
//제목
var titleLabel: UILabel = {
let label = UILabel()
label.text = "메인화면"
label.textAlignment = .center
label.font = UIFont.boldSystemFont(ofSize: 50)
label.textColor = .white
return label
}()
var colorBtn: UIButton = {
let btn = UIButton(type: .system) //system으로하면 클릭했을때 효과가 나타남
btn.setTitle("배경색 바꾸기", for: .normal)
btn.setTitleColor(.black, for: .normal)
btn.titleLabel?.font = UIFont.boldSystemFont(ofSize: 20)
btn.backgroundColor = UIColor.white
btn.layer.cornerRadius = 5
btn.contentEdgeInsets = UIEdgeInsets(top: 5, left: 20, bottom: 5, right: 20)
btn.addTarget(self, action: #selector(changeBg), for: .touchUpInside)
return btn
}()
var isBgOrange: Bool?
//뷰가 생성되었을때
override func viewDidLoad() {
super.viewDidLoad()
isBgOrange = true
view.backgroundColor = .orange
view.addSubview(titleLabel)
titleLabel.translatesAutoresizingMaskIntoConstraints = false
titleLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
view.addSubview(colorBtn)
colorBtn.translatesAutoresizingMaskIntoConstraints = false
colorBtn.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 20).isActive = true
colorBtn.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
}
@objc fileprivate func changeBg(){
print("changeBg called")
if isBgOrange == true {
view.backgroundColor = #colorLiteral(red: 0.9686274529, green: 0.78039217, blue: 0.3450980484, alpha: 1)
isBgOrange = false
} else {
view.backgroundColor = .orange
isBgOrange = true
}
}
}
아래의 @objc함수에서 조건문을 이용해 isBgOrange가 true일 경우엔 색을 바꿔주게 되고, 기존의 색에서 바뀌었기때문에 isBgOrange를 false로 바꿔주었음.
굉장히 기본적인 조건문을 이용한 코드지만 중요하다고 생각한다.