2012-02-16 38 views
5

Tôi đã có một số UIViews tùy chỉnh đẹp sử dụng CALayers cho một số mặt nạ khá phức tạp và trong suốt. Phải mất một thời gian để tìm ra cách làm cho nó chạy trơn tru, nhưng tôi thấy rằng bằng cách gói các đối tượng có liên quan trong một container UIView, và thiết lập layer.shouldRasterize của container thành YES, nhưng để lại thuộc tính của tất cả các khung nhìn được thiết lập là NO , nó sẽ chạy trơn tru không có vấn đề làm thế nào phức tạp của bạn pha trộn có thể được.CALayer mất rasterization khi di chuyển offscreen trong một UIScrollView

Đó là cơ bản như thế này:

UIScrollView


container View (layer.shouldRasterize = YES)

  • con (layer.shouldRasterize = NO)
    • childOfChild (layer.shouldRasterize = NO)
  • con (layer.shouldRasterize = NO)
  • con (layer.shouldRasterize = NO)

container ...

container ... (và vân vân)


Về cơ bản, vùng chứa sẽ kết thúc dưới dạng một hình ảnh khối lớn khi nó quét lại, giảm thiểu lượng rasterization phải được thực hiện. Tuy nhiên, điều này đã tạo ra một vấn đề mới cho tôi. Nếu tôi có một vài thùng chứa trong một UIScrollView, ngay khi một trong các thùng chứa được cuộn ra khỏi màn hình, nó sẽ được gắn thẻ "Đỏ" trong lược tả CoreAnimation, và do đó phải được trả lại khi nó được cuộn trở lại trên màn hình. Điều này gây ra một đoạn nói lắp ngắn. Tôi không hiểu tại sao lớp của container lại rasterize lại. Bất cứ ai có thể giải thích điều này hoặc có lẽ cung cấp một workaround? Cảm ơn.

Trả lời

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