2011-10-12 29 views
15

Tôi có một hình ảnh UILabel với CALayer đổ bóng. Và tôi chỉ di chuyển xung quanh thông qua UIView hoạt ảnh.iphone - Hiệu suất hoạt ảnh rất kém khi bóng của chế độ xem là trên

Hiệu suất kém và tôi có thể thấy hoạt ảnh không hề mượt mà.

Tôi nghĩ rằng đó là bóng của UILabel gây ra vấn đề hoạt ảnh vì nếu tôi tắt bóng, hoạt ảnh sẽ trở nên mượt mà như bình thường.

Tôi đã cố gắng sử dụng view.layer.shouldRasterize = YES;

Nhưng vẫn thực hiện hình ảnh động là ở đó.

Bất cứ ai cũng có thể cho tôi một số gợi ý?

Cảm ơn

Trả lời

39

Bạn có thể cải thiện đáng kể hiệu suất của bóng của CALayer bằng cách sử dụng thuộc tính shadowPath — điều này cho phép nó vẽ bóng mà không phải tính toán lại mặt nạ alpha của lớp. Đối với một cái nhìn hình chữ nhật, bạn muốn sử dụng nó như thế này:

theView.layer.shadowPath = [UIBezierPath bezierPathWithRect:theView.bounds].CGPath; 

hoặc, nếu góc được thiết kế tròn

theView.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:theView.bounds cornerRadius:theView.layer.cornerRadius].CGPath; 

Lưu ý rằng đây là một cái bóng xung quanh của cái nhìn biên giới-nếu bạn muốn tốt hơn hiệu năng trên bóng trên bản thân văn bản, bạn cần sử dụng các thuộc tính văn bản của nhãn (hy sinh các phần tử của bóng CALayer, như làm mờ, để có tốc độ hiển thị tốt hơn) hoặc - một tùy chọn phức tạp hơn - tạo CGPathRef để sử dụng như lớp của mình là shadowPath từ bản thân văn bản.

+0

Đúng vậy. theView.layer.shadowPath = [UIBezierPath bezierPathWithRect: theView.bounds] .CGPath; cải thiện hiệu suất của tôi rất nhiều. Nó khá trơn tru. Cảm ơn –

+0

Cảm ơn bạn. Điều này đã cứu thịt xông khói của tôi! – followben

+0

Thuộc tính đổ bóng văn bản này ở đâu? – jjxtra

0

Không chắc nếu điều này là câu trả lời bạn đang tìm kiếm nhưng tôi thấy điều này: Drop Shadow on UITextField text

Nó có thể là hiệu suất tốt hơn, tôi đã không thử nó, nhưng có vẻ như nó sẽ là.

Các vấn đề liên quan