UIView.animate 在 UIPanGestureRecognizer 中时在框架上

Posted

技术标签:

【中文标题】UIView.animate 在 UIPanGestureRecognizer 中时在框架上【英文标题】:UIView.animate on frame when within a UIPanGestureRecognizer 【发布时间】:2017-12-28 19:33:22 【问题描述】:

我正在尝试构建一个 UIPanGestureRecognizer 委托,当它达到某个 x 值时移动 UIView 的宽度/高度,但是当值超过阈值时我遇到了这种奇怪的闪烁(在下面的示例中为 65 像素)。

@objc func moveCardRec(sender: UIPanGestureRecognizer)
    if sender.translation(in: self).x < -65.0 
       self.makeButtonPop()
     else 
       self.makeButtonUnPop()
    

UIView(我想要弹出/动画秒的那个)落后或重置帧时,就像我用平移手势移动x值的视图正在移动一秒钟。没有线索。

附上现在正在发生的事情的 gif。你会看到它在瞬间抖动。 makeButtonPop() 函数只是圆形图像视图框架上的UIView.animate,其中带有复选标记。

【问题讨论】:

【参考方案1】:

好吧,我傻了。花了几个小时。

找到解决方法。确保您要设置动画的 UIView 位于包含的 UIView 内(如父级)。所以在上面的例子中,紫色圆圈在 UIView 内,不会改变大小。

父级中的子级更改大小。由于某些原因,当动画UIView 和我拖动的那个在同一个容器/同一个直接父级中时,它们彼此不喜欢并且闪烁。

希望这对其他人有帮助!

【讨论】:

以上是关于UIView.animate 在 UIPanGestureRecognizer 中时在框架上的主要内容,如果未能解决你的问题,请参考以下文章

对于在 UIView.animate 块内部或外部的循环?

视图唤醒时 UIView.animate() 冻结

MonoTouch - UIView.Animate 完成回调未在按钮 touchUpInside 委托内调用

视图框架的 UIView.animate 问题

动画没有停止使用 UIView.animate

如何防止 UIView.animate 被调用