我对iOS编程和Objective-C很新。
我所拥有的是一堆名为“image0.png”,“image1.png”,...,“image47.png”的图像,它们构成了一个动画图像。首先,我创建了一个按钮,按下后,开始动画。
@property (nonatomic, strong) IBOutlet UIImageView *imageView;
...
- (IBAction)startAnimation {
self.imageView.animationImages = [NSArray array];
for (int i = 0; i < 48; ++i) {
NSString *imageName = [NSString stringWithFormat:@"image%i.png", i];
UIImage *image = [UIImage imageNamed:imageName];
self.imageView.animationImages = [self.imageView.animationImages arrayByAddingObject:image];
}
self.imageView.animationDuration = 5.0;
[self.imageView startAnimating];
}
除非必须按下按钮才能启动,因此效果非常好。我希望动画图像能够立即开始,而不必按任何东西。我尝试做的是给imageView
一个自定义UIImageView
课程。然后在customImageView.m
文件中,我将上述代码推送到initWithFrame:
方法。
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.animationImages = [NSArray array];
for (int i = 0; i < 48; ++i)
self.animationImages = [self.animationImages arrayByAddingObject:[UIImage imageNamed:[NSString stringWithFormat:@"image%i.png", i]]];
self.animationDuration = 5.0;
[self startAnimating];
}
return self;
}
然而,现在没有任何反应。我也尝试将[self startAnimating]
行移回IBAction
,但仍然没有。
答案 0 :(得分:2)
将startAnimation
中的代码改为ViewDidAppear
。一旦controller's
视图出现,它就会开始制作动画。
答案 1 :(得分:0)
如果您不想在viewWillAppear
上调用此方法。你也可以这样做。
- (void)viewDidLoad{
[self performSelector:@selector(startAnimating) withObject:nil afterDelay:0.3];
}