슬라이드를 통해 값을 변경할 수 있는 슬라이더에 대해 알아보자.
// Created by Toughie on 2023/05/01.
//
import SwiftUI
struct SliderPrac: View {
@State var sliderValue: Double = 3
@State var textColor: Color = .green
var body: some View {
VStack {
Text("평점: ")
.font(.title2)
// Text("\(sliderValue)")
if sliderValue == 5 {
//String(format: String, CVarArg) 활용 소수점 한자리까지 표현
Text(String(format: "%.1f", sliderValue) + "⭐️")
.foregroundColor(Color.yellow)
.font(.title2)
} else {
Text(String(format: "%.1f", sliderValue))
.foregroundColor(textColor)
.font(.title2)
}
// Slider(value: $sliderValue)
// Slider(value: $sliderValue, in: 1...5)
// Slider(value: $sliderValue, in: 1...10, step: 0.5)
Slider(
//바인딩
value: $sliderValue,
//슬라이더 범위
in: 1...5,
//슬라이더 단위
step: 0.5,
label: {
Text("TITLE")
},
//최솟값
minimumValueLabel: {
Text("1")
.font(.headline)
},
//최댓값 표시
maximumValueLabel: {
Text("5")
.font(.headline)
},
onEditingChanged: { _ in
textColor = .pink
})
//.accentColor()가 deprecated되어서 .tint()를 쓰자.
.tint(.cyan)
}
.padding(.horizontal, 50)
}
}
+ CVarArg
CVarArg는 C 언어의 가변 인자(variadic argument)를 Swift에서 사용할 수 있도록 해주는 프로토콜이다.
C 언어에서 가변 인자는 함수의 인자로 갯수가 일정하지 않은 변수를 받을 때 사용한다.
Swift에서는 가변 인자를 처리하기 위해 "..." 연산자를 사용한다.
func sum(numbers: Int...) -> Int {
var total = 0
for number in numbers {
total += number
}
return total
}
let result = sum(numbers: 1, 2, 3, 4, 5) // 15
그러나 C 언어와 호환성을 유지하기 위해, CVarArg 프로토콜을 사용하여 C 언어에서 작성된 함수와 같은 가변 인자를 처리할 수 있다.
CVarArg 프로토콜은 C언어의 printf() 함수와 같은 형식 문자열을 지원한다.
따라서 CVarArg 프로토콜을 채택한 타입은
Swift의 문자열 보간(string interpolation) 기능과 같이 형식 문자열을 사용하여 값을 출력하는 기능을 지원할 수 있다.
예를 들어, Int나 Double 타입은 CVarArg 프로토콜을 채택하고 있으므로, 이들 타입을 형식 문자열에 사용하여 값을 출력할 수 있다.
[요약]
CVarArg 프로토콜은
swift에서 문자열 보간(String interpolation)이나 문자열 포맷팅(String formatting)을 위해 필요한 프로토콜.
'SwiftUI > SwiftUI(Basic)' 카테고리의 다른 글
42. [SwiftUI] 다크모드, 적응형 컬러 (0) | 2023.05.02 |
---|---|
41. [SwiftUI] Tab bar, TabView 탭바, 탭뷰 / PageTabViewStyle() (0) | 2023.05.01 |
39. [SwiftUI] Stepper() 스테퍼, Strideable (0) | 2023.05.01 |
38. [SwiftUI] DatePicker() 데이트피커 (0) | 2023.04.30 |
37. [SwiftUI] ColorPicker() 컬러피커 (0) | 2023.04.30 |