ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • although set autolayout, UIImageView's image very huge
    iOS 2020. 2. 19. 18:03
    728x90

    안녕하세요. 몇시간의 삽질 끝에 문제를 해결하고 돌아와 몇 자 적어보려 합니다... 😭
    다시는 이런 실수를 하지 않기 위해, 혹시 같은 문제를 겪고 계신 분들께 도움이 되면 좋겠습니다 :)

     


     

    문제 상황은 이러합니다.

    xib로 collectionView cell을 만들었고, 그 안에 UIImageView, UILabel 등을 autolayout으로 설정했습니다.
    그리고 db에서 값들을 가져와 설정해주었죠.
    그런데 웬걸?
    imageView의 image가 너무 커서 이미지 사이즈보다 조금 커지고 나머지 view들은 아예 사라져 버리는 일이 발생했습니다;;
    image를 넣지 않고 보면 나머지 나머지는 값도 잘 들어가있고 배치도 설정해둔대로 잘 나오는데 말이죠.

    열심히 구글링 했으나... 비슷한 상황을 겪은 분은 발견했지만 역시 원하는 답은 찾을 수 없었습니다.
    "Intrinsic Size를 system define에서 placeholder로 변경해 값을 주면 레이아웃이 제대로 잡힐거야!" 라는 답변이 있었으나 질문자도 저도 역시 해결되지 않고 있었죠...

    각설하고 제가 찾은 해답을 말씀드리면 

    원인은 view가 제대로 그려지기 전에 값을 설정해버려서 생긴 문제였습니다. 
    제대로 레이아웃이 잡히기 전에 큰 이미지를 할당해버리니 이미 큰 이미지가 들어간 후에 레이아웃이 잡혀도 정상적으로 보이지 않았던 것 같습니다. 그렇다면 레이아웃이 모두 그려지고 난 이후에 값을 할당하면 되겠죠?

    네 아시다시피 View가 그려지는 작업은 Main Queue에서 이뤄지기 때문에 이 작업을 DispatchQueue.main 에서 해주면 정상적으로 작동합니다 👏👏


    맨날 코드로만 작업해서 이런 문제가 없었는데 오랜만에 storyboard로 작업하다보니 생각보다 잔 문제들이 계속 발생하네요..
    이걸로 몇 시간을 헤맨건지... 아직도 많이 부족합니다 ㅠㅠ 
    저처럼 시간 버리지 않고 조금이라도 도움이 되셨으면 좋겠습니다! 감사합니다 :)

    'iOS' 카테고리의 다른 글

    iOS) Realm Numeric Optional  (0) 2020.02.28
    iOS) core data, transformable error  (0) 2020.02.19
    iOS) Storyboard 없이 개발하기2 (iOS13 개정판)  (0) 2020.02.10
    UIBeizerPath  (2) 2020.01.09
    map flatMap 그리고 compactMap  (0) 2019.12.30

    댓글

Designed by Tistory.