具有最大值的 SwiftUI 自定义滑块

Posted

技术标签:

【中文标题】具有最大值的 SwiftUI 自定义滑块【英文标题】:SwiftUI Custom Slider with max Value 【发布时间】:2020-03-04 20:01:59 【问题描述】:

我使用这个很棒的代码来获得一个滑块。 here

但是如何将最大值设置为 30 而不是 100?

这个例子是从 0 到 100。

希望大家帮忙。

struct CustomView: View 

@Binding var percentage: Float // or some value binded

var body: some View 
    GeometryReader  geometry in
        ZStack(alignment: .leading) 
            Rectangle()
                .foregroundColor(.gray)
            Rectangle()
                .foregroundColor(.accentColor)
                .frame(width: geometry.size.width * CGFloat(self.percentage / 100))
        
        .cornerRadius(12)
        .gesture(DragGesture(minimumDistance: 0)
            .onChanged( value in
                self.percentage = min(max(0, Float(value.location.x / geometry.size.width * 100)), 100)
            ))
    

【问题讨论】:

【参考方案1】:

您只需将 100 替换为 30 即可从 0 绑定到 30


struct CustomView: View 

    @Binding var percentage: Float // or some value binded

    var body: some View 
        GeometryReader  geometry in
            ZStack(alignment: .leading) 
                Rectangle()
                    .foregroundColor(.gray)
                Rectangle()
                    .foregroundColor(.accentColor)
                    .frame(width: geometry.size.width * CGFloat(self.percentage / 30))
            
            .cornerRadius(12)
            .gesture(DragGesture(minimumDistance: 0)
            .onChanged( value in
                self.percentage = min(max(0, Float(value.location.x / geometry.size.width * 30)), 30)
                print(self.percentage)
            ))
        
    

【讨论】:

并且矩形需要达到 100% 而不仅仅是 30% 您可以为您的视图矩形设置frame,这样最大值为30,不影响矩形的大小。 ` CustomView(percentage: $percentage) .accentColor(.red) .frame(width: 300, height: 44)`

以上是关于具有最大值的 SwiftUI 自定义滑块的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress革命滑块自定义页面

skrollr 冲突 bx 滑块自定义寻呼机?

php ACF块自定义字段查询

当滑块具有极端最大值时 UISlider MaximumTrackImage 剪辑

求教CAD用VBA二次开发怎样得到一个图块自定义属性的问题。

如何在 SwiftUI 中自定义 Slider 蓝线?