我想在swiftUI中创建一个视图,这样我就可以拖动视图并根据其当前偏移量旋转视图。但不幸的是,在平移视图后,当我尝试旋转时,它以其基础偏移为中心旋转,而不是视图的当前中心。我现在正在寻找一个精确的解决方案,使视图将从其当前中心旋转。我的代码在这里是为了更好地理解:
struct MyGestureView : View {
@State private var lastOffset : CGSize = .zero
@State private var offset : CGSize = .zero
@State private var lastRotation : Angle = .zero
@State private var rotation : Angle = .zero
var body: some View {
Rectangle()
.frame(width: 100, height: 100)
.offset(offset)
.rotationEffect(rotation)
.gesture(
DragGesture(minimumDistance: 0)
.onChanged({ value in
offset.width = lastOffset.width + value.translation.width
offset.height = lastOffset.height + value.translation.height
})
.onEnded({ value in
lastOffset = offset
})
)
.gesture(
RotationGesture(minimumAngleDelta: Angle.degrees(3))
.onChanged({ angle in
rotation = lastRotation + angle
})
.onEnded({ angle in
lastRotation = rotation
})
)
}
}
字符串
1条答案
按热度按时间63lcw9qa1#
先 * 旋转视图,不添加任何偏移,以便正确旋转视图。然后可以添加偏移,这不会影响旋转。
即交换
rotationEffect
和offset
的顺序:字符串