VIEwController.h
#import <QuartzCore/QuartzCore.h>#import <UIKit/UIKit.h>@interface VIEwController : UIVIEwController{ UIImage *beeImage; UIImageVIEw *beeVIEw; CALayer *beeLayer; CABasicAnimation *animat; NSMutableArray *beeArray; NSMutableArray *beeanimArray;}@property(retain,nonatomic) UIImage *beeImage;@property(retain,nonatomic) NSMutableArray *beeArray;@property(retain,nonatomic) NSMutableArray *beeanimArray;@property(retain,nonatomic) UIImageVIEw *beeVIEw;@property(retain,nonatomic) CALayer *beeLayer;@property(retain,nonatomic)CABasicAnimation *animat;-(voID) animate;-(voID) makeSwarm;@end
VIEwController.m
-(voID) makeSwarm{ self.vIEw.layer.backgroundcolor = [UIcolor orangecolor].CGcolor; self.vIEw.layer.cornerRadius = 20.0; self.vIEw.layer.frame = CGRectInset(self.vIEw.layer.frame,20,20); CGRect beeFrame; beeArray = [[NSMutableArray alloc] init]; beeImage = [UIImage imagenamed:@"bee50x55px.png"]; beeFrame = CGRectMake(0,beeImage.size.wIDth,beeImage.size.height); int i; CALayer *p = [[CALayer alloc] init]; for (i = 0; i < 3; i++) { beeVIEw = [[UIImageVIEw alloc] initWithFrame:beeFrame]; beeVIEw.image = beeImage; beeLayer = [beeVIEw layer]; [beeArray addobject: beeLayer]; p = [beeArray objectAtIndex: i]; [p setposition:CGPointMake(arc4random()%320,arc4random()%480)]; [self.vIEw.layer addSublayer:p]; } [self animate]; }-(voID)animate{ //the code from here to the end of this method is what I would like to repeat as many times as I would like [CATransaction begin]; int i; for (i = 0; i < 3; i++) { animat = [[CABasicAnimation alloc] init]; [animat setFromValue:[NSValue valueWithCGPoint:CGPointMake(arc4random()%320,arc4random()%480)]]; animat.tovalue = [NSValue valueWithCGPoint:CGPointMake(arc4random()%320,arc4random()%480)]; [animat setFillMode:kCAFillModeForwards]; [animat setRemovedOnCompletion:NO]; animat.duration=1.0; CALayer *p = [[CALayer alloc] init]; p = [beeArray objectAtIndex: i]; [p addAnimation:animat forKey:@"position"]; } [CATransaction commit]; }解决方法 我相信我已经为自己回答了这个问题.我在循环结束时设置了动画的委托(当i == 2时),当动画结束时(指示循环结束),然后从animationDIDStop方法我再次调用方法动画.如果有一个比这更优雅或无故障的解决方案,我会全神贯注并接受它作为答案. 总结
以上是内存溢出为你收集整理的objective-c – 如何循环CATransaction块中包含的几个CABasicAnimations?全部内容,希望文章能够帮你解决objective-c – 如何循环CATransaction块中包含的几个CABasicAnimations?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)