나는 현재 회사 프로젝트에서 Texture(AsyncDisplayKit)을 사용하는 중이다. UIKit 도 좋긴 하지만 Texture의 레이아웃을 구성할 수 있는 코드가 너무 매력적이고 오토 레이아웃 지옥에서 빠져나올 수 있게 해줬기 때문이다. 이번에도 회사 프로젝트내의 레거시 코드를 Texture로 개선하는 작업을 하고 있었는데, 스플래시 화면 구성을 하는 도중 이슈가 발생했다.
배경 이미지가 로드 되기전에 로고 이미지가 먼저 로드되어서 이상해보이는것..
공식 문서에 있는 ASImageNode를 읽어보면 다음과 같다.
ASImageNode
is the Texture equivalent toUIImageView
. The most basic difference is that images are decoded asynchronously by default. Of course, there are more advanced improvements as well such as GIF support andimageModificationBlock
s.
간단하게 말하자면 UIImageView
와는 다르게 기본적으로 이미지 디코딩을 비동기로 처리한다는 것. 이미지 디코딩을 비동기로 처리하기 때문에 로드 순서가 같지 않고 다르게 되는 것이였다.. 다른 상황이였다면 오히려 더 좋은 퍼포먼스와 UI/UX 경험을 줄 수 있겠지만 현재 상황에선 좋지 않았다. 그래서 나는 ASImageNode
의 속성 값을 전부 훑어봤다. 그러던 중 displaysAsynchronously
라는 속성을 발견했다.
딱 내가 원하는 기능이였다. 바로 ASImageNode
에 false
로 값을 주니 아래와 같이 원하는 동작을 하는 것을 볼 수 있다.
P.S. 해당 관련 내용을 Texture-KR Gitbook에 기여했습니다. ????