UIView나 CALayer에서 .shouldRasterize = true
를 설정하면, 그 뷰는 한 번 렌더링된 후 비트맵 캐싱된 상태로 재활용된다. 말 그대로 “한 번 그린 그림”을 다시 그리는 것이 아니라, “한 번 그린 걸 복사해서 쓰는” 방식으로 성능을 높이는 셈이다. 하지만 무작정 쓴다고 좋은 건 아니다.
예: 그림자(shadow
), 모서리 둥글기(cornerRadius
), 투명도(opacity
) 등 GPU 비용이 큰 효과가 한 번만 그려지면 되는 경우
someView.layer.shouldRasterize = true
someView.layer.rasterizationScale = UIScreen.main.scale
rasterizationScale
을 설정하지 않으면 레티나 디스플레이에서 저해상도처럼 보일 수 있음
예: 고정된 아이콘, 둥근 프로필 이미지, 반복적으로 사용되는 로고 등
imageView.layer.shouldRasterize = true
imageView.layer.rasterizationScale = UIScreen.main.scale
UITableView나 UICollectionView 스크롤 중 GPU 사용률이 높을 때 일부 요소에 선별적으로 적용하면 성능 향상 가능
shouldRasterize = true
상태에서 뷰가 계속 바뀌면 매 프레임마다 다시 래스터화됨 → 성능 저하
자식 뷰는 별도로 처리되므로, 계층 구조가 깊을수록 효과가 적을 수 있음
shouldRasterize
는 iOS의 레이어 최적화 도구 중에서도 가장 신중하게 사용해야 할 속성이다.
한 줄로 성능이 좋아질 수도 있지만, 잘못 쓰면 도리어 성능을 악화시키는 양날의 검이다.