Tôi đang làm điều này để tìm hiểu cách làm việc với các tính năng hoạt hình chính trên iPhone (không phải tìm hiểu cách ghép hình ảnh, mỗi lần sử dụng).Làm thế nào để chuyển giữa 2 hình ảnh trên iPhone bằng cách sử dụng Core Animation
Đọc câu hỏi tương tự trên SO dẫn tôi để tin rằng nó có thể được thực hiện bằng hoạt cảnh .contents tài sản của UIImageView củalớp như vậy:
UIImage *image1 = [UIImage imageNamed:@"someImage1.png"];
UIImage *image2 = [UIImage imageNamed:@"someImage2.png"];
self.imageView.image = image1;
[self.view addSubview:self.imageView];
CABasicAnimation *crossFade = [CABasicAnimation animationWithKeyPath:@"contents"];
crossFade.duration = 5.0;
self.imageView.layer.contents = image2;
[self.imageView.layer addAnimation:crossFade forKey:@"animateContents"];
đã tôi nhận được một chi tiết sai hoặc điều này là không thể.
Cập nhật: mã ở trên tạo ra UIImageView trống. Khi tôi thay đổi dòng này:
self.imageView.layer.contents = image2.CGImage;
... Tôi có thể nhìn thấy hình ảnh ngay bây giờ nhưng không phai mờ, nó sẽ xuất hiện ngay lập tức.
Nó hoạt động, crossfading hình ảnh.Làm thế nào để bạn ngăn chặn các cảnh báo trình biên dịch "Đi qua đối số 1 của 'setFromValue:' từ loại con trỏ không tương thích" – willc2
.fromValue và .toValue mong đợi một con trỏ đến một đối tượng Objective-C, không phải là một con trỏ đến một CFType như CGImageRef là. Do đó, bạn có thể làm điều này: crossFade.fromValue = (id) (image1.CGImage); crossFade.toValue = (id) (image2.CGImage); –
Có thể có điều gì đó tương tự được thực hiện cho màu văn bản/màu nền, trên UIButton chẳng hạn? – ebi