【发布时间】:2017-01-16 08:47:40
【问题描述】:
我创建了这个方法来调整图像的大小。
+ (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];
}
});
我该怎么办?
【问题讨论】:
-
你必须在主队列中调用 UI 的东西。
-
所以我不能在后台进行任何图像处理?
标签: objective-c multithreading io uiimage