我有相同的动画代码应用于我的对象中的各种视图,所以我想我会用它自己的类来标准化它。这是我的代码:
·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];
答案 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];
}
还有很多原创过渡动画,你可以查看它们。