试图在我的应用程序中标准化UIView动画,但它无法正常工作

时间:2011-12-20 14:08:48

标签: iphone objective-c uiview

我有相同的动画代码应用于我的对象中的各种视图,所以我想我会用它自己的类来标准化它。这是我的代码:

·H

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface AHAnimations : NSObject

+(void)popInView:(UIView *)view;

@end

的.m

#import "AHAnimations.h"

@implementation AHAnimations

+(void)popInView:(UIView *)view {

    view.alpha = 0;
    view.transform = CGAffineTransformMakeScale(0.9, 0.9);
    [UIView animateWithDuration:0.3
                          delay:0
                        options:UIViewAnimationOptionAllowUserInteraction
                     animations:^{
                         view.alpha = 1;
                         view.transform = CGAffineTransformMakeScale(1, 1);
                     }completion:nil];
}

@end

但不是动画,而是出现了视图。

为什么这不起作用?

编辑:原始代码完全相同。我可以粘贴它,但除了是一个不同的方法名称,我只是从上面复制和粘贴它。现在,它只是[AHAnimations popInView:view];

3 个答案:

答案 0 :(得分:0)

  UIView *myview=[[UIView alloc] init];
  [myview setFrame:CGRectMake( 50.0f, 50.0f, 280.0f, 400.0f)];
  [UIView commitAnimations]; 
  [UIView beginAnimations:@"animateTableView" context:nil];
  [UIView setAnimationDuration:0.7];
  [myview setFrame:CGRectMake( 5.0f, 70.0f, 310.0f, 350.0f)];

// CALL此行停止动画

 [myview.layer removeAllAnimations];
 [UIView commitAnimations];

答案 1 :(得分:-2)

+[UIView animateWithDuration ...没有设置所有属性的动画,alpha应该有效...

答案 2 :(得分:-2)

这些代码不起作用,您可以使用CAAnimationGroup或CABasicAnimation的属性:fromValue,byValue,toValue。

此外,你可以像这样实现更容易理解,

//go
- (void)stepOne{

    [UIView beginAnimations:@"" context:nil];
    [UIView setAnimationDuration:0.2];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(stepTwo)];

    view.alpha = 0;
    view.transform = CGAffineTransformMakeScale(0.9, 0.9);

    [UIView commitAnimations];
}

//back
- (void)stepTwo{

    [UIView beginAnimations:@"" context:nil];
    [UIView setAnimationDuration:0.1];
    view.alpha = 1;
    view.transform = CGAffineTransformMakeScale(1, 1);    
    [UIView commitAnimations];
}

还有很多原创过渡动画,你可以查看它们。