• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

chat app만드는 강의를 듣고 공부하다 질문이 있습니다

19.08.18 04:39 작성 조회수 58

0

chat app 강의를 듣고 문자메세지말고

이미지 메세지를 보내는 것도 해보고 싶어서

이미지 뷰의 넓이를 고정해놓고 이미지 크기에 따라 변하는 높이를 구현해봤습니다.

그런데 생각한데로 잘나오지 않습니다.

좋은 방법이 있을까요?

 

 

 

 

답변 2

·

답변을 작성해보세요.

0

김태완님의 프로필

김태완

질문자

2019.08.20

다른 방법으로 해결 했습니다!!

다음에 만들어 볼때는 위에 방법으로 해봐야겠군요

답변해주셔서 감사합니다

0

안녕하세요

 

이미지 크기에 맞춰 셀 높이가 변하는 질문을 주셨는데요.

 

보통 화면에서 최초로 나오는 셀들의 높이가 갱신이 제대로 안되는 경우가 생기는데 그 상태에서 스크롤을 하면 제대로 나오기도 합니다.

 

이건 테이블뷰의 고질적인 문제인데

이 문제를 질문하신걸로 이해하고 답변 드릴께요.

아니면 다시 질문주세요^^

 

자 그럼  최초로 그려지는 셀은 화면갱신 안되는 문제가 있으니 갱신을 추가하는 로직이 필요합니다.

그리고 갱신하는 방법은 몇가지 있습니다.

 

1.

viewDidAppear에

tableView.reloadData를 추가한다.

 

2.

데이터 받기 완료후에 

tableView.reloadData

tableView.setNeedsLayout

tableView.layoutIfNeeded

tableView.reloadData

이렇게 데이터갱신과 화면갱신 데이터갱신 코드를 모두 넣는다.

 

3. 

셀이 화면에 나온 후 화면갱신 코드를 추가한다.

아래와 같은 형태라고 보시면 됩니다.

class CustomCell: UITableViewCell {

    override func didMoveToSuperview() {

        super.didMoveToSuperview()

        self.layoutIfNeeded()

    }

}

참고로 didMoveToSuperview는 셀이 화면에 나온후 호출되는 매소드 입니다.

 

4.

api에 width, height값을 추가하고 그걸 받아서 이미지url 받아올 때 이미지의 높이값을 설정한 후 reloadData한다.

물론 아이폰 화면크기에 맞춰 이미지 높이를 나오게 하는 비율계산은 좀 필요하겠죠.

 

5.

만약 이런식으로 해결이 안된다면 타협을 할수도 있겠죠.

그냥 이미지 높이를 고정으로 쓰는방법도 고려할 수 있습니다.

 

보통 이런식이면 해결되고 정말 이 방법들로도 안되면

UICollectionView를 사용하는 방법도 있습니다.

 

도움되시길 바랍니다.