使用 UIPanGestureRecognizer 移动和缩放 UIView

Posted

技术标签:

【中文标题】使用 UIPanGestureRecognizer 移动和缩放 UIView【英文标题】:Moving and scaling UIView with UIPanGestureRecognizer 【发布时间】:2017-11-08 16:24:01 【问题描述】:

我在 self.view 上有一个 UIView 添加子视图。

我想当 UIPanGestureRecognizer 到右/左/上/下是 UIView 移动和缩放跟随触摸。

当 UIView 宽度/高度小 0.5 宽度/高度时 self.view 是 UIView 将关闭。

请建议帮助我?

【问题讨论】:

【参考方案1】:

假设您有 vc - ViewController 并且您的 UIView A 是 vc 的子视图。您可以将 UIPanGestureRecognizer 添加到 A。然后将 panGestureRegonizer 作为操作拖到您的 vc 中:

@IBAction func panGestureAction(_ sender: UIPanGestureRecognizer) 
        UIView.animateKeyframes(withDuration: 0.1, delay: 0, options: UIViewKeyframeAnimationOptions.calculationModeLinear, animations: 
            let location = sender.location(in: sender.view?.superview)
            sender.view?.center = location
        )
    

这里 sender.view?.superview 等于 vc.view。此代码 sn-p 将检测平移手势,然后将移动 A 以便 A.center 匹配手势的位置。请注意,持续时间 0.1 为运动提供了平滑的动画效果。

【讨论】:

非常感谢。对于使用 UIPanGestureRecognizer 移动视图,我做得很好。我遇到了规模问题。

以上是关于使用 UIPanGestureRecognizer 移动和缩放 UIView的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用 UIPanGestureRecognizer 移动对象时会有延迟?

UIPanGestureRecognizer ***视图未获取事件,子视图使用它们

在 UITableView 上滑动删除以使用 UIPanGestureRecognizer

在 UIPanGestureRecognizer 中使用velocityInView

使用 UIPanGestureRecognizer 拖动 + 旋转触摸下车

使用 UIPanGestureRecognizer 移动和缩放 UIView