我想animation使用UIDynamicAnimator和重力/碰撞/弹性效果来UIDynamicAnimator物体。 我看了一下苹果公司的示例应用程序DynamicsCatalog ,它是非常直接的,除了当对象从容器边界外开始。 例如,这是从示例应用程序的APLCollisionGravityViewController.m文件中获取的代码: UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view]; UIGravityBehavior *gravityBeahvior = [[UIGravityBehavior alloc] initWithItems:@[self.square]]; [animator addBehavior:gravityBeahvior]; UICollisionBehavior *collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[self.square]]; collisionBehavior.translatesReferenceBoundsIntoBoundary = YES; collisionBehavior.collisionDelegate = self; [animator addBehavior:collisionBehavior]; 如果self.square的框架最初完全位于self.square内,则效果良好。 如果我改变它,以便它有一个消极的frame.origin.y值,事情变得陌生。 具体来说,如果frame.origin.y的绝对值是frame.origin.y一半以上, frame.size.height这个方块似乎是“ frame.size.height ”而不是下降 – 它会上升而不是下降。 我正在寻找最初完全在容器边界之外的方块(即,我设置frame.origin.y = -frame.size.height ),我如何修改animation/重力/碰撞行为以适应?
我试图在我的代码中实例化一个UIDynamicAnimator。 我想用UIView作为IBOutlet进行初始化。 class ViewController: UIViewController { @IBOutlet var gameView : UIView @lazy var animator = UIDynamicAnimator(referenceView: gameView) … 我假设这是行不通的,因为UIView尚未创build,因为animator属性抛出一个错误,说它找不到gameView。 我怎样才能解决这个问题?
我有一个已经在InterfaceBuilder中configuration的ViewController为所有子视图使用AutoLayout。 布局工作正常。 我想用UIDynamicAnimator提供的很酷的重力效果让其中一个子视图反弹。 我不认为这将适用于AutoLayout,但我尝试过,它确实如此。 它工作得很好! 我的问题是 ,这是预期的行为? 是否会在某个地方引起问题? 苹果公司是否提供关于AutoLayout和UIDynamicAnimators相结合的指导? 这里是代码,对于任何感兴趣的人: var boundaryFrame = self.buttonBackgroundView.frame boundaryFrame = CGRect(x: 0, y: boundaryFrame.origin.y + (boundaryFrame.height + 1), width: self.view.frame.width, height: 2) self.animator = UIDynamicAnimator(referenceView: self.view) var gravity = UIGravityBehavior(items: [self.buttonBackgroundView]) gravity.magnitude = 0.5 var collision = UICollisionBehavior(items: [self.buttonBackgroundView]) var boundaryId: NSMutableString = NSMutableString(string: "bottomBoundary") let boundaryPath = UIBezierPath(rect: […]
我已经通过了文档,我很尴尬地说我很困惑。 场景 : 我有一个UIView ,就像一个容器3 UIButtons 。 这个容器最初是边界{0, 0, 35, 35} ,每个button里面都有相同的坐标(用alpha 0)。 在用户的特定操作中,容器将边界改变为{0, 0, 100, 35} ,并且button被dynamic地分配给x-原点5,35和65,其中alpha被分散在resize的容器内。 我把这称为容器的扩展状态 。 用户执行相同的操作,将其切换回原始合同状态 。 目标 : 我目前正在使用[UIView animateWithDuration:]块来做这个,但是想使用UIDynamicAnimator来添加一个弹性效果,例如当切换到展开状态时,容器resize并弹跳(resize并反弹回到目标范围),button弹跳(进一步移动,并弹回到目标范围)。 混乱 : UIDynamicAnimator , UIDynamicBehavior , UIAttachmentBehavior , UIDynamicItem …..所有这些都使我对UIKitDynamic理解溢出了。 我想我应该使用UISnapBehavior ,但我不知道如何去做。