首页 > 解决方案 > UIView.transition 不会在第一侧移动 UIView 内容

问题描述

我正在使用 UIView.transition(with: duration: options: animations:) 函数来翻转卡片。当我在过渡仍在工作时为框架属性设置动画时,第一个 UIView 状态没有移动,它的位置是堆栈到父视图,但卡片另一侧的第二个状态正在移动和动画完美。如何解决?谢谢你。

解释代码: UIView.animate 被调用了两次。第一次执行动画关闭,然后完成关闭。这里没关系。接下来,当我按下按钮(参见视频)时,由于if语句将不再执行完成主体,但问题是当第一次完成关闭仍然动画翻转过渡时,动画关闭正在第二次执行并将卡片移动到新职位。第一张卡片上的所有内容都没有随着第二个动画移动,尽管第二面工作完美。

UIView.animate(withDuration: 2,
               delay: delay,
               options: [],
               animations: { [unowned self] in
                        self.frame = CGRect(origin: newFrame.origin, size: newFrame.size)
               },
               completion: { [unowned self] (position) in
                   if self.destination != self.state {
                        UIView.transition(with: self,
                                          duration: 8,
                                          options: [.transitionFlipFromLeft, UIViewAnimationOptions.layoutSubviews],
                                          animations: {[unowned self] in
                                              self.state = self.destination
                                              self.setNeedsDisplay()
                        },
                                          completion: { (position) in

                   })
               }
})

这是视频https://youtu.be/lRYT_6xWbWA

在屏幕截图上,卡片会随着属性动画向上移动和缩放。

在此处输入图像描述

标签: iosswiftxcodeanimationuiview

解决方案


推荐阅读