ios - 动态创建的 UIView 在碰撞后不会动画

标签 ios iphone swift animation uiview

感谢阅读这篇文章。

这里是我的程序的总结:

  1. 我动态添加几个 UIView 作为 subview 。

  2. 我有四处移动和碰撞的物体

  3. 当发生碰撞时,我希望创建的 UIView 之一淡出,然后删除发生碰撞的 UIView 之一。

我可以使用以下命令删除创建的 UIView: dynamicAnimator?.referenceView?.viewWithTag(tagOfView)?.removeFromSuperview()

但是,当我尝试添加动画来淡出 View 时,我没有得到任何类型的淡入/动画。我做错了什么?

UIView.animateWithDuration(1.5, animations: {
    self.dynamicAnimator?.referenceView?.viewWithTag(tagOfView)?.alpha = 0.0 
})

如果需要,这里是整个 collisionBehavior() 函数。

func collisionBehavior(behavior: UICollisionBehavior, beganContactForItem item: UIDynamicItem, withBoundaryIdentifier identifier: NSCopying, atPoint p: CGPoint) {
    let identOpt : NSCopying? = identifier

    if let ident = identOpt as? NSNumber {
        switch ident {
        case Identifiers.paddleAtStartup:
            break
        default:
            ballCollider.removeBoundaryWithIdentifier(ident)
            UIView.animateWithDuration(1.5, animations: {
                self.dynamicAnimator?.referenceView?.viewWithTag(Int(ident))?.alpha = 0.0
                })
            dynamicAnimator?.referenceView?.viewWithTag(Int(ident))?.removeFromSuperview()       
        }
    }
}

最佳答案

您在碰撞后立即移除 View ,并且没有任何动画。您最好在动画的完成处理程序中将其删除。

关于ios - 动态创建的 UIView 在碰撞后不会动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32571649/

相关文章:

swift - 可编码为 CKRecord

swift - 定时器只执行一次函数

ios - Swift 错误 : cannot invoke `dataWithRequest` with an argument list of type `(NSURL, completionHandler :(_, _,_) -> Void

ios - 为什么我在尝试扫描 QR 码时在 Expo 中收到此错误?

iphone - 如何使用NSDateFormatter将NSString转换为NSDate?

iPhone - 区分 UIApplicationDidBecomeActiveNotification 通知

iphone - 翻译错误

iphone - 根据打印输出从 NSDictionary 访问信息

ios - 可以从我的应用程序启动 Apple 的默认天气应用程序吗?

ios - Swift注解点击按钮