gpt4 book ai didi

ios - Swiftui - 仅显示 View 的百分比

转载 作者:行者123 更新时间:2023-12-01 15:40:58 25 4
gpt4 key购买 nike

我有一个 RoundedRectangle ,而我的目标是打下另一个 RoundedRectangle在它上面,覆盖显示“完成百分比”。不过,我似乎找不到合适的咒语来做到这一点。

我认为理想情况下,叠加层应该以某种方式仅显示其自身的一部分。调整自身大小以匹配百分比会扭曲叠加层的形状。

import PlaygroundSupport

struct ContentView: View {

@State private var value: Double = 0

var body: some View {
GeometryReader { geom in
VStack {
Slider(value: self.$value, in: 0...1, step: 0.01)

ZStack {
ZStack(alignment: .leading) {

// The main rectangle
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.frame(width: geom.size.width,
height: 200)

// The progress indicator...
RoundedRectangle(cornerRadius: 10)
.fill(Color.red)
.opacity(0.5)
.frame(width: CGFloat(self.value) * geom.size.width,
height: 200)
}

Text("\(Int(self.value * 100)) %")
}
}
}
.padding()
}
}

PlaygroundPage.current.setLiveView(ContentView())

在上面的操场中,如果您查看 1%、2% 甚至 3%,您可以看到红色叠加层超出了左上角和左下角的蓝色背景矩形边界。见下图。

Red overlay out of bounds...

我觉得这不是正确的解决方案,但我也找不到正确的组合(尝试 scaleEffect ,一堆 offsetposition 数学)来真正解决它。

对我来说,就像我上面说的,当值为 0.4 时,感觉叠加层应该能够说“只让我最左边的 40% 可见”。 .

那是冗长的,我为此道歉。如果你已经读到这里,并有任何建议要传授,我会非常感激。

谢谢!

最佳答案

如果我正确理解了您的担忧,这里有一个解决方案。使用 Xcode 11.4/iOS 13.4 测试。

demo

ZStack {
ZStack(alignment: .leading) {

// The main rectangle
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.frame(width: geom.size.width,
height: 200)

// The progress indicator...
RoundedRectangle(cornerRadius: 10)
.fill(Color.red)
.opacity(0.5)
.frame(width: CGFloat(self.value) * geom.size.width,
height: 200)
}
.clipShape(RoundedRectangle(cornerRadius: 10)) // << here !!

关于ios - Swiftui - 仅显示 View 的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62109961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com