[swift] 66.MarqueeLabel을 이용한 실시간 날씨 정보 스크롤 구현하기

이번 글에서는 MarqueeLabel을 사용하여 실시간 날씨 정보를 스크롤하는 방법을 알아보겠습니다. MarqueeLabel은 텍스트를 스크롤 형태로 표시하는 데 특화된 UILabel 서브클래스입니다. 이를 사용하여 날씨 정보를 스크롤하는 간단한 앱을 만들어보겠습니다.

1. MarqueeLabel 라이브러리 추가

먼저, 프로젝트에 MarqueeLabel 라이브러리를 추가해야합니다. Cocoapods를 사용하여 설치할 수 있습니다. 프로젝트의 Podfile에 다음을 추가하고 pod install 명령을 실행합니다.

pod 'MarqueeLabel'

설치가 완료되면, 프로젝트를 다시 빌드합니다.

2. MarqueeLabel 사용하기

MarqueeLabel은 UILabel을 상속하기 때문에 UILabel을 MarqueeLabel로 대체하여 사용할 수 있습니다. 먼저, Storyboard에서 UILabel을 추가하고, Identity Inspector에서 Custom Class를 MarqueeLabel로 설정합니다.

이후, 날씨 정보를 표시할 라벨을 IBOutlet으로 연결합니다.

@IBOutlet weak var weatherLabel: MarqueeLabel!

3. 실시간 날씨 정보 업데이트

날씨 정보를 받아오는 API 등을 사용하여 실시간으로 날씨 정보를 업데이트하고, 이를 MarqueeLabel에 표시합니다. 예를 들어, OpenWeatherMap API를 사용한다고 가정하고, fetchWeather 메서드를 다음과 같이 작성합니다.

func fetchWeather() {
    // OpenWeatherMap API를 사용하여 날씨 정보를 받아옵니다.
    // 받아온 날씨 정보를 weatherLabel에 표시합니다.
    // weatherLabel이 MarqueeLabel이므로, 스크롤되는 텍스트로 표시됩니다.
    
    // 예시코드
    let weather = "맑음"
    weatherLabel.text = weather
}

매번 날씨 정보를 업데이트할 때마다 fetchWeather 메서드를 호출하면, MarqueeLabel에 실시간으로 스크롤되는 날씨 정보가 표시됩니다.

4. 스크롤 속도 및 방향 조절

MarqueeLabel은 다양한 스크롤 속도와 방향을 지원합니다. 속도 및 방향을 조절하려면 다음과 같이 코드를 추가할 수 있습니다.

weatherLabel.type = .continuous
weatherLabel.animationCurve = .linear
weatherLabel.speed = .duration(20) // 스크롤 시간 설정
weatherLabel.fadeLength = 10 // 시작과 끝에 페이드 인/아웃 길이 설정

이렇게 설정하면, 날씨 정보가 연속적으로 스크롤되고 선형적인 애니메이션으로 표시됩니다. 스크롤 속도는 20초로 설정되고, 시작과 끝에 10픽셀의 페이드 인/아웃 효과가 추가됩니다.

마무리

이렇게 MarqueeLabel을 사용하여 실시간 날씨 정보를 스크롤하는 기능을 구현할 수 있습니다. MarqueeLabel을 사용하면 텍스트를 스크롤하는 다양한 기능을 손쉽게 구현할 수 있습니다.

참고 자료: