如何隐藏 WatchKit 滑块中的“+”和“-”按钮?

问题描述 投票:0回答:2

我想像原生 WatchKit 中给出的滑块一样显示进度。 但我想隐藏 + 和 - 按钮。

有什么办法可以实现这个目标吗?

enter image description here

ios objective-c swift watchkit watchos
2个回答
1
投票

得到了我的答案,

第 1 步: 前往 http://www.1x1px.me/(或任何可以创建 1Pixel 图像的网站)

第2步:选择任意颜色和不透明度0,然后下载图像

第 3 步: 使用此图像作为滑块的 Min ImageMax Image


0
投票
struct CustomSlider: View {
@Binding var value: Double
var range: ClosedRange<Double>
var onEditingChanged: (Bool) -> Void

//custom props view
var sizeCircle: CGFloat = 12
var height: CGFloat = 3
var tint: Color = .accentColor

var body: some View {
    GeometryReader { geometry in
        ZStack(alignment: .leading) {
            Capsule()
                .fill(Color.gray.opacity(0.5))
                .frame(height: height)
            
            Capsule()
                .fill(tint)
                .frame(width: self.progressWidth(geometry), height: height)
            
            Circle()
                .fill(Color.white)
                .frame(width: sizeCircle, height: sizeCircle)
                .offset(x: self.thumbOffset(geometry))
                .gesture(DragGesture()
                    .onChanged { value in
                        self.updateValue(geometry, value: value)
                        self.onEditingChanged(true)
                    }
                    .onEnded { value in
                        self.updateValue(geometry, value: value)
                        self.onEditingChanged(false)
                    }
                )
                .padding(.leading, 3)
        }
    }
    .frame(height: 10)
}

private func progressWidth(_ geometry: GeometryProxy) -> CGFloat {
    CGFloat((self.value - self.range.lowerBound) / (self.range.upperBound - self.range.lowerBound)) * geometry.size.width
}

private func thumbOffset(_ geometry: GeometryProxy) -> CGFloat {
    CGFloat((self.value - self.range.lowerBound) / (self.range.upperBound - self.range.lowerBound)) * geometry.size.width - 10
}

private func updateValue(_ geometry: GeometryProxy, value: DragGesture.Value) {
    let sliderRange = geometry.size.width
    let newValue = self.range.lowerBound + Double(value.location.x / sliderRange) * (self.range.upperBound - self.range.lowerBound)
    self.value = min(max(self.range.lowerBound, newValue), self.range.upperBound)
}

}

您可以自定义滑块,这适用于同一个滑块

© www.soinside.com 2019 - 2024. All rights reserved.