您好我正在创建一个新类CNAnimations。 这个类的目的是轻松地执行一些简单的动画,而不是很多次使用相同的代码。 所以,我希望它的行为类似于[UIView animateWithDuration ...]。 我应该创建一个单例类并在appdelegate中初始化它并访问它: [CNAnimations moveRight:view]? 那是对的吗? 请注意,该课程将被来自不同班级的许多uilabels,textfields等使用。
简单代码:
-(void)moveRL:(UIView*)view{
CAKeyframeAnimation * anim = [ CAKeyframeAnimation animationWithKeyPath:@"transform" ] ;
anim.values = @[ [ NSValue valueWithCATransform3D:CATransform3DMakeTranslation(-5.0f, 0.0f, 0.0f) ], [ NSValue valueWithCATransform3D:CATransform3DMakeTranslation(5.0f, 0.0f, 0.0f) ] ] ;
anim.autoreverses = YES ;
anim.repeatCount = 2.0f ;
anim.duration = 2.0f ;
[view.layer addAnimation:anim forKey:nil ] ;
}
答案 0 :(得分:3)
由于您似乎不需要“CNAnimations”的对象,并且它或多或少地作为启动动画的代理,您可以简单地在类范围内定义所有方法(写'+'而不是' - ' )。然后,您可以执行[CNAnimation animateWhatever:]
而无需保留单身。
答案 1 :(得分:1)
Objective-C类也是一个名为Class的opaque类型。这允许您不必分配内存并初始化类以使用类工厂方法。工厂方法使用+而不是 - 来定义。例如,+(id)moveRL
您经常使用工厂方法而没有意识到它,例如NSString text = [NSString stringWithFormat:"@Hello World!"]
stringWithFormat
是此示例中的工厂方法。