728x90
CALayer.shouldRasterize
- layer를 합성하기 전에, Bitmap 형식으로 layer를 렌더링 할 것인지 결정하는 프로퍼티이다.
- 만약 true로 설정하면 layer는 Bitmap형식으로 렌더링되는데 처음 한 번만 렌더링되고 그 이후 애니메이션에선 재활용이 된다.
- Shadow 효과를 포함한 filters 프로퍼티 안에 포함된 filter 또한 rasterize 되어서 bitmap에 포함된다.
- 다만 opacity값은 rasterize 되지 않는다. (투명으로 이루어진 색상은 처리 불가)
- off-screen 렌더링을 유발하기 때문에 꼭 필요한 경우에만 사용하는게 좋다.
- overload의 발생주체가 RAM이 된다. (추가적인 cache를 저장하기 때문)
- 만약 false로 설정하면 필요할 때마다 layer가 렌더링된다. 매번 애니메이션마다 layer를 다시 그린다.
- overload의 발생주체가 GPU가 된다.
true로 설정하면 좋은 경우
- View가 여러 sublayer혹은 subview, effect 등으로 복잡하게 만들어진 상태에서 UITableView와 같은 컴포넌트 안에서 scroll이 되는 경우, 매우 큰 performance 이슈를 야기할 수 있기 때문에 사용하면 좋다.
- layer 컨텐츠의 위치는 변해도, 모양은 변하지 않는 경우에 사용하면 좋다.
- width, height, shadow, cornerRadius, color, internal content 등의 layer의 모양 변화를 야기하는 프로퍼티들의 변화는 cache를 재생성해야되기 때문에 performace에 영향을 준다.
사용법
view.layer.shouldRasterize = true
view.layer.rasterizationScale = UIScreen.main.scale
728x90
'iOS > 설명' 카테고리의 다른 글
[iOS] Keyboard와 동일한 애니메이션 적용하기 (0) | 2023.01.07 |
---|---|
[iOS] 앱 실행 방법에 따른 AppDelegate 호출 메서드 (0) | 2023.01.07 |
[iOS] 앱의 샌드박스 구조 (0) | 2022.12.31 |
[iOS] UIFont의 property들 (0) | 2022.12.31 |
[iOS] OOM (Out of Memory) crash case - 1 (0) | 2022.11.26 |
댓글