Core Animation を使用していくつかのビューをフェードインしようとしています。4 番目または 5 番目のビューがフェード インするまで、すべて問題ありません。アニメーションが停止し、数秒後に残りのビューが画面に表示されます (アニメーションは発生しません)。第 3 世代の iPad でテストしたので、古いハードウェアの問題ではありません。コード:
viewDidLoad
- (void)viewDidLoad {
[super viewDidLoad];
self.subViews = self.view.subviews;
for (UIView *view in self.subViews) {
view.backgroundColor = [UIColor clearColor];
PhotoFrame *photoFrame = [[PhotoFrame alloc] init];
photoFrame.photo.image = [UIImage imageNamed:[NSString stringWithFormat:@"test%d.jpg", arc4random() % 6 + 1]];
[view addSubview:photoFrame];
view.layer.opacity = 0;
}
}
viewDidAppear
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self startAnimations];
}
startAnimations
- (void)startAnimations {
int count = 1;
for (UIView *view in self.subViews) {
CALayer *animationLayer = view.layer;
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
animation.fromValue = @0.0;
animation.toValue = @1.0;
animation.duration = 0.3;
animation.beginTime = CACurrentMediaTime() + count * 0.3;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
[animationLayer addAnimation:animation forKey:@"opacityAnimation"];
count++;
}
}
誰でも私を助けてくれることを願っています。