이놈의 티스토리는 사진 못올리는 버그를 아직도 수정하지 못했나보다. 아직도 사진이 올라가지 못한다.
이렇게 블로그 포스팅을 못한다고 공부를 안할 수는 없다는 생각에 일단 전광판 앱을 다 만들어봤다.
[SettingViewController]
import UIKit
protocol LEDBoardSettingDelegate: AnyObject {
func changedSetting(text: String?, textColor: UIColor, backgroundColor: UIColor)
}
class SettingViewController: UIViewController {
@IBOutlet weak var orangeButton: UIButton!
@IBOutlet weak var blueButton: UIButton!
@IBOutlet weak var blackButton: UIButton!
@IBOutlet weak var greenButton: UIButton!
@IBOutlet weak var purpleButton: UIButton!
@IBOutlet weak var yellowButton: UIButton!
@IBOutlet weak var textField: UITextField!
weak var delegate: LEDBoardSettingDelegate?
var ledText: String?
var textColor: UIColor = .yellow
var backgroundColor: UIColor = .black
override func viewDidLoad() {
super.viewDidLoad()
self.configureView()
}
private func configureView(){
if let ledText = self.ledText{
self.textField.text = ledText
}
self.changeTextColor(color: self.textColor)
self.changeBackgroundColorButton(color: self.backgroundColor)
}
@IBAction func tabTextColorButton(_ sender: UIButton) {
if sender == self.yellowButton {
self.changeTextColor(color: .yellow)
self.textColor = .yellow
}else if sender == self.purpleButton{
self.changeTextColor(color: .purple)
self.textColor = .purple
}else{
self.changeTextColor(color: .green)
self.textColor = .green
}
}
@IBAction func tabBackgroundColorButton(_ sender: UIButton) {
if sender == self.blackButton{
self.changeBackgroundColorButton(color: .black)
self.backgroundColor = .black
}else if sender == self.blueButton{
self.changeBackgroundColorButton(color: .blue)
self.backgroundColor = .blue
}else{
self.changeBackgroundColorButton(color: .orange)
self.backgroundColor = .orange
}
}
@IBAction func tabSaveButton(_ sender: Any) {
self.delegate?.changedSetting(
text: self.textField.text,
textColor: self.textColor,
backgroundColor: self.backgroundColor)
self.navigationController?.popViewController(animated: true)
}
private func changeTextColor(color : UIColor){
self.yellowButton.alpha = color == UIColor.yellow ? 1 : 0.2
self.purpleButton.alpha = color == UIColor.purple ? 1 : 0.2
self.greenButton.alpha = color == UIColor.green ? 1 : 0.2
}
private func changeBackgroundColorButton(color:UIColor){
self.blackButton.alpha = color == UIColor.black ? 1 : 0.2
self.blueButton.alpha = color == UIColor.blue ? 1 : 0.2
self.orangeButton.alpha = color == UIColor.orange ? 1 : 0.2
}
}
[ViewController]
import UIKit
class ViewController: UIViewController, LEDBoardSettingDelegate {
@IBOutlet weak var contentsLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.contentsLabel.textColor = .yellow
}
override func prepare(for segue:UIStoryboardSegue, sender: Any?){
if let settingViewController = segue.destination as? SettingViewController{
settingViewController.delegate = self
settingViewController.ledText = self.contentsLabel.text
settingViewController.textColor = self.contentsLabel.textColor
settingViewController.backgroundColor = self.view.backgroundColor ?? .black
}
}
func changedSetting(text: String?, textColor: UIColor, backgroundColor: UIColor) {
if let text = text{
self.contentsLabel.text = text
}
self.contentsLabel.textColor = textColor
self.view.backgroundColor = backgroundColor
}
}
크게 이렇게 두 가지로 코드를 나눌 수 있을 것 같다.
사진이 안올려져셔 어떻게 완성본을 보여줄 방법은 없지만, 이렇게 코드라도 남길 수 있으면...
이번 프로젝트는 뭔가 엄청 쉬워보일 것 같았는데 어려웠다. 핵심 기능이라 한다면
1. 앱 내에서 페이지를 왔다갔다 하는 방법
2. 페이지끼리 데이터를 주고받는 방법
3. 간단한 UI 구성 방법
정도로 나눌 수 있을 것 같다. 일단 기억에 남는 건 이정도이지만, 사실 이 중에 완벽하게 이해한 것은 하나도 없다. 그냥 인강을 따라했을 뿐...이제 이 3가지 요소를 집중적으로 따로 공부해서 이 프로젝트의 코드를 복습해야겠다.
원래 이런 느낌으로 산 인강이긴 하다. '일단 따라해보고 모르는 건 내가 따로 공부하자'가 원래 이 강의를 샀을 때의 내 마인드였지만 이렇게까지 이해를 못할 줄은 몰랐다.
'Swift 부수기' 카테고리의 다른 글
[Swift 부수기] 전광판 만들기 - (2) (0) | 2022.03.01 |
---|---|
[Swift 부수기] 전광판 앱 만들기 - (1) (0) | 2022.02.07 |
[Swift 부수기] Hugging priority와 Compression Resistance priority (0) | 2022.02.06 |
[Swift 부수기] 클래스와 구조체의 차이 (0) | 2022.02.05 |
[Swift 부수기] 옵셔널(optional) (0) | 2022.02.03 |