如何停止保存图像。这已经存在于iphone照片库中。
此代码用于saveImage .....
-(IBAction)saveImage:(id)sender
{
NSLog(@"calling save");
if (coverPage !=nil)
{
NSData * imageData = UIImagePNGRepresentation(coverPage);
UIImage *theImage = [UIImage imageWithData:imageData];
UIImageWriteToSavedPhotosAlbum(theImage, self, nil, nil);
}
else {
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Image is nil" delegate:self cancelButtonTitle:@"Cancle" otherButtonTitles:@"OK",nil];
[alertView show];
[alertView release];
}
}
如果图像被保存并再次点击则照片正在保存.....如何在保存后停止保存图像。
答案 0 :(得分:1)
如果没有更多的上下文,很难说,但从广义上讲,您可以使用变量来跟踪您之前是否已保存当前coverPage
,并且如果有的话,只需避免重新保存它。例如:
-(IBAction)saveImage:(id)sender{
NSLog(@"calling save");
if (coverPageAlreadySaved) {
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Silly user, you already saved this image." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil];
[alertView show];
[alertView release];
}
else if (coverPage !=nil) {
NSData * imageData = UIImagePNGRepresentation(coverPage);
UIImage *theImage = [UIImage imageWithData:imageData];
UIImageWriteToSavedPhotosAlbum(theImage, self, nil, nil);
coverPageAlreadySaved = YES;
}
else {
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Image is nil" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil];
[alertView show];
[alertView release];
}
}
...确保在coverPageAlreadySaved = NO
发生更改时设置coverPage
(无论您何时在代码中执行此操作)。
或者,由于您已经对nil
进行了检查,您可以这样做:
-(IBAction)saveImage:(id)sender{
NSLog(@"calling save");
if (coverPage !=nil) {
NSData * imageData = UIImagePNGRepresentation(coverPage);
UIImage *theImage = [UIImage imageWithData:imageData];
UIImageWriteToSavedPhotosAlbum(theImage, self, nil, nil);
coverPage = nil;
}
else {
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Image is nil" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil];
[alertView show];
[alertView release];
}
}
...这将阻止图像重新保存,直到它在代码中的其他位置更新(此时我认为它计为新的coverPage
)。
答案 1 :(得分:0)
如果它只是一个你要保存的图像,那么你可以用BOOL ivar执行这个标记,例如:
BOOL imageSaved;
每当你点击按钮时,它只会检查是否!imageSaved然后执行保存。 但如果它只是一个图像,那么你可以使用NSMutableArray.Like:
来做到这一点NSMutableArray *savedImages;//it's an ivar
然后在执行保存操作之前:
NSString *imageName=......//Here I asssume you can get the image's name
if(!imageSaved)
NSMutableArray *savedImages=[[NSMutableArray alloc]init];
if (![savedImages containsObject:imageName]){
.........这是保存操作 最后,将imageName添加到数组
[savedimages addObject:imageName];
}
我给你举了一个例子。您可能不知道保存的图像的名称。如果是这种情况,您可以标记图像(可以通过多种方式执行)并添加图像本身。
答案 2 :(得分:0)
将UIButton
也设为IBOutlet
。然后在IBAction中将enabled属性设置为NO。在程序的其他位置将UIButton IBOutlet设置回YES以“重置”按钮。它类似于使用UIStepper
,因为您必须将其声明两次...一次为IBAction
,一次为IBOutlet
。
这将允许您使用按钮一次,然后将其“灰显”或“静音”以防止进一步激活。基本上,您要从UIGestureRecognizer
停用UIButton
。
设置IBAction
和IBOutlet
。
- (IBAction)saveImageButton:(id)sender;
@property (weak, nonatomic) IBOutlet UIButton *saveImageButton;
在IBAction中将启用设置为NO。
- (IBAction)saveImageButton:(id)sender {
UIImageWriteToSavedPhotosAlbum(_processedImageView.image, nil, nil, nil);
_saveImageButton.enabled = NO;
}
然后在程序的其他位置将其更改为YES以“重置”按钮,以便您可以再次使用它。
_saveImageButton.enabled = YES;