使用CGImageSourceCreateWithURL和CGImageSourceCopyPropertiesAtIndex时UI被阻止

时间:2016-06-16 00:33:30

标签: ios objective-c cgimagesource

我通过存储在名为destination_urls的数组中的URL来检查图像的尺寸。然后我计算图像的高度,如果它们被拉伸到屏幕的宽度,同时保持纵横比。所有这些都是在for循环中完成的。

运行代码时,应用程序UI在for循环期间卡住。如何修改代码以确保应用程序不会冻结?

int t = 0;
int arraycount =  [_destination_urls count];

dispatch_async(dispatch_get_main_queue(), ^{

for (int i = 0; i < arraycount; i++) {
    NSURL *imageURL =  [NSURL URLWithString:[_destination_urls[i] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    CGImageSourceRef imgSource = CGImageSourceCreateWithURL((__bridge CFURLRef)imageURL, NULL);
    NSDictionary* imageProps = (__bridge_transfer NSDictionary*) CGImageSourceCopyPropertiesAtIndex(imgSource, 0, NULL);

    NSString *imageHeighttoDisplay = [imageProps objectForKey:@"PixelHeight"];
    originalimageHeight = [imageHeighttoDisplay intValue];
    NSString *imageWidthtoDisplay = [imageProps objectForKey:@"PixelWidth"];
    originalimageWidth = [imageWidthtoDisplay intValue];

    if (imgSource){

        _revisedImageURLHeight[t] = [NSNumber numberWithInt:(screenWidth)*(originalimageHeight/originalimageWidth)];

        t = t +1;

        CFRelease(imgSource);
    }


}

});

0 个答案:

没有答案