문제점

  1. 화질이 너무 깨져서 원본 데이터를 가장 낮은 품질로 압축한다음
  2. 원본 사진을 불러와 이미지뷰 크기만큼 리사이징해서 보여준다.
  3. 데이터가 많아지니깐 버벅거린다

해결법

최선의 방법인지는 확신이 들지 않지만

셀 데이터를 넣는 함수가 호출되면 해당 이미지를 파일에서 꺼내와서 메인스레드에서 리사이징 후 넣으니깐 버벅거리는게 줄어든다.

스크린샷 2023-10-13 오후 4.29.36.jpg

문제점

아니다. 지금와서 데이터가 30개쯤되니깐 빠르게 스크롤할때 버벅거린다. 아마 다운샘플링 하는 과정을 메인쓰레드에서 하는 것 때문으로 생각된다.

  1. 사이즈를 먼저 가져온다.
  2. 리사이징을 메인쓰레드가 아닌 백그라운드 스레드에서 실행하고
  3. 메인쓰레드에서 해당 이미지를 받아 실행한다.
func setData(data: DoitCompleted, totalcount: Int, index: Int){
        let filename = data.imageTitle + ".jpg"
        var size = CGSize(width: self.completeImageView.frame.width, height: self.completeImageView.frame.height)
        print("이미지뷰 사이즈 : ", size)
        DispatchQueue.global().async {
            if let fileImage = FileManager.loadImageFromDocumentDirectory(fileName: filename){
                let image = fileImage.reSize(to: size)
                print("리사이징 이미지 : ", image)
                DispatchQueue.main.async {
                    self.completeImageView.image = image
                }
            }else {
                DispatchQueue.main.async {
                    self.completeImageView.backgroundColor = .systemGray3
                }
            }
        }
        dateLabel.text = data.createDate.changeFormatString(format: "dd일")
        yearMonthLabel.text = data.createDate.changeFormatString(format: "yyyy년MM월")
        memoLabel.text = data.impression
        countLabel.text = "\\(totalcount - index)회차"
    }

Simulator Screenshot - iPhone 13 mini - 2023-10-27 at 11.21.53.png

스크린샷 2023-10-27 오전 11.22.51.jpg

스크린샷 2023-10-27 오전 11.23.04.jpg

처음 이미지를 못가져와서 프린트를 찍어보니 이미지뷰의 사이즈를 못가져온다. 스크롤을 해야지 사이즈를 가지고 오고 이미지를 넣어준다.