[swift] Swift Charts에서 차트 스크롤링 기능 추가하기

Swift Charts는 iOS 개발자들이 사용하는 인기있는 차트 라이브러리입니다. 이 라이브러리를 사용하면 간단하게 다양한 종류의 차트를 만들 수 있습니다. 그러나 기본적으로는 정적인 차트로만 표현됩니다. 이번 튜토리얼에서는 Swift Charts에 차트 스크롤링 기능을 추가하는 방법을 알아보겠습니다.

1. 준비하기

먼저, Swift Charts를 설치해야 합니다. 이를 위해 CocoaPods를 사용할 것입니다. 터미널을 열고 프로젝트 폴더로 이동한 다음, 다음 명령어를 실행합니다.

$ pod init

Podfile이 생성되면, 편집기를 열어 다음과 같이 작성합니다.

platform :ios, '13.0'
use_frameworks!

target 'YourProjectName' do
  # 다른 팟들...
  pod 'Charts'
end

Podfile을 저장한 다음, 다음 명령어로 Swift Charts를 설치합니다.

$ pod install

2. 스크롤링 가능한 차트 만들기

2.1. 라이브러리 가져오기

새로운 Swift 파일을 생성하고, 다음과 같이 필요한 모듈을 import합니다.

import UIKit
import Charts

2.2. 스크롤 가능한 차트 뷰 만들기

UIViewController 클래스를 상속받는 새로운 클래스를 생성하고, UIScrollViewLineChartView를 추가합니다.

class ScrollableChartViewController: UIViewController {

    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var chartView: LineChartView!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 스크롤 가능한 차트 뷰 설정
        scrollView.isScrollEnabled = true
        scrollView.contentSize = CGSize(width: 1000, height: chartView.frame.height)
        scrollView.addSubview(chartView)
    }
}

2.3. 차트 데이터 로드하기

private func loadChartData() {
    // 차트에 표시할 데이터 배열 생성
    let values = (0..<100).map { (i) -> ChartDataEntry in
        let val = Double(arc4random_uniform(100) + 1)
        return ChartDataEntry(x: Double(i), y: val)
    }

    let dataSet = LineChartDataSet(entries: values, label: "Data")
    let data = LineChartData(dataSet: dataSet)
    
    // 차트 설정
    chartView.data = data
    chartView.chartDescription?.text = "Scrollable Chart"
    
    // X축 스크롤 가능하도록 설정
    chartView.setVisibleXRangeMaximum(10)
    chartView.moveViewToX(50)
}

2.4. 뷰 컨트롤러에 차트 뷰 추가하기

StoryBoard에서 해당 클래스를 선택한 후, ScrollViewLineChartView를 추가합니다. ScrollViewLineChartView를 프로퍼티에 연결한 다음, loadChartData 함수를 호출하여 차트 데이터를 로드합니다.

3. 실행 및 테스트

앱을 실행하여 스크롤 가능한 차트를 확인해보세요. 스크롤하면 차트가 함께 움직이는 것을 볼 수 있습니다.

이제 당신은 Swift Charts에 스크롤링 기능을 추가하는 방법을 알게 되었습니다. 이를 응용하여 다양한 형태의 스크롤링 가능한 차트를 만들어보세요!