2008-09-06 19 views
6

Cụ thể, tôi đang tìm cách để sử dụng CA vào tính chất của các loại hơnLàm cách nào để sử dụng Hoạt ảnh chính để nội suy các giá trị thuộc tính theo thời gian trên các lớp của riêng tôi?

  • số nguyên và tăng gấp đôi
  • CGRect, CGPoint, CGSize, và CGAffineTransform cấu trúc
  • CATransform3D cấu trúc dữ liệu
  • CGColor và CGImage tài liệu tham khảo

và trong các đối tượng khác ngoài CALayers hoặc NSViews

Trả lời

0

Vâng, có vẻ như tôi không thể làm điều đó. Những gì tôi nên làm là [subclassing NSAnimation] (https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/AnimationGuide/Articles/TimingAnimations.html subclassing NSAnimation). Điều này sẽ làm việc trên một ứng dụng MacOS 10.4+, nhưng không phải trên Cocoa Touch, trong đó tôi không thể tìm thấy bất kỳ lựa chọn thay thế ngoài việc sử dụng một NSTimer.

1

Nếu bạn có thể tự thay đổi và lớp bạn sử dụng là tùy chỉnh, bạn có thể muốn thêm phương thức setProgress: (float) f vào lớp của bạn và sử dụng CA để tạo hoạt ảnh, sau đó sửa đổi các thuộc tính mong muốn nếu cần chức năng của f.

Chỉ cần làm một

[[someObject animator] setValue:[NSNumber numberWithFloat:1.0] forKeyPath:@"someCustomProperty.progress"]; 

hoặc nếu đối tượng không có một phim hoạt hình, tạo CAAnimation đúng cho mình.

+0

Có, nhưng nếu đối tượng của bạn không có trình làm hoạt hoạ và không phải là một Trình xem nhịp, bạn bắt đầu một CAAnimation như thế nào? – dmaclach

+0

Bạn không. Chỉ có các đường dẫn chính trên CALayers có thể hoạt hình bằng Core Animation. – millenomi

0

Tôi không chắc chắn chính xác những gì bạn đang cố gắng làm, nhưng nếu bạn muốn sử dụng CA trên các thuộc tính khác không phải là vấn đề. Bạn chỉ cần đăng ký các hành động thích hợp cho đường dẫn chính. Có một ví dụ về việc thực hiện điều này trong tài liệu Hoạt hình cốt lõi của Apple, sử dụng CAAction. Cụ thể là bạn thực hiện actionForLayer: forKey: để cấu hình hành vi hoạt hình mặc định của khóa đó, và nếu bạn muốn làm cho hình động của thuộc tính hoàn toàn bạn thực hiện runActionForKey: object: arguments:.

Đối với hoạt ảnh đối tượng khác với CALayers, tôi thực sự không hiểu. Lớp là thực thể trực quan gốc trong Hoạt ảnh chính. Ngoài ra, trên iPhone mỗi UIView được sao lưu trên một lớp, tôi không tin có bất cứ điều gì trên màn hình của iPhone mà không phải là trong một lớp, vì vậy tôi không hiểu tại sao bạn đang lo lắng về việc sử dụng hoạt hình trên một cái gì đó mà không một CALayer.