Hãy để tôi cho bạn biết về vấn đề tôi đang gặp phải và cách tôi cố giải quyết nó. Tôi có một UIScrollView tải subviews như một cuộn từ trái sang phải. Mỗi subview có 10-20 hình ảnh khoảng 400x200 mỗi. Khi tôi cuộn từ chế độ xem sang chế độ xem, tôi gặp phải một chút chậm trễ.Đặt thuộc tính hình ảnh của UIImageView gây lag lớn
Sau khi điều tra, tôi phát hiện ra rằng sau khi dỡ tất cả các khung nhìn và thử lại lần nữa, độ trễ đã biến mất. Tôi thấy rằng bộ nhớ đệm đồng bộ của hình ảnh là nguyên nhân của độ trễ. Vì vậy, tôi đã tạo một lớp con của UIImageView đã tải hình ảnh một cách không đồng bộ. Mã tải trông giống như sau (self.dispatchQueue
trả về hàng đợi công văn nối tiếp).
- (void)loadImageNamed:(NSString *)name {
dispatch_async(self.dispatchQueue, ^{
UIImage *image = [UIImage imageNamed:name];
dispatch_sync(dispatch_get_main_queue(), ^{
self.image = image;
});
});
}
Tuy nhiên, sau khi thay đổi tất cả các UIImageView thành lớp con này, tôi vẫn gặp sự cố (tôi không chắc liệu nó có bị giảm hay không). Tôi đã đun sôi nguyên nhân của sự cố xuống self.image = image;
. Tại sao điều này gây ra quá nhiều lag (nhưng chỉ trên tải đầu tiên)?
Hãy giúp tôi. = (
Rất tiếc ... xin lỗi về lỗi nhỏ đó. – fumoboy007
Điều này rất hữu ích. Đối với những người đến câu hỏi này chỉ cần thực hiện một UIImage từ một UIView, tôi tìm thấy giải pháp này sau khi ghép qua nhiều câu trả lời: 'UIGraphicsBeginImageContext (processing.bounds.size); 'CGContextRef ctx = UIGraphicsGetCurrentContext(); '[processing.layer renderInContext: ctx]; 'UIImage * finalImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); ' –
Cảm ơn bạn! .... –