UITableViewCell의 contentView의 높이를 가져올때 궁금한점이 있습니다 !!

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • kilee124
      참가자
      • 글작성 : 3
      • 답글작성 : 4

      궁금한점 

      1. 제가 tableView의 heightForRow메소드를 이용하여 테이블셀들의 높이를 변경한 후에 해당 셀 클래스에서 contentView의 크기를 가져오는데 궁금한점이 생겼습니다 !

      -> viewDidLoad함수안에서 contentView의 height를 가져올때는 초기 contentView의 height를 가져오고 layoutSubViews나 updateConstraint에서 가져올때는 변경된 height값을 가져오더라구요 !

      -> 레이아웃과정을 보면은 어느정도 이해는 되지만 그렇다면 항상 변경된 contentView의 크기를 가져올때는 layoutSubViews나 updateConstraint메소드에서 가져와야할까요 ??

      -> UIView의 frame을 이용하지않고 AutoLayout을 이용하고있어서 이에 맞춰 답변 부탁드립니다, 감사드립니다 !

    • rhrnakrnakr
      참가자
      • 글작성 : 0
      • 답글작성 : 40

      말씀하시는 셀의 높이는 레이아웃의 일부분이기 때문에 제약조건이 갱신되었다고 해서 반드시 셀도 갱신이 될지는 잘 모르겠습니다.

      layoutSubviews 이후에는 레이아웃이 모두 갱신되는 게 보장되기 때문에 안전해보입니다

      • kilee124
        참가자
        • 글작성 : 3
        • 답글작성 : 4

        그렇다면 굳이 viewDidLoad함수안에 UI들의 제약조건을 거는 코드(view.topAnchor.constraint~.isActive = true)를 쓰지않고 layoutSubViews함수안에 사용하는것이 맞을까요 ??

        사실 이 함수안에 적을까하는 생각을 했지만 제약조건을 거는 코드를 레이아웃을 담당하는 layoutSubViews함수안에 넣어도될지 고민이 되더라구요 !!

        • rhrnakrnakr
          참가자
          • 글작성 : 0
          • 답글작성 : 40

          음 일단 제가 처음에 말을 잘못한 것 같아요. 제약을 어디에서 줄 지 결정하는 것은 때에 따라 다를 것 같은데요. 

          viewDidLoad는 UIViewController의 메소드이고 layoutSubViews는 UIView의 메소드인데 이 둘을 비교하는 것은 잘못되었다는 생각이 듭니다.

          먼저 뷰컨트롤러에서 줘야하는 제약인지, 뷰에서 갖고 있어야 하는 제약인지를 고민해보시면 좋을 것 같아요

          • kilee124
            참가자
            • 글작성 : 3
            • 답글작성 : 4

            아 제가 말씀드린 예시가 viewDidLoad랑 viewDidLayoutSubViews 이거 말씀드린거였어요 !!! 이게 참 상급자분의 예시코드가 있으면 좋으련만 좀 더 찾아봐야겠어요 ㅠㅠ

            • rhrnakrnakr
              참가자
              • 글작성 : 0
              • 답글작성 : 40

              그렇군요! 그렇다면 말씀하신 것처럼 viewDidLayoutSubViews에서 작성하는 게 보기에 좋을 것 같아요.

              • kilee124
                참가자
                • 글작성 : 3
                • 답글작성 : 4

                아 정말요 ? 항상 viewDidLoad함수안에 넣는것이 맞다고 생각했는데 막상 이런일이 닥치니 더 iOS개발이 재밌어지는거같아요 ㅎㅎ 바쁜 시간 저한테 써주셔서 너무 감사드립니다 !! 

              • rhrnakrnakr
                참가자
                • 글작성 : 0
                • 답글작성 : 40

                같이 공부하는 거죠! 좋은 질문 감사드립니다.

1 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom