ALAssetsLibrary图像扭曲

我正在使用下面的代码从相机胶卷加载图像。 但是当图像显示在图像视图中时,图像有时会向左旋转90度。 我怎样才能纠正这一点? 谢谢!

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset) { ALAssetRepresentation *rep = [myasset defaultRepresentation]; CGImageRef iref = [rep fullResolutionImage]; if (iref) { cell.image.image = [UIImage imageWithCGImage:iref]; } }; ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror) { NSLog(@"Can't get image - %@",[myerror localizedDescription]); }; NSString *urlString = [[_alleArtikel objectAtIndex:indexPath.row] bildURL]; NSURL *asseturl = [NSURL URLWithString:urlString]; ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init]; [assetslibrary assetForURL:asseturl resultBlock:resultblock failureBlock:failureblock]; 

更新:

使用解决scheme时:

  dispatch_async(dispatch_get_main_queue(), ^{ cell.image.image = [UIImage imageWithCGImage:iref scale:[rep scale] orientation:(UIImageOrientation)[rep orientation]]; }); 

该应用程序崩溃,我得到以下错误:

 invalid attempt to access <ALAssetRepresentationPrivate: 0x176a3350> past the lifetime of its owning ALAssetsLibrary 

我可能应该说,我正在使用cellForItemAtIndexPath方法中的代码。

更新2:

在更新用户界面时,我可以通过不使用主队列来避免错误。 我在这里的一个小节点,上面的代码是给给定的单元格加载错误的图像。 很奇怪。

你必须编辑你的方法

 if (iref) { dispatch_async(dispatch_get_main_queue(), ^{ cell.image.image = [UIImage imageWithCGImage:iref scale:[rep scale] orientation:(UIImageOrientation)[rep orientation]]; }); } 

上面的代码将以捕获/原始方向检索资产图像。

您必须更新主线程上的用户界面才能获得更好的性能。 所以你必须使用

 dispatch_async(dispatch_get_main_queue() 

要么

 performSelectorOnMainThread