2012-04-15 37 views
5

Trong ứng dụng iOS 5 của tôi, tôi có tùy chỉnh UIButton có hình cầu màu đỏ. Khi nút được khai thác, tôi muốn quả cầu bắt đầu rung/mờ dần giữa màu đỏ và xanh lục. Tôi có cả hình ảnh màu đỏ và màu xanh lá cây và có thể thành công cross-hòa tan giữa hai sử dụng đoạn mã sau:Hoạt ảnh lặp lại, có thể đảo ngược bằng cách sử dụng Core Animation

CABasicAnimation *imageSwitchAnimation = [CABasicAnimation animationWithKeyPath:@"contents"];  
imageSwitchAnimation.fromValue = (id)[UIImage imageNamed:@"red.png"].CGImage; 
imageSwitchAnimation.toValue = (id)[UIImage imageNamed:@"green.png"].CGImage; 
imageSwitchAnimation.duration = 1.5f;   
[self.button.imageView.layer addAnimation:imageSwitchAnimation forKey:@"animateContents"]; 

Tuy nhiên, tôi muốn các hình ảnh động để tiếp tục mãi mãi (tốt, cho đến khi tôi nói với nó dừng lại) và cũng để hoạt ảnh đảo ngược và lặp lại. Nói cách khác, phai màu đỏ -> màu xanh lá cây -> màu đỏ và sau đó lặp lại.

Tôi đã thử đặt khối hoạt hình ở trên vào vòng lặp vô tận (cùng với một số logic để xác định xem mờ có nên chuyển từ màu đỏ -> xanh lá cây hoặc xanh lục -> đỏ) hay không.

Các giải pháp khác dường như sử dụng Cocos2d, có vẻ khá nặng vì đây là hình động duy nhất tôi cần trong ứng dụng (vì vậy tôi không muốn sử dụng các khung như vậy trừ khi cần thiết).

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

23

Có, bạn có thể thực hiện việc này, ngay trong CABasicAnimation. Bí quyết là nhiều phương pháp quan trọng nhất của nó không nằm trong số CABasicAnimation Class Reference, hoặc thậm chí trong các siêu lớp của nó. CABasicAnimation triển khai giao thức có tên là CAMediaTiming. Xem CAMediaTiming Protocol Reference.

Bạn muốn biết về hai thuộc tính cụ thể: autoreversesrepeatCount. Cả hai đều tự giải thích, nhưng nếu bạn muốn lặp lại vô hạn thì sao? Từ mục nhập cho repeatCount:

Có thể phân số. Nếu repeatCount là 0, nó bị bỏ qua. Mặc định là 0. Nếu cả hai repeatDuration và repeatCount được xác định hành vi là không xác định.

Đặt thuộc tính này thành HUGE_VALF sẽ khiến hoạt ảnh lặp lại mãi mãi.

Bạn có thể làm việc đó từ đó không?

+0

Cảm ơn rất nhiều - công trình này hoàn hảo! Rất rõ ràng giải thích quá :) – Skoota

Các vấn đề liên quan