【发布时间】:2022-11-14 11:46:36
【问题描述】:
我正在使用以下代码 sn-p 来显示一个简单的星级评分视图:
struct ContentView: View {
@State var rating: Float = 1.0
var body: some View {
HStack(spacing: 4) {
ForEach (0 ..< filledStarsCount, id: \.self) { index in
Button {
rating = Float(index + 1)
} label: {
Image(systemName: "star.fill")
}
}
ForEach (0 ..< emptyStarsCount, id: \.self) { index in
Button {
rating = Float(index + filledStarsCount + 1)
} label: {
Image(systemName: "star")
}
}
}
.font(.title)
}
var emptyStarsCount: Int {
filledStarsCount == 5 ? 0 : abs(5 - filledStarsCount )
}
var filledStarsCount: Int {
let rounded = Int(rating)
if rounded > 5 {
return 5
}
else {
return rounded
}
}
}
但是每当我点击一个空星时,视图会在 iOS 16 中以一种奇怪的方式重新绘制,并在 iOS 15.5 中重新绘制(带有一点闪光),这是该问题的视频截图:
可以复制粘贴代码以在 XCode 中按原样进行试用。
【问题讨论】: