1

我想使用不同的时间淡入和淡出 UIImageView,比如说,使用以下参数:

  • t = 0 ... UIImageView 的 alpha = 0
  • t = 0.5s ... UIImageView 的 alpha = 0.7
  • t = 0.7s ... UIImageView 的 alpha = 0

这可能与 CAAnimation 或其他方法有关吗?怎么可能呢?

谢谢你的帮助!

4

3 回答 3

6
if (imgDefault.alpha == 0.0) {
    CGContextRef context = UIGraphicsGetCurrentContext();
        [UIView beginAnimations:nil context:context];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
        [UIView setAnimationDuration: 3.0];
        [UIView setAnimationDelegate: self];
        imgDefault.alpha = 1.0;
        [UIView commitAnimations];
}
else {
    CGContextRef context = UIGraphicsGetCurrentContext();
        [UIView beginAnimations:nil context:context];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
        [UIView setAnimationDuration: 3.0];
        [UIView setAnimationDelegate: self];
        imgDefault.alpha = 0.0;
        [UIView commitAnimations];
}

希望能帮助到你

于 2011-07-04T06:49:13.673 回答
3

您可能应该查看 CAKeyframeAnimation。它可以让您设置多个时间点的值。

于 2010-02-17T23:23:39.457 回答
2

UIView 有一个 setAnimationDidStopSelector: 可以使用的方法。只需使用 beginAnimations 块设置您的淡入动画,并将 didStop 选择器设置为另一个仅包含淡出动画块的方法。这些动画块中的每一个都可以有不同的动画持续时间。

像这样的东西:

    [UIView beginAnimations:next context:context];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(fadeOut:finished:context:)];
    myView.alpha = 0.7;
    [UIView commitAnimations];

-(void)fadeOut:(NSString*)animationID finished:(BOOL)finished context:(void*)context  {
    [UIView beginAnimations:nil context:context];
    [UIView setAnimationDuration:0.2];
    myView.alpha = 0.0;
    [UIView commitAnimations];
}
于 2010-02-17T23:56:27.497 回答