궁금한 내용을 검색해보세요!
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
서근 개발노트
티스토리에 팔로잉
SWIFTUI/View layout

SwiftUI : Slider

서근
QUOTE THE DAY

-
Written by SeogunSEOGUN

반응형

Slider에 대해 알아보도록 합시다.

Silder

SwiftUI에서 SliderUISlider와 비슷하게 작동하지만, 반듯이 값일 지정할 수 있도록 어딘가에 바인딩 해야합니다.

 

상성을 할때 제공할 수 있는 매개변수는 다양하지만, 가장 중요한 매개변수는 다음과 같습니다.

 

Value : What Double to bind it to

In : 슬라이더의 범위

Step : 슬라이더를 이동할 때 값을 변경하는정도

 

struct ContentView: View {
           //sliderValue:Double 생략가능
    @State private var sliderValue = 0.0
    
    var body: some View {
        VStack {
            Slider(value: $sliderValue, in: -100...100, step: 1)
            Text("\(sliderValue)")
        }
    }
}

struct ContentView: View {
     //1.
    @State private var sliderValue = 0.0
    var minimumValue = 0.0
    var maximumValue = 100.0
    
    var body: some View {
        VStack {
            HStack {
                     //Int 값 안에 더블값
                Text("\(Int(minimumValue))")
                
                //2.
                Slider(value: $sliderValue, in: minimumValue...maximumValue)
                
                Text("\(Int(maximumValue))")
            }
            .padding()
            //3.
            Text("슬라이더 값은 '\(Int(sliderValue))' 입니다.")
        }
    }
}

struct ContentView: View {
     
    @State private var sliderValue: Double = 25
    
    var body: some View {
        VStack {
            HStack {
                Text("0")
                Slider(value: $sliderValue, in: 1...100)
                Text("100")
                //Text를 바인딩형태가 아닌 Int값을 줬기때문에 숫자가 오르지 않음
            }
            .padding(30)
            Text("슬라이더 값은 '\(sliderValue)' 입니다.")
        }
    }
}

위에 코드처럼 작성하면 아래와 같은 결과값을 보여주는데, Double값을 할당 해줬기 때문에 소수점이 보기싫게 나옵니다.

 

이럴때에는 아래와 같이 코드를 수정해줘야 합니다. specifier: "%.2f"를 추가해줍니다. Sliderstep을 넣어줘서 이동할때마다 0.5씩 늘어나도록 해줄께요.

struct ContentView: View {
     
    @State private var sliderValue: Double = 25
    
    var body: some View {
        VStack {
            HStack {
                Text("0")
                Slider(value: $sliderValue, in: 1...100, step: 0.5)
                Text("100")
                //Text를 바인딩형태가 아닌 Int값을 줬기때문에 숫자가 오르지 않음
            }
            .padding(30)
                                       //소수점 2자리수 까지만 보여줌
            Text("슬라이더 값은 '\(sliderValue, specifier: "%.2f")' 입니다.")
        }
    }
}

SliderColor를 추가해줄 수 도 있습니다.

Slider(value: $sliderValue, in: 1...100, step: 0.5)
      .accentColor(.orange)

또한 아래 코드와 같이 다양한 방법으로 구현할 수 있습니다. 직접 코드를 확인해보면서 어떤식으로 하는것이 더 편한 방법인지 확인해보시는것을 추천드립니다. 😁

import SwiftUI

struct SliderView: View {
    @State var sliderValue1: Double = 50
    @State var sliderValue2: Double = 50
    @State var color: Color = .red
    
    var minimumValueLable: Double = 0.0
    var maximumValueLable: Double = 100
    
    var body: some View {
        VStack {
            Text("슬라이더")
                .font(.title)
                .padding(.bottom, 100)
            
            HStack {
                Text("현재 슬라이더의 값은")
                Text(
                    (String(format: "%.0f", sliderValue1))
                )
                Text("입니다.")
            }
            
            HStack {
                Text("\(Int(minimumValueLable))")
            Slider(value: $sliderValue1, in: 0...100, step: 10.0)
                Text("\(Int(maximumValueLable))")
            }
          
            Divider().padding(.vertical, 50)
     /*                                                         */


            Text("현재 슬라이더의 값은 \(sliderValue2, specifier: "%.0f") 입니다.")
                .foregroundColor(color)
            
            Slider(value: $sliderValue2,
                   in: 0...100, step: 1.0,
                   
                   //실행이 되면 구현될 액션
                   onEditingChanged: { (_) in
                    color = .blue
                   },
                   minimumValueLabel: Text("0"),
                   maximumValueLabel: Text("100")) {
                
                Text("some lable")
            }
            .accentColor(.orange)
        }
        .padding()
    }
}

 

 

읽어주셔서 감사합니다🤟

 

본 게시글의 전체코드 GitHub 👇🏻

 

Seogun95/SwiftUI_Slider_TUT

Slider에 대해 알아봅시다. Contribute to Seogun95/SwiftUI_Slider_TUT development by creating an account on GitHub.

github.com

참고하면 좋은 게시글👇🏻

 

SwiftUI Project2 : Slider

#1 Slider를 사용하여 프로젝트를 만들어보겠습니다. 첫번째로, ContentView에 NavigationView 를 생성해서 NavigationBarTitle을 "국기" 로 정해주겠습니다, struct ContentView: View { let flag = ["🇰🇷", "🇺..

seons-dev.tistory.com

'SWIFTUI > View layout' 카테고리의 다른 글

SwiftUI : Lazy V(H)Stack  (0) 2021.02.06
SwiftUI : SearchView  (0) 2021.02.03
SwiftUI : Divider 구분선  (0) 2021.01.31
SwiftUI : Group / GroupBox  (0) 2021.01.27
SwiftUI : DatePicker / DateFormatter  (0) 2021.01.25

잘못된 내용이 있으면 언제든 피드백 부탁드립니다.


서근


위처럼 이미지 와 함께 댓글을 작성할 수 있습니다.