[swift] NumberMorphView를 활용하여 화폐 변환기 애플리케이션 구현하기

소개

이번 글에서는 Swift 프로그래밍 언어를 사용하여 화폐 변환기 애플리케이션을 구현하는 방법을 알아보겠습니다. 화폐 변환기는 사용자가 입력한 금액을 다른 화폐 단위로 변환해주는 기능을 제공하는 애플리케이션입니다. 이를 위해 NumberMorphView라는 사용자 정의 뷰를 활용하여 숫자 애니메이션 효과를 구현할 것입니다.

개발 환경 설정

먼저, 개발 환경을 설정해야 합니다. Xcode를 설치하고, 새로운 Swift 프로젝트를 생성합니다.

NumberMorphView 추가

NumberMorphView는 화면에 애니메이션 효과를 주기 위한 사용자 정의 뷰입니다. 이를 위해 ‘NumberMorphView.swift’라는 파일을 생성하고 다음과 같은 코드를 작성합니다.

import UIKit

class NumberMorphView: UIView {
    private var digitLabels: [UILabel] = []

    var value: Double = 0 {
        didSet {
            updateDigitLabels()
        }
    }

    override func awakeFromNib() {
        super.awakeFromNib()
        
        setupDigitLabels()
        updateDigitLabels()
    }

    private func setupDigitLabels() {
        for i in 0...9 {
            let digitLabel = UILabel()
            digitLabel.font = UIFont.monospacedDigitSystemFont(ofSize: 24, weight: .bold)
            digitLabel.textAlignment = .center
            digitLabels.append(digitLabel)
            addSubview(digitLabel)
        }
    }

    private func updateDigitLabels() {
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .decimal

        guard let formattedValue = numberFormatter.string(from: NSNumber(value: value)) else {
            return
        }

        let digits = Array(formattedValue)

        for (index, digitLabel) in digitLabels.enumerated() {
            digitLabel.text = String(digits[index])
        }
    }
}

위의 코드는 NumberMorphView라는 사용자 정의 뷰를 구현한 것입니다. 이 뷰는 value라는 프로퍼티를 가지고 있으며, 이 값에 변화가 생기면 해당 숫자를 화면에 애니메이션 효과와 함께 표시합니다.

화폐 변환기 애플리케이션 구현

이제 화폐 변환기 애플리케이션을 구현해보겠습니다. 새로운 뷰 컨트롤러 파일을 생성하고 ‘CurrencyConverterViewController.swift’라는 이름으로 저장한 후, 다음과 같은 코드를 작성합니다.

import UIKit

class CurrencyConverterViewController: UIViewController {
    @IBOutlet private var dollarAmountLabel: NumberMorphView!
    @IBOutlet private var euroAmountLabel: NumberMorphView!

    @IBAction private func convertButtonTapped(_ sender: UIButton) {
        let dollarAmount = Double.random(in: 1...1000)
        let euroAmount = convertToEuro(dollarAmount: dollarAmount)

        dollarAmountLabel.value = dollarAmount
        euroAmountLabel.value = euroAmount
    }

    private func convertToEuro(dollarAmount: Double) -> Double {
        // 화폐 변환 로직을 구현하세요.
        // 예시로 1달러는 0.85유로로 변환되도록 설정하겠습니다.
        let euroAmount = dollarAmount * 0.85

        return euroAmount
    }
}

위의 코드는 CurrencyConverterViewController라는 뷰 컨트롤러를 구현한 것입니다. dollarAmountLabel과 euroAmountLabel은 NumberMorphView와 연결된 UI 요소입니다. 사용자가 변환 버튼을 탭하면 무작위로 생성한 달러 금액을 유로로 변환하여 화면에 표시합니다.

Storyboard 설정

마지막으로, Main.storyboard 파일을 열고 CurrencyConverterViewController와 NumberMorphView를 연결해야 합니다.

  1. Main.storyboard에서 CurrencyConverterViewController의 View와 NumberMorphView 인스턴스를 확인합니다.
  2. CurrencyConverterViewController의 View와 NumberMorphView를 Ctrl + 드래그하여 연결합니다.
  3. dollarAmountLabel과 euroAmountLabel을 해당 NumberMorphView 인스턴스와 연결합니다.

마무리

이제 모든 설정이 완료되었습니다. 시뮬레이터에서 프로젝트를 실행하여 화폐 변환기 애플리케이션을 테스트해보세요. 변환 버튼을 탭할 때마다 임의의 달러 금액이 유로로 변환되어 애니메이션과 함께 화면에 표시될 것입니다.

이 글은 NumberMorphView를 사용하여 화폐 변환기 애플리케이션을 구현하는 방법을 소개했습니다. NumberMorphView를 사용하면 숫자 애니메이션 효과를 쉽게 구현할 수 있으며, 이를 활용하여 다양한 애플리케이션을 개발할 수 있습니다.

참고 자료