2012-02-02 22 views
9

Tôi đang cố tối ưu hóa ứng dụng của mình. Nó khá trực quan phong phú, do đó, có khá nhiều lớp UIViews với hình ảnh lớn và pha trộn vvKhông nênRasterize trên một CALayer gây ra rasterization trước hoặc sau khi chuyển đổi của lớp?

Tôi đã thử nghiệm với thuộc tính shouldRasterize trên CALayers. Trong một trường hợp cụ thể, tôi có một số UIView bao gồm nhiều lượt xem phụ bao gồm một bảng. Là một phần của quá trình chuyển đổi mà toàn bộ màn hình cuộn, số UIView này cũng chia tỷ lệ và xoay vòng (sử dụng các biến đổi).

Nội dung của UIView vẫn tĩnh, vì vậy tôi nghĩ rằng sẽ có ý nghĩa khi đặt view.layer.shouldRasterize = YES. Tuy nhiên, tôi không thấy sự gia tăng hiệu suất. Nó có thể là nó tái rasterizing mỗi khung ở quy mô mới và xoay? Tôi đã hy vọng rằng nó sẽ rasterize lúc đầu khi nó có một ma trận biến đổi nhận dạng, và sau đó bộ nhớ cache khi nó quy mô và quay trong quá trình chuyển đổi?

Nếu không, có cách nào tôi có thể buộc điều đó xảy ra không? Không thể thêm siêu dư thừa/lớp bổ sung mà không làm gì ngoài việc chia tỷ lệ và xoay nội dung rasterized của nó ...

Trả lời

8

Bạn có thể trả lời câu hỏi của mình bằng cách lập hồ sơ ứng dụng bằng cách sử dụng CoreAnimation instrument. Lưu ý rằng tùy chọn này chỉ khả dụng trong một thiết bị.

Bạn có thể bật "Lần truy cập màu xanh lá cây và màu đỏ". Nếu lớp của bạn vẫn còn màu đỏ thì nó có nghĩa là nó thực sự rasterize nó mỗi khung.

+0

Điều gì sẽ khiến thẻ chuyển sang màu đỏ? Hết bộ nhớ GPU? – jjxtra

+0

Hoặc là, hoặc lớp đó được hiển thị lại và do đó bộ nhớ cache bị vô hiệu. – NachoSoto

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