Tôi đang cố gắng để animate một giới hạn UIView tùy chỉnh trong khi cũng giữ cho lớp của nó có kích thước giống như xem cha mẹ của nó. Để làm điều đó, tôi đang cố gắng tạo hiệu ứng cho các lớp bên cạnh khung nhìn cha mẹ của nó. Tôi cần lớp để gọi drawLayer: withContext AS hoạt ảnh của nó để bản vẽ tùy chỉnh của tôi sẽ thay đổi kích thước chính xác cùng với các giới hạn.Không thể có được một CALayer để cập nhật drawLayer của nó: DURING một giới hạn hoạt hình
drawLayer được gọi chính xác và vẽ chính xác trước khi tôi bắt đầu hoạt ảnh. Nhưng tôi không thể có được lớp để gọi phương thức drawLayer của nó trên M stepI bước hoạt hình giới hạn. Thay vào đó, nó chỉ gọi nó là ONCE, nhảy ngay lập tức đến "giới hạn cuối" ở khung cuối cùng của hoạt ảnh.
// self.bg is a property pointing to my custom UIView
self.bg.layer.needsDisplayOnBoundsChange = YES;
self.bg.layer.mask.needsDisplayOnBoundsChange = YES;
[UIView animateWithDuration:2 delay:0 options:UIViewAnimationOptionCurveEaseOut|UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{
[CATransaction begin];
self.bg.layer.bounds = bounds;
self.bg.layer.mask.bounds = bounds;
[CATransaction commit];
self.bg.bounds = bounds;
} completion:nil];
Tại sao các giới hạn báo cáo thay đổi AS hoạt ảnh (không chỉ là khung cuối cùng)? Tôi đang làm gì sai?
'được gọi lặp đi lặp lại trong suốt hoạt ảnh' Không tự động, không phải vậy. Đó là một giải pháp tốt, nhưng nhược điểm là bạn cần phải impliment 'needsDisplayForKey:' và để làm điều đó bạn cần phải phân lớp CALayer. Và vì có một số lớp con CALayer mà bạn có thể cần phải sử dụng (như CAGradientLayer, vv) nó có thể là một chút đau ở mông. – zakdances
Vì presentationLayer chỉ trả về một bản sao tĩnh, nên câu trả lời của tôi là điều duy nhất hoạt động ngay bây giờ. Tôi đoán tôi sẽ phải thêm các thuộc tính tùy chỉnh đặc biệt cho chiều rộng và chiều cao và tạo hiệu ứng cho chúng dọc theo giới hạn. Điều đó có đúng không? – zakdances
Tôi không thể chắc chắn * nó sẽ hoạt động theo cách bạn muốn, nhưng đó chắc chắn là hướng tôi nghĩ bạn nên đi vào khi tôi đưa ra gợi ý này. – matt