2012-11-27 4 views
0

나는 카메라 버튼을 클릭하여 사진을 찍고 그 사진이 내 빈 화면에 UIVIew으로 나타나고 카메라에서 여러 이미지를 빈 화면에 추가하려고합니다. 문제는 때로는 빈 화면에 여러 이미지를 추가 할 수 있지만 때로는 이미지를 캡처하고 빈 화면의 모든 이미지가 사라지고 현재 이미지 만 표시됩니다.아이폰에서 이미지 캡처

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

didFinishPickingMediaWithInfo가 호출 될 때마다 holderView에 메모리를 할당하기 때문에 ... viewDidLoad에서 holderView를 할당하십시오. – Rajneesh071

+0

감사합니다. didFinishPcikingMediInfo에서 holderview 할당을 헤더 파일로 제거합니다. 하지만 그것도 동일하게 동작합니다 – Zohaib

답변

0

확실하지 않지만 모든 작업을 UIImagePickerCotroller의 위임 방법을하고 가끔이 작동하지 않을 수 있습니다. 그 방법에 전체 코드를 이동 didFinishPickingMediaWithInfo 방법 &에 나는 새 스레드를 생성 한이 문제를 해결하려면 문서 디렉토리 &에서 이미지를 저장하는 동안

나는 같은 문제에 직면했다. 그렇다면 그것은 나를 위해 잘 작동 후. 그렇게 해보십시오.

+0

내가 작동하는지 여부를 알려주지보다 이것을 시도하자. – Zohaib

+0

나를 위해 일하지 않았다 – Zohaib