Tôi đang tạo ứng dụng iOS, trong đó tôi có yêu cầu về backgroundColor của chế độ xem để hoạt ảnh thông qua lựa chọn màu sắc. Trong phương thức viewDidLoad của tôi, về cơ bản, tôi khởi chạy một chuỗi các hoạt ảnh UIView bằng cách sử dụng như sau.Cách tốt nhất để xử lý chuỗi hình ảnh động với UIViewAnimations
-(void) beginFirstStageBackgroundAnimation
{
[UIView animateWithDuration: 3.0f
delay: 3.0f
options: UIViewAnimationOptionTransitionCrossDissolve
animations:^{
self.view.backgroundColor = [UIColor colorWithRed: 251./255 green:203./255 blue:147./255 alpha:1.0];
}
completion:^(BOOL finished){
[self secondStageBackgroundAnimation];
}
];
}
Việc xử lý hoàn bắn phương pháp thứ hai có chứa các màu bên cạnh ....
-(void) secondStageBackgroundAnimation
{
[UIView animateWithDuration: 3.0f
delay: 3.0f
options: UIViewAnimationOptionTransitionCrossDissolve
animations:^{
self.view.backgroundColor = [UIColor colorWithRed:251./255 green:224./255 blue:96./255 alpha:1.0];
}
completion:^(BOOL finished){
[self thirdStageBackgroundAnimation];
}
];
}
Và vân vân ... này tiếp tục cho đến khi trong phim hoạt hình thứ bảy tôi gọi [self beginFirstStageBackgroundAnimation];
trong việc hoàn thành để bắt đầu lại quá trình.
Khi tôi rời khỏi chế độ xem với nút quay lại, trong chế độ xemDidDisappear hoặc khi bộ hẹn giờ trên màn hình kết thúc, tôi chạy [self.view.layer removeAllAnimations];
để loại bỏ hoàn toàn hoạt ảnh. Tuy nhiên, ứng dụng chạy và hoạt động chính xác như dự định nhưng dường như bị lỗi sau khi rời khỏi chế độ xem và chạy cho toàn bộ và mặc dù tôi không biết tại sao dường như có liên quan đến chuỗi hoạt ảnh này.
Có giải pháp nào tốt hơn để tạo hiệu ứng backgroundColor của chế độ xem sau mỗi 3 giây với thời gian trễ là 3 giây không?
Và không [self.view.layer removeAllAnimations];
thực sự làm những gì tôi muốn?
EDIT: Mã nơi tôi rời khỏi cái nhìn như sau:
-(void) backBtnPressed:(id)sender
{
[self stopAudio]; // stop audio that is playing.
[self.view.layer removeAllAnimations]; // remove all animations?
[self.navigationController popViewControllerAnimated: YES]; // pop view from stack
}
Tôi không chắc chắn rằng removeAllAnimations dừng hoạt ảnh của bạn, hình động được đính kèm với lớp và bạn không trực tiếp sử dụng hoạt ảnh lớp, nhưng hoạt ảnh UIView ... dù sao nó cũng không bị sập, bạn có thể gọi nó ngay cả mà không gọi bất kỳ hoạt hình nào cả. nhật ký của bạn sau sự cố là gì? – meronix
+1 sự nguy hiểm thực sự ở đây là cuộn lên ngăn xếp trong một vòng lặp mỗi ba giây - về cơ bản là một đệ quy chậm lớn. câu trả lời bạn chấp nhận tránh điều đó, cũng như của riêng tôi. Tôi chắc chắn câu trả lời được chấp nhận là tốt, mặc dù đó là sở thích của tôi để gắn bó với các khối bất cứ nơi nào có thể. – danh