使用 UIDynamicAnimator 后图像模糊
Posted
技术标签:
【中文标题】使用 UIDynamicAnimator 后图像模糊【英文标题】:Blurry image after using UIDynamicAnimator 【发布时间】:2014-06-02 20:30:55 【问题描述】:我使用 UIDynamicsAnimator 效果很好,只是在动画完成后,被推送和反弹的图像是模糊的。请帮帮我。
@property (nonatomic,weak) IBOutlet UIImageView *someImage;
self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
self.gravity = [[UIGravityBehavior alloc] initWithItems:@[self.someImage]];
CGVector gravityDirection = -1.0, 0.5;
[self.gravity setGravityDirection:gravityDirection];
self.collision = [[UICollisionBehavior alloc] initWithItems:@[self.someImage]];
self.collision.translatesReferenceBoundsIntoBoundary = YES;
self.itemBehaviour = [[UIDynamicItemBehavior alloc] initWithItems:@[self.someImage]];
self.itemBehaviour.elasticity = 0.5;
[self.animator removeAllBehaviors]; // to avoid problems from the last behaviour animation
[self.collision addBoundaryWithIdentifier:@"barrier"
fromPoint:CGPointMake(444,0)
toPoint:CGPointMake(444,768)];
self.pushBehavior = [[UIPushBehavior alloc] initWithItems:@[self.someImage] mode:UIPushBehaviorModeInstantaneous];
self.pushBehavior.magnitude = 1.0f;
self.pushBehavior.angle = 0.0f;
[self.animator addBehavior:self.pushBehavior];
self.pushBehavior.pushDirection = CGVectorMake(1.0f, 0.0f)
self.pushBehavior.active = YES;
[self.animator addBehavior:self.itemBehaviour];
[self.animator addBehavior:self.collision];
[self.animator addBehavior:self.gravity];
【问题讨论】:
图片的实际尺寸(以像素为单位)是多少?最终位置的坐标是整数还是分数? 【参考方案1】:我认为您的问题是动画完成时图像不在确切的点上。我建议您添加一个委托,并在动画暂停时将图像的 x 和 y 舍入到最接近的整数。
【讨论】:
我通过将图像大小调整为高度和宽度的偶数来解决了这个问题。也许问题在于 UIDynamics 需要框架原点和视图中心都是精确的点。以上是关于使用 UIDynamicAnimator 后图像模糊的主要内容,如果未能解决你的问题,请参考以下文章
iOS:UIDynamicAnimator updateItemUsingCurrentState 不适用于旋转
使用自动布局时使用 UIDynamicAnimator 制作动画
将 CGAffineTransformScale 与 UIAttachmentBehavior (UIDynamicAnimator) 一起使用
为啥我的 UIDynamicAnimator 类继承不能使用 addChildBehavior