Trong ứng dụng của tôi, tôi có một UIView
đó là sử dụng CALayer
để đạt được một cái bóng:hình ảnh động mượt mà khi hiệu ứng động của CALayer shadowPath
@implementation MyUIView
- (instancetype) initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if(!self) return self;
self.layer.shadowColor = [UIColor colorWithWhite:0 alpha:.2].CGColor;
self.layer.shadowOffset = CGSizeMake(0, 2);
self.layer.shadowOpacity = 1;
self.layer.shadowRadius = 1;
return self;
}
@end
Nếu tôi muốn bất cứ điều gì tiếp cận hiệu suất hợp lý, tôi phải xác định CALayer
' s shadowPath
:
@implementation MyUIView
- (void) setFrame:(CGRect)frame {
[super setFrame:frame];
self.layer.shadowPath = CGPathCreateWithRect(self.bounds, NULL);
}
@end
tôi đã nhận thấy hai điều bất cứ khi nào tôi động này UIView
:
Nếu tôi không sử dụng
shadowPath
, bóng hoạt ảnh cùng với xoay vòng và thay đổi kích thước khung hình. Thông báo trước ở đây là hoạt hình rất chậm và thiếu hiệu suất chung.Nếu tôi làm sử dụng một
shadowPath
bất cứ khi nàoUIView
được dưới hình dạng một hình ảnh động trơn tru và kịp thời, tuy nhiên quá trình chuyển đổi của bóng chính nó là nhiều hơn nữa khối tương tự (và ít mịn) hơn là không cóshadowPath
.
Ví dụ:
- Với
shadowPath
: https://gfycat.com/ColdBlissfulIndusriverdolphin (? Thấy thế nào cái bóng hoạt động như một hình chữ nhật kém chuyển) - Without
shadowPath
(chậm đi của ảnh động là rõ ràng hơn trên thiết bị nhưng bạn có ý tưởng): https://gfycat.com/ActiveRemorsefulBandicoot
Edit:
Nó đáng chú ý là những animations đang tiềm ẩn - Tôi không gọi họ bản thân mình. Chúng là kết quả của việc quay UIViewController
với hướng thiết bị. Bóng đổ trên UIView
thay đổi kích thước trong khi xoay.
phần của vấn đề là trong khi đường dẫn là animatable, họ không có _implicit_ hình ảnh động (những người mà được kích hoạt bởi thay đổi thuộc tính). Vì vậy, trong khi xoay khung hình hoạt hình, nhưng đường dẫn ngay lập tức thay đổi thành giá trị cuối cùng của nó. –
@ DavidRönnqvist Ah. Điều đó có ý nghĩa. Có cách nào để thực hiện việc này theo cách thủ công không? – mattsven
Có, bạn có thể thêm hoạt ảnh theo cách thủ công. Nhưng trừ khi bạn nhận được cùng một khoảng thời gian và thời gian như hoạt hình khung, nó sẽ không nhìn đúng. –