我已经看到了一些类似的例子,例如如何在 SwiftUI 中正确设置可调整的拆分视图?以及如何通过从边缘拖动来调整 UIView 的大小?但我找不到与 SwiftUI 正确相关的确切内容
我有一个视图,我希望用户能够通过视图右侧的“抓取栏”调整宽度。当用户向左(减小视图宽度)和向右(增加视图宽度)拖动此栏时。我该怎么做呢?
在示例中,RedRectangle
我认为我正在尝试调整由 a 组成的Rectangle
以及Resizer
被操纵来调整大小的。我在这里做错了什么?
此外,没有逐渐增加/减少帧的动画/过渡,它似乎只是跳跃。我怎样才能做到这一点?
此处链接的可重现示例:
import SwiftUI
struct ContentView: View {
@State var resizedWidth: CGFloat?
var body: some View {
HStack(alignment: .center) {
Spacer()
RedRectangle(width: 175, resizedWidth: resizedWidth)
Resizer()
.gesture(
DragGesture()
.onChanged({ value in
resizedWidth = max(80, resizedWidth ?? 0 + value.translation.width)
})
)
Spacer()
}
}
}
struct RedRectangle: View {
let width: CGFloat
var resizedWidth: CGFloat?
var body: some View {
Rectangle()
.fill(Color.red)
.frame(width: resizedWidth != nil ? resizedWidth : width, height: 300)
.frame(minWidth: 80, maxWidth: 400)
}
}
struct Resizer: View {
var body: some View {
Rectangle()
.fill(Color.blue)
.frame(width: 8, height: 75)
.cornerRadius(10)
}
}