При использовании встроенного UIImagePicker от iOS разработчик имеет доступ к уменьшенному изображению, используемому в сборщике. Возможно ли получить доступ к миниатюре, используемой Filepicker, или иным образом получить доступ к URL-адресу библиотеки ALAsset, используемому Filepicker?
Миниатюра от filepicker на iOS
Ответ 1
Это, как я это сделал, но я должен предупредить вас, что это медленно (ish), и рамки, необходимые для этого, интенсивно занимаются памятью, так как он выполняет итерацию по ALAssetsLibrary, ища постеры. Это в фоновом потоке, поэтому изменения пользовательского интерфейса отправляются в основной поток для рендеринга.
self.assetsLibrary = [[ALAssetsLibrary alloc] init];
NSUInteger groupTypes = ALAssetsGroupAlbum | ALAssetsGroupSavedPhotos | ALAssetsGroupPhotoStream;
[self.assetsLibrary enumerateGroupsWithTypes:groupTypes
usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group.posterImage != nil) {
dispatch_async(dispatch_get_main_queue(), ^{
self.pictureLayer.contents = (__bridge_transfer id) CGImageCreateCopy(group.posterImage);
[self.layer setNeedsDisplay];
self.assetsLibrary = nil;
*stop = YES;
});
}
}
failureBlock:^(NSError *error) {
self.assetsLibrary = nil;
NSLog(@"AssetLib error:%@",error);
}];