[Swift] iOS Charts ValueFormatter 커스텀 하기
- 언어/스위프트
- 2023. 12. 5.
반응형
스위프트 Charts 라이브러리
iOS 개발을 하다보면 다음과 같은 차트 라이브러리를 많이 사용하게 됩니다. 차트 라이브러리를 사용하게 되면 그중에 ValueFormatter를 커스텀 해야 할 때가 있습니다. 텍스트의 크기나 라벨의 문구를 반복적으로 수정하는 일이 필요할 때 사용하며 때에 따라 알맞게 사용하면 됩니다.
https://github.com/danielgindi/Charts/tree/master
▼ 해당 값을 수정하기 위해서 다음과 같이 ValueFormatter를 상속한 클래스를 하나 만들어 줍니다. fileprivate 로 numberFormatter를 선언하고 init 하는 시점에 초기화 해줍니다. stringForValue 함수에서 변환할 값을 받아 올 수 있는데 이때 반환할 값을 적절한 값으로 처리해주면 됩니다. 저 같은 경우는 값에 km/L 즉 리터당 키로수를 표기해야 했기 때문에 다음과 같이 처리 했습니다.
class ChartValueFormatter: NSObject, ValueFormatter {
fileprivate var numberFormatter: NumberFormatter?
convenience init(numberFormatter: NumberFormatter) {
self.init()
self.numberFormatter = numberFormatter
}
func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String {
guard let numberFormatter = numberFormatter
else {
return ""
}
return "\(numberFormatter.string(for: value) ?? "")km/L"
}
}
▼ 커스텀 ValueFormatter를 생성했다면 다음과 같이 numberFormatter를 우선 만들어 주고 ChartValueFormatter 생성시 전달해주고 dataSet 에 추가 해주면 됩니다.
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.locale = Locale.current
dataSet.valueFormatter = ChartValueFormatter(numberFormatter: numberFormatter)
dataSet.valueFont = dataSet.valueFont.withSize(15)
let chartData = BarChartData(dataSet: dataSet)
chartData.barWidth = 0.3
반응형
'언어 > 스위프트' 카테고리의 다른 글
[Swift] UIPasteboard 클립보드(clipboard) 붙여넣기 (0) | 2024.04.02 |
---|---|
[Swift] 배열에 다른 배열 추가하기 (0) | 2024.02.21 |
[Swift] 스위프트 [String: Any?] 타입에서 Any? nil 값 다루기 (0) | 2023.11.14 |
[UIKit] UIView 라운드 Shadow 그림자 박스 카드 만들기 (0) | 2023.07.15 |
[Swift] iCloud 파일 첨부 기능 만들기 (3) | 2023.05.26 |