2012-01-27 120 views
1

我正在使用图像拾取器拍照,然后进入编辑屏幕。当程序到达编辑屏幕时,虽然它在底部显示“移动和缩放”,但它不允许我移动或缩放图像。控件似乎已经死亡。我将覆盖视图移到了屏幕的顶部,以确保它不会干扰控件。这里是我设置图像选择器的代码:UIImagerPicker“移动和缩放”不起作用

- (void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType 

{ 
    self.imagePickerController.sourceType = sourceType; 

    if (sourceType == UIImagePickerControllerSourceTypeCamera) 
    { 
     self.imagePickerController.showsCameraControls = YES; 
     if (self.imagePickerController.allowsEditing==FALSE) 
     { 
      self.imagePickerController.allowsEditing = TRUE; 
     } 
    [self.imagePickerController.cameraOverlayView addSubview:self.view]; 
    } 

    if (sourceType == UIImagePickerControllerSourceTypeSavedPhotosAlbum) 
    { 
    } 
} 

我需要做什么才能使移动和缩放控件正常工作?

回答

3

即使我的覆盖视图设计为320宽x高44,imagePicker cameraOverlayView默认为320 x 480,覆盖图像视图“移动和缩放”拖动和捏手势。我调整了cameraOverlayView的大小,“移动和缩放”开始工作。下面是添加cameraOverlayView代码(覆盖是self.view):

CGRect overlayRect = self.view.frame; 
    [self.imagePickerController.cameraOverlayView setFrame:overlayRect]; 
    [self.imagePickerController.cameraOverlayView addSubview:self.view]; 
1

您应该创建/出示UIImagePicker查看更多类似这样的:

if (![UIImagePickerController isCameraDeviceAvailable: UIImagePickerControllerSourceTypeCamera]) 
{ 
    //no camera available, notify the user then exit before crashing the app 
    return; 
} 

//display picker control (no release, assume ARC) 
UIImagePickerController * uiimage_picker = [[UIImagePickerController alloc] init]; 
[uiimage_picker setSourceType:UIImagePickerControllerSourceTypeCamera]; 
[uiimage_picker setAllowsEditing:YES]; 

[uiimage_picker setDelegate: self];  
[self presentModalViewController:uiimage_picker animated:YES]; 

您不必使用模态控制器,你可以把它作为你的子视图,但这是默认的方式呈现一个。

+0

我明白,作为呈现选择器的替代方式。我遵循Apple的照片选择器示例代码。您是否建议我的演示文稿与编辑控件无法正常工作有关? – 2012-01-27 03:58:42

+0

我只是说这是我一直在做的事情,从来没有任何问题。这很容易,干净,它的工作原理。当我看到类似[self.imagePickerController.cameraOverlayView addSubview:self.view];我很害怕。 – 2012-01-27 04:07:31

+0

我同意photoPicker示例代码是这样奇怪的。我计划转换为当前呈现选择器的方式,随着应用程序的移动。现在,我解决了这个问题。见下文。 – 2012-01-27 05:22:14

0

在初始化

UIImagePickerController *imagepicker=[[UIImagePickerController alloc]init]; 
      imagepicker.delegate=self; 
      imagepicker.allowsEditing = YES; 
      if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { 
       imagepicker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary; 
      } 

的时间和委托方法你可以得到编辑的图像与关键UIImagePickerControllerEditedImage

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 


    UIImage *img=[info objectForKey:UIImagePickerControllerEditedImage]; 
}