홈>
Viewcontroller B의 버튼 클릭으로 이미지를 가져 오려고합니다. 이미지가 응답으로 수신 된 후 이미지 URL을 사용하여 viewcontroller에서 이미지 뷰를 채 웁니다. 그러나 채워지기에는 너무 오래 걸리고 화면이 멈추지 않고 화면을 부드럽게 스크롤하고 응답을 조금 일찍 얻을 수있는 방법이 있습니까?
- 답변 # 1
- 답변 # 2
이 줄은 기본 대기열에 없어야합니다
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[[responseArr objectAtIndex:indexPath.row]valueForKey:@"CategoryImage"]]];
이와 같이 변경 될 수 있습니다
NSString *getImagePath = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpeg",n1.Id]]; if([[NSFileManager defaultManager] fileExistsAtPath:getImagePath]) { UIImage *img = [UIImage imageWithContentsOfFile:getImagePath]; cell.leftImageV.image =img; [cell.activity stopAnimating]; cell.activity.hidden=YES; } else { [cell.activity startAnimating]; cell.activity.hidden=NO; cell.leftImageV.image = nil; NSLog(@"xdasdxsadxa %@",n1.mainImgStr); dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(concurrentQueue, ^{ __block NSData * imageData = nil; dispatch_sync(concurrentQueue, ^{ imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString:n1.mainImgStr]]; //Add the file name [imageData writeToFile:getImagePath atomically:YES]; //Write the file }); dispatch_sync(dispatch_get_main_queue(), ^{ if(imageData) { [self.collectionView reloadData]; } }); }); }
관련 질문
- ios : WKWebView에 필요한 클라이언트 권한이 없습니다.
- ios : iPhone에서 "말풍선"을 그리는 방법?
- Xcode를 통해 xcframework를 사용할 때 iOS 시뮬레이터 충돌
- ios : Parse를 사용하여 한 사용자에서 다른 사용자에게 푸시 알림 보내기
- ios : Tableview 셀에 추가되는 마이너스 이미지에 접근성 레이블을 어떻게 추가합니까?
- ios : UIAlertController 버튼이 보이지 않음
- Objective-C iOS 앱과 Python 백엔드 간의 통신 설정
- ios : 뷰 컨트롤러에서 프로그래밍 방식으로 선을 어떻게 그리나요?
- ios : 내 응용 프로그램은 프레임 드롭 이유로 OutOfBuffers를 겪습니다.
- ios : Xcode-빌드 단계 중 bash 스크립트에서 환경 변수 설정 /추가
이미지 검색에 디스패치 비동기를 사용하십시오. 즉, 메인 큐에서 수행하지 마십시오.
애플 독 : https://developer.apple.com/documentation/dispatch/1453057-dispatch_async