개발자

sns기능을 구현중에 있습니다.

2024년 04월 26일조회 131

swift 로 sns 기능을 구현 중에 있습니다. 메모리 관리를 위해 테이블 뷰로 피드 창을 구현하였는데 Pagination을 위하여 테이블뷰 셀 안에 스크롤뷰를 구현에 그 안에 frame에 맞춰 Imageview를 넣어주었습니다. 이 상황에서 무한 스크롤 , 새로고침 기능 시 셀 재사용으로 인하여 이전 셀의 이미지가 살짝 보였다가 현재의 이밎로 보이거나 override된 셀의 prepare reuseable 함수에서의 초기화를 함에도 깜빡이는 현상이 지속됩니다. 혹시 좋은 의견 있으신가 여쭤봅니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

김민식님의 프로필 사진

이미지 셀이 깜빡하는 상황에서 고려해 볼 수 있는 문제는 1. 스레드 관리(데이터 로딩/ 렌더링 스레드 관리를 어떻게 해주고 있는지) 2. 1번이 잘 고려가 됐다면 이미지 캐싱 이렇게 보시면 어떨까요!?

양승완님의 프로필 사진

양승완

작성자

협성대학교 컴퓨터공학과2024년 05월 05일

셀이 재사용되는 상황에서 깜빡거리는 현상이 발생하는거 같습니다! 이미지는 kingfisher를 사용하였습니다! 첫번째 , 마지막 이미지만 새로고침 처리에 필요하기 때문에 그쪽 셀만 재사용하지 않고 새로운 셀로 처리하게 하였는데 스레드 관리를 통해서도 가능할까요?

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 04월 26일

이 스크립트에서 제시한 문제는 셀 재사용에 관련된 것으로 보입니다. 이러한 문제를 해결하는 한 가지 방법은 비동기적 이미지 로딩을 사용하는 것입니다. 테이블 뷰가 초기화되거나 셀의 내용이 변경될 때마다, 이미지를 다운로드하고 캐시하는 작업을 수행해야 합니다. 이 과정은 비동기적으로 이루어져야 하며, 이를 위해 DispatchQueue나 NSOperationQueue와 같은 도구를 사용할 수 있습니다. 또한, 각 셀에 대한 unique identifier를 설정하여 해당 셀에 대응되는 이미지만 표시하게 하는 것도 좋은 방법일 수 있습니다. 이렇게 하면 잘못된 이미지가 나타나는 현상을 피할 수 있습니다. 또 다른 방안으로는 SDWebImage와 같은 라이브러리를 사용하여 이미지 로딩과 캐싱을 자동화하는 것입니다. 코드 모양새로서 아래처럼 진행 될 수 있습니다. ```swift // Asynchronously download and cache the image let imageUrl: URL = //... your image url imageView.sd_setImage(with: imageUrl) { (image, error, cacheType, imageURL) in // If there's an error or no image, return early without fading in the image guard let image = image else { return } // Fade in the image self.imageView.alpha = 0.0 UIView.transition(with: self.imageView, duration: 0.5, options: .transitionCrossDissolve, animations: { self.imageView.image = image self.imageView.alpha = 1.0 }, completion: nil) } ``` 이 방법들을 시도해보시고 그 중 가장 효과적인 것을 선택하여 사용해 보세요.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!