创建一个仅用作gif的自定义UIView

时间:2014-04-29 04:21:55

标签: ios objective-c uiview uiviewanimation

我对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,但仍然没有。

2 个答案:

答案 0 :(得分:2)

startAnimation中的代码改为ViewDidAppear。一旦controller's视图出现,它就会开始制作动画

答案 1 :(得分:0)

如果您不想在viewWillAppear上调用此方法。你也可以这样做。

 - (void)viewDidLoad{
     [self performSelector:@selector(startAnimating) withObject:nil afterDelay:0.3];
}