【问题标题】:Capturing Image in Iphone在 Iphone 中捕获图像
【发布时间】:2012-11-27 14:34:30
【问题描述】:

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

- (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;

}

【问题讨论】:

  • 粘贴抓图代码..
  • 因为您在调用 didFinishPickingMediaWithInfo 时一直在为 holderView 分配内存......所以只需在 viewDidLoad 中分配您的 holderView ..
  • 谢谢。我已经从 didFinishPcikingMediInfo 中删除了 holderview 到头文件的分配。但它的行为相同
  • 你在哪里分配 holderView ......还有一件事,捕获图像的大小是多少......?
  • 我在 .h 文件中分配 holderView。图片大小正常。就像您从相机捕获图像一样。就是这个尺寸

标签: iphone objective-c ios xcode


【解决方案1】:

不确定,但由于您正在执行所有操作,UIImagePickerCotroller 的 委托方法有时可能无法正常工作。

我在将图像存储在文档目录中时遇到了同样的问题,为了解决这个问题,我在 didFinishPickingMediaWithInfo 方法中创建了新线程并在该方法中移动了整个代码。然后它对我来说很好。尝试这样做。

【讨论】:

  • 好吧,让我试试这个,我会告诉你它是否有效
猜你喜欢
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-26
  • 2011-09-12
相关资源
最近更新 更多