Tôi có một CALayer để tạo hiệu ứng thay đổi nội dung hình ảnh của nó. Bây giờ, làm cách nào để thay đổi hoạt ảnh này diễn ra trong bao lâu?Thay đổi thời gian hoạt ảnh cho các thuộc tính của một CALayer
8
A
Trả lời
7
Đơn giản hơn hoặc ít hơn. Bạn có một ivar CALayer *yourLayer
. Sau đó, bạn thiết lập các đại biểu và thực hiện các phương pháp đại biểu -(id<CAAction>)actionForLayer:forKey:
- (void)awakeFromNib {
yourLayer.delegate = self;
yourLayer.name = @"yourLayer";
}
- (id <CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event {
if([layer.name isEqualToString yourLayer.name]) { // Check for right layer
CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:event]; // Default Animation for 'event'
ani.duration = .5; // Your custom animation duration
return ani;
} else return nil; // Default Animation
}
10
Một cách khác nhau để làm điều này:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:2.5f] forKey:kCATransactionAnimationDuration];
//Perform CALayer actions, such as changing the layer contents, position, whatever.
aCALayerObject.contents = [self newCALayerContents];
[CATransaction commit];
Đó là mã sẽ animate thay đổi các nội dung của CALayer hơn 2,5 giây. Bạn cũng có thể sử dụng tính năng này để tắt hoàn toàn tất cả hoạt ảnh. Như thế này:
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
19
Bạn chỉ có thể gọi:
[CATransaction setAnimationDuration:durationSecs]
trong -layoutSublayers hoặc bất cứ nơi nào khác mà bạn sửa đổi các lớp và mong đợi họ ngầm động. Điều này sẽ ảnh hưởng đến giao dịch ngầm hiện tại và bất kỳ giao dịch phụ nào trong giao dịch này.
Các vấn đề liên quan
- 1. Lớp con CALayer không hoạt ảnh để thay đổi thuộc tính
- 2. Cài đặt/thay đổi thuộc tính ctime hoặc "Thay đổi thời gian" trên một tệp
- 3. Thay đổi thuộc tính log4j tại thời gian chạy
- 4. Có thể thay đổi các thuộc tính của WebReference trong thời gian chạy không?
- 5. Thay đổi hoạt ảnh ẩn của ActionBar?
- 6. Thay đổi thông số của thuộc tính tùy chỉnh tại thời gian chạy
- 7. Thay đổi tham số của Thuộc tính tại thời gian chạy
- 8. Thay đổi dấu thời gian của một sửa đổi SVN
- 9. CABasicAnimation không thay đổi thuộc tính vị trí của nó sau khi hoạt ảnh hoàn thành
- 10. hoạt hình nhiều CALayer, nhưng không phải trong cùng một khoảng thời gian
- 11. Nghe các thay đổi của thuộc tính phụ thuộc
- 12. Hoạt ảnh kết thúc cuộc gọi lại cho CALayer?
- 13. java cập nhật các thuộc tính tệp thời gian chạy
- 14. Thay đổi thời lượng hoạt ảnh của jQuery trong khi hoạt ảnh
- 15. Thay đổi khoảng thời gian của các toán tử RX?
- 16. Wpf - Nhận thông báo thay đổi giá trị thuộc tính cho các thuộc tính của phần tử khung
- 17. XSLT: Cách thay đổi giá trị thuộc tính trong thời gian <xsl:copy>?
- 18. Thay đổi giá trị của một thuộc tính cụ thể
- 19. Thay đổi hoạt ảnh cho UINavigationController NavigationBar
- 20. Thời lượng thay đổi của hoạt ảnh UITableView (Chèn/Xóa các hàng có bảng beginUpdates)
- 21. Thay đổi kiểu hoạt ảnh của ViewPager
- 22. Theo dõi thay đổi trong thuộc tính
- 23. Thay đổi thuộc tính href
- 24. Tạo một CATextlayer thay đổi tại một khoảng thời gian trong AVMutableVideoComposition
- 25. CALayer Shadows biến mất trong một hoạt ảnh UIView
- 26. Việc thay đổi thuộc tính src của hình ảnh có ngăn không cho tải hình ảnh xuống không?
- 27. Sử dụng một khoảng thời gian thay đổi trong một khoảng thời gian trong Postgres
- 28. Tự động thay đổi hoạt ảnh xoay vòng trong WPF
- 29. Theo dõi các thay đổi về mã theo thời gian
- 30. Lập trình thay đổi thuộc tính định danh của UIBarButtonItem
Tôi lấy đối tượng 'Giao dịch' ở đâu? –
'' 'CATransaction''' là một lớp. '' 'setAnimationDuration: seconds''' là một phương thức lớp. Trong trường hợp này, nó đặt thời lượng cho giao dịch hiện tại. –
Cảm ơn, tôi hiểu ngay bây giờ. –