2010-07-02 43 views
6

Tôi nhận thấy rằng một số điều tôi làm với hình ảnh trong ứng dụng của mình, thay vào đó tôi có thể làm với thuộc tính CALayer (tức là đường viền, bóng, độ dốc, v.v.). Vì vậy, tôi tự hỏi, nói chung, nó là một ý tưởng tốt hơn để sử dụng CALayers và như vậy, hoặc chỉ làm tất cả những thứ đó trong photoshop và sử dụng UIImage (View) s cho bất cứ điều gì tôi cần? Hiệu suất cuộn đã được kinda chậm với bóng đổ và các công cụ, vì vậy tôi về cơ bản cố gắng tìm mọi tối ưu hóa nhỏ mà tôi có thể.Hiệu suất CALayer so với hiệu suất UIImageView

Thông tin cơ bản: Về cơ bản, tôi chỉ cuộn qua một loạt hình ảnh, theo chiều dọc. Hơi giống ứng dụng ảnh. Đây là tất cả từ 3.2 trở đi, vì vậy tôi có quyền truy cập vào những thứ như shadow và các thuộc tính shouldRasterize trong CALayer.

Trả lời

15

Điều quan trọng cần biết về bóng của CALayer là theo mặc định, chúng được hiển thị từ kênh alpha tổng hợp của lớp; có thể rất chậm, đặc biệt khi lớp đang quay hoặc thay đổi kích thước. Bạn nên xem xét thuộc tính shadowPath: nếu bạn cung cấp cho Core Animation một hình dạng đơn giản, chẳng hạn như hình chữ nhật (UIBezierPath+bezierPathWithRect: với lớp của bounds sẽ cung cấp cho bạn [thông qua số CGPath tài sản] một số CGPathRef bạn có thể sử dụng ở đó), bạn sẽ thấy nhiều hiệu suất tốt hơn.

shouldRasterize cũng chắc chắn hữu ích, đặc biệt với các chế độ xem có nhiều lượt xem phụ không thay đổi thường xuyên; tuy nhiên, hãy chắc chắn rằng bạn đặt lớp của rasterizationScale thành [UIScreen mainScreen].scale hoặc bạn sẽ nhận được một số pixel khó chịu trên màn hình có độ phân giải cao như iPhone 4.