ios - Swift:移动后恢复 UIView 中心

标签 ios swift value-type

我正在使用手势来缩放和移动 UIImageView(例如 Instagram 缩放)。当手势结束时,我想恢复 UIImageView 初始位置,但我无法获得初始中心的副本,因为它是引用类型。使用:

let prevCenter = myImage.center

当然没用。如何复制?

最佳答案

在缩放和移动时应用transform 来查看。最后只需设置 .identity 值即可。

编辑

例子:

@IBOutlet weak var butt: UIButton!

var offsetTransform: CGAffineTransform = .identity
var zoomTransform: CGAffineTransform = .identity

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    let pan = UIPanGestureRecognizer(target: self, action: #selector(onPan(pan:)))
    pan.minimumNumberOfTouches = 2
    pan.delegate = self
    view.addGestureRecognizer(pan)

    let pinch = UIPinchGestureRecognizer(target: self, action: #selector(onPinch(pinch:)))
    pinch.delegate = self
    view.addGestureRecognizer(pinch)
}

@objc func onPinch(pinch: UIPinchGestureRecognizer) {
    let s = pinch.scale
    zoomTransform = CGAffineTransform(scaleX: s, y: s)
    butt.transform = offsetTransform.concatenating(zoomTransform)
    if (pinch.state == .ended) {
        finish()
    }
}

@objc func onPan(pan: UIPanGestureRecognizer) {
    let t = pan.translation(in: view)
    offsetTransform = CGAffineTransform(translationX: t.x, y: t.y)
}

func updatePos() {
    butt.transform = offsetTransform.concatenating(zoomTransform)
}

func finish() {
    butt.transform = .identity
}

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}

关于ios - Swift:移动后恢复 UIView 中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57361342/

相关文章:

ios - 如何将 NSMutableOrderedSet 转换为泛型数组?

ios - 如何在调用 dealloc 后停止运行该 block ? IOS

ios - 如何在 Swift 中将 UnsafeMutablePointer<AudioBufferList> 转换为 AudioBuffer?

c# - 值类型相对于引用类型的好处?

arrays - 为什么我不能在其 willSet 事件中从数组中删除元素?

function - 这个 '()' 表示法是什么意思?

ios - 无法将 Swift CMTimeRange 转换为 Float 或获取数字?

ios - NetworkReachabilityManager 或 Reachability 无法识别在没有互联网的情况下连接 wifi

ios - 如何停用我的限制?

python - 像 swift 一样在 python 中进行类扩展?