2012-11-27 174 views
0

我有一个空白屏幕,我单击相机按钮并拍照,然后将该照片作为UIVIew出现在我的空白屏幕上,并且我将相机中的多个图像添加到空白屏幕。问题是有时我可以在空白屏幕上添加多个图像,但有时当我捕获图像时,并且空白屏幕上的所有图像都消失并只显示当前图像。在iPhone中捕捉图像

enter image description here

- (IBAction)openCameraOnAddButton:(id)sender { 
//NSLog(@"openCameraOnAddButton"); 
[AddImagesToCanvasView setHidden:YES]; 
UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 
picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
[self presentModalViewController:picker animated:YES]; 

}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
[picker dismissModalViewControllerAnimated:YES]; 
UIImage *image = [[info objectForKey:@"UIImagePickerControllerOriginalImage"] retain]; 


UIView *holderView; 
if(image.size.width > image.size.height || image.size.width == image.size.height) 
{ 
    holderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 180, 160)]; 
} 
else{ 
    holderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 160, 240)]; 
} 
UIImageView *imageview = [[UIImageView alloc] initWithFrame:[holderView frame]]; 
[imageview setImage:image]; 
NSLog(@"Tag By Default %d",(arc4random()%100)+10); 
[holderView setTag:(int)objectDelegate.tagForHolderView]; 
[imageview setTag:((int)objectDelegate.tagForHolderView)+1]; 
[holderView addSubview:imageview]; 


UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)]; 
[pinchRecognizer setDelegate:self]; 
[holderView addGestureRecognizer:pinchRecognizer]; 

UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)]; 
[rotationRecognizer setDelegate:self]; 
[holderView addGestureRecognizer:rotationRecognizer]; 

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; 
[panRecognizer setMinimumNumberOfTouches:1]; 
[panRecognizer setMaximumNumberOfTouches:1]; 
[panRecognizer setDelegate:self]; 
[holderView addGestureRecognizer:panRecognizer]; 

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)]; 
[tapRecognizer setNumberOfTapsRequired:1]; 
[tapRecognizer setDelegate:self]; 
[holderView addGestureRecognizer:tapRecognizer]; 


UILongPressGestureRecognizer *gestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(gestureHandler:)]; 
[holderView addGestureRecognizer:gestureRecognizer]; 

[holderView.layer setBorderColor: [[UIColor whiteColor] CGColor]]; 
[holderView.layer setBorderWidth: 3.0]; 
[self.view addSubview:holderView]; 
objectDelegate.tagForHolderView+=2; 

} 
+0

图像捕获的粘贴代码.. – Rajneesh071

+1

因为你正在分配内存给holderView所有的时候,当你的didFinishPickingMediaWithInfo调用...所以只需在你的holderView中配置你的holderView .. – Rajneesh071

+0

谢谢。我已从didFinishPcikingMediInfo中移除holderview的分配给头文件。但其行为相同 – Zohaib

回答

0

不知道,但因为你正在做的所有的操作UIImagePickerCotroller的委托方法有时可能无法正常工作。

我同时存储在文件目录&图像来解决这个我已经创造了新的线程在didFinishPickingMediaWithInfo方法&该方法移动整个代码面临着同样的问题。然后,它对我来说工作正常。尝试做到这一点。

+0

好吧让我试试这个比我会让你知道它是否有效 – Zohaib

+0

没有为我工作 – Zohaib