是否可以执行溶解动画但控制进度,例如如何使用alpha?

时间:2013-12-30 16:17:00

标签: ios objective-c uiview uiimageview uiimage

我想将一个UIImageView解析为另一个,但控制进度(因此它会在用户平移手指时发生)。使用alpha这很简单,因为我只是在用户平移时更改UIView的alpha值,但我不知道如何为溶解动画执行此操作,这与alpha更改略有不同。

1 个答案:

答案 0 :(得分:1)

可以通过将一个图像放在另一个图像上并减少最顶层图像的alpha来消除两个图像之间的动画。这可以在动画块中完成。 如果根据用户的平移手势改变溶解,可以写成如下方法:

- (void)setDissolveState:(CGFloat)state
{
    self.imageTop.alpha = 1.0 - state;

    // ensure bottom image is opaque, this can be done once
    self.imageBottom.alpha = 1.0;
}

此处imageTopimageBottom是UIImage处理pan事件的对象(例如视图控制器)的属性。当发现平移更改时,应使用触摸的相对位置调用方法setDissolveState:

CGFloat relativePosition = (touchLocation.x - self.view.frame.origin.x) / self.view.frame.size.width;
[self setDissolveState:relativePosition];