当我们在UIScrollView中用两个手指进行多点触控时,我们得到两个CG点.我想找到它们之间的距离.然后我们再次进行捏(内部或外部),然后我们将再次得到两个点.然后在找到这两点之间的距离之后,我想决定是否捏入或捏出.如果我已经收入,肯定新的距离会更小,反之亦然.
但是不知道如何找到2点之间距离的准确测量值来进行比较?有人对此有所了解吗?
两点之间的距离:
sqrt((x1-x2)^2 + (y1-y2)^2)
Run Code Online (Sandbox Code Playgroud)
有没有办法在Objective-C中更快地完成这个数学运算?
编辑:我想我需要澄清一下.我写了上面的公式只是为了澄清我用来计算距离的公式.^并不意味着代表xor - 我只想表示数学公式而不使用任何函数,如pow或任何东西,所以我的意思是使用^来"提升电源".我想知道是否有人知道是否使用按位运算符,或者在汇编中编写代码会给出优化版本.我在iPhone/iPad应用程序中使用该公式.
我想在 SwiftUI 中实现循环拖动,但不确定最好的方法。
这是基本的拖动代码 - 有一个小的可拖动圆圈,我想updating在 DragGesture 阶段将其限制在较大圆圈的范围内。目前,黑色圆圈可在整个视图中拖动。
import SwiftUI
struct ContentView: View {
@State private var position = CGSize.zero
@GestureState var dragOffset: CGSize = .zero
private var dragRadius: CGFloat = 200.0
var body: some View {
ZStack {
Circle()
.fill(Color.red)
.frame(width: dragRadius, height: dragRadius)
Circle()
.fill(Color.black)
.frame(width: dragRadius / 4, height: dragRadius / 4)
.offset(x: position.width + dragOffset.width, y: position.height + dragOffset.height)
.gesture(
DragGesture()
.updating($dragOffset, body: { (value, state, transaction) in
// Need to clamp to circular …Run Code Online (Sandbox Code Playgroud)