我有一个iOS
项目,它从数据源方法中提取图像。我希望能够从assets library
(和下面的代码块这样做就好)拉图像。iOS - 从块中返回一个变量
但是,我需要这个dataSource
方法返回UIImage
,但是当我使用资产库方法获取图像时,图像返回到结果块中。简单地将return image
放在结果块中显然不起作用。
有没有人有任何想法如何我可以从结果块内返回UIImage
?我还看到了其他几个关于在块内返回图像的问题,但他们说要调用另一种方法。我 - 不幸 - 不能这样做,因为这种方法是一个nimbus数据源方法,它必须返回一个UIImage。
任何帮助或建议将不胜感激!代码如下:
- (UIImage *)photoAlbumScrollView: (NIPhotoAlbumScrollView *)photoAlbumScrollView
photoAtIndex: (NSInteger)photoIndex
photoSize: (NIPhotoScrollViewPhotoSize *)photoSize
isLoading: (BOOL *)isLoading
originalPhotoDimensions: (CGSize *)originalPhotoDimensions {
__block UIImage *image = nil;
ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
[assetslibrary assetForURL:[_photos objectAtIndex:photoIndex]
resultBlock:^(ALAsset *asset){
ALAssetRepresentation *rep = [asset defaultRepresentation];
CGImageRef imageRef = [rep fullScreenImage];
if (imageRef) {
image = [UIImage imageWithCGImage:imageRef];
}
}
failureBlock:^(NSError *error) {
//return nil;
}];
return image;
}
请问您可以提供更多关于这个dataSource方法的代码吗?你上面的代码显然是功能性的,但是你说如果来自dataSource没有办法发送消息 - 我必须相信我并不是唯一不知道真正问题在这一点上的人。 –
返回的图像始终为零,因为assetslibary调用是异步的。所以在'resultBlock'执行之前,返回的图像被触发。在'image = [UIImage imageWithCGImage:imageRef]'后面的'resultBlock'中放置一个'return image'似乎是非法的;' – Brett
我想你必须重新加载你的架构才能在查询你的图片之前加载图片数据源。 –