Я создал этот метод для изменения размера изображения.Multi thread uiimage resize error
+ (UIImage *)imageFromImage:(UIImage *)image scaledToSize:(CGSize)newSize {
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
Все работает отлично, но если я называю этот метод в другом потоке он выходит из строя на drawInRect:
Я использую эти строки для вызова этого метода в другом потоке:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (int i = 0; i < [images count]; i++){
UIImage *img = [UIImage imageWithContentsOfFile:[images objectAtIndex:i]];
CGFloat wImg = img.size.width * imageViewSize/img.size.height;
CGSize size = CGSizeMake(wImg, imageViewSize);
img = [Utility imageFromImage:img scaledToSize:size];
}
});
Как может я делаю?
Вы должны вызвать материал пользовательского интерфейса в главной очереди. – shallowThought
поэтому я не могу сделать какой-либо процесс изображения в фоновом режиме? – Pol