[iOS] LED 전광판 앱 만들기 (2 / 2)

Jamong·2023년 1월 26일
0

iOS 알아가기

목록 보기
11/14

[패스트캠퍼스] 30개 프로젝트로 배우는 iOS 앱 개발 with Swift 초격차 패키지 Online을 학습하면서 나오는 이론 내용과 공식 문서에서 필요한 내용을 발췌하여 정리한 글입니다.

Part2. Basic 2. LED 전광판 앱 만들기

코드 구현

먼저 설정 뷰의 SettingViewController에 오브젝트들을 연결 해주었고, 설정 값을 ViewController로 보내주기 위해 델리게이트를 생성하였다.

SettingViewController.swift

import UIKit

// 설정 및 변경값(텍스트, 텍스트 색상, 배경 색상) 넘겨주는 델리게이트 생성
protocol LEDBoardSettingDelegate: AnyObject {
	func changedSetting(text: String?, textColor: UIColor, backgroundColor: UIColor)
}

class SettingViewController: UIViewController {
	
    // Text Field
    @IBOutlet weak var textField: UITextField!
    
    // Text Colors
    @IBOutlet weak var greenButton: UIButton!
    @IBOutlet weak var purpleButton: UIButton!
    @IBOutlet weak var yellowButton: UIButton!
    
    // Background Colors
    @IBOutlet weak var blackButton: UIButton!
    @IBOutlet weak var blueButton: UIButton!
    @IBOutlet weak var orangeButton: UIButton!
    
    // 초기 세팅 값 지정
    weak var delegate: LEDBoardSettingDelegate?
    var ledText: String?
    var textColor: UIColor = .yellow
    var backgroundColor: UIColor = .black 

이후 초기 세팅 값 지정, 설정 뷰 저장값 유지 기능, 색상 버튼 선택 기능 및 처리, 저장 버튼 기능을 구현하였다.

	// 메모리 로드 호출 
    override func viewDidLoad() {
        super.viewDidLoad()
        // 설정 값 로드 
        self.configureView()
    }
    
	// 설정 값 초기화 방지 및 저장 기능 (설정 저장 후 LED 뷰에서 설정 뷰로 갔을 때 기존 값 유지)
    private func configureView() {
    	if let ledText = self.ledText {
        	self.textField.text = ledText
        }
        self.changeTextColor(
    
    // 글자 색상 버튼 눌림 기능
    @IBAction func tapTextColorButton(_ sender: UIButton) {
		if sender == self.yellowButton {
        	self.changeTextColor(color: .yellow)
            self.textColor = .yellow
        } else if sender == self.purpleButton {
        	self.changeTextColor(color: .purple)
        }
    }
            
    // 배경 색상 버튼 눌림 기능
    @IBAction func tpaBackgroundColorButton(_ 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 if sender == self.orangeButton {
        	self.changeBackgroundColorButton(color: .orange)
            self.backgroundColor = .orange
        }
    }
    
    // 글자 색상 버튼 활성화 처리 (삼항연산자 Alpha값 조정)
    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
    }
    
    // 배경 색상 버튼 활성화 처리 (삼항연산자 Alpha값 조정)
    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
    }
    
    // 저장 버튼 기능 (저장 및 색상 보내기)
    @IBAction func tapSaveButton(_ sender: UIButton) {
    	self.delegate?.changedSetting(
        	text: textField.text,
            textColor: textColor,
            backgroundColor: backgroundColor
        )
        // 이전 뷰로 이동
        self.navigationController?.popViewController(animated: true)
    }
}
profile
새해 목표 : 1일 1 깃, 블로그, 프로그래머스 2문제

0개의 댓글