这是我的项目的工作方式,我在UIScrollView
下面有一个按钮addButton
,单击时会将您重定向到AGImagePickerController
(对于那些不知道 AGImagePickerController 的人,它是一个多图像选择器)。然后单击图像(单个或多个图像)。当您按下DONE
时,它会将图像保存在NSCachesDirectory
. 它将显示在UIScrollView
(可以删除)中选择的图像。当您addButton
再次按下时,它会向您显示picked
不久前的图像,并带有checkMark
。
问题:当我删除图像中UIScrollView
的图像时,被删除的图像AGimagePickerController
是静止的checked
。需要的是在 中删除时UIScrollVIew
也会在 中删除AGimagePickerController
。
我想要做的是,通过它保存它的图像,URL
然后将它放在我里面的一个文件夹中,NSCachesDirectory
这样我就可以轻松地加载它,但我不知道从哪里开始,因为我UIScrollView
用整数按名称排列我的图像。希望有人可以建议该怎么做。非常感谢您。
注意:对于那些阅读过本文的人,请评论您希望我在此处发布的代码的哪一部分,或者您遇到问题的部分。再次感谢你。
代码:
这是我的DONE
部分:
for (int i = 0; i < info.count; i++) {
//NSLog(@"%@", [info objectAtIndex:i]);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask ,YES );
NSString *documentsDir = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"oneSlotImages%u.png", i]];
ALAssetRepresentation *rep = [[info objectAtIndex: i] defaultRepresentation];
UIImage *image = [UIImage imageWithCGImage:[rep fullResolutionImage]];
//----resize the images
image = [self imageByScalingAndCroppingForSize:image toSize:CGSizeMake(256,256*image.size.height/image.size.width)];
//----fix image orientation
image = [image fixSlotOrientation];
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:savedImagePath atomically:YES];
}
然后在我AGIPCAssetsController.m
的(保留图像checkmark
部分的地方)
- (void)loadAssets
{
count = 0;
[self.assets removeAllObjects];
AGIPCAssetsController *blockSelf = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
// Where I make an array to put the `ALAsset Url`
selectedPhotos = [[NSMutableArray alloc] initWithArray:blockSelf.imagePickerController.selection];
@autoreleasepool {
[blockSelf.assetsGroup enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
// ALAssetRepresentation* representation = [result defaultRepresentation];
// NSUInteger assetindex= [blockSelf.assetsGroup numberOfAssets];
if (result == nil)
{
return;
}
AGIPCGridItem *gridItem = [[AGIPCGridItem alloc] initWithAsset:result andDelegate:blockSelf];
if(count < blockSelf.imagePickerController.selection.count)
{
if ( blockSelf.imagePickerController.selection != nil &&
[result isEqual:[selectedPhotos objectAtIndex:count]])
{
gridItem.selected = YES;
count++;
NSLog(@" %@",result);
}
}
[blockSelf.assets addObject:gridItem];
}];
}
dispatch_async(dispatch_get_main_queue(), ^{
[blockSelf reloadData];
});
});
}