3

我正在尝试完成以下结果:

将我的 UIImagePickerController 的框架设置为,比如说 200 x 200,

将我的框架设置在右下角(就像 Facetime/Skype 一样)

并显示前/后(无关紧要)相机流。

这是我的代码,由于某种原因,setFrame 不起作用!

self.picker = [[UIImagePickerController alloc] init];
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
self.picker.showsCameraControls = NO;
self.picker.navigationBarHidden = YES;
self.picker.view.frame = CGRectMake(600, 400, 200, 200); // NOT WORKING !!!
self.picker.toolbarHidden = YES;
self.picker.wantsFullScreenLayout = NO;
self.picker.delegate = delegate;

[self presentViewController:self.picker animated:YES completion:nil];
  1. 我看过类似的 SO 主题,但他们都在谈论如何

    在 UIImagePickerController 之上设置一个视图,这根本不是我的问题。

  2. 我尝试将 self.picker 添加到大小为 200 x 200 的自定义 UIView 但仍然

    没有成功。

我在这里做错了什么?

谢谢

4

2 回答 2

5

您需要使用 的cameraViewTransform属性UIImagePicker来调整其相机框架。此属性接受CGAffineTransform您所做的任何内容(例如缩放、旋转、反转、平移等)。

例如,如果您想将相机视图向下移动 50 点并将相机视图缩放 1.2 倍其原始大小,您可以这样做:

    CGAffineTransform transform = CGAffineTransformMakeTranslation(0.0f, 50.0f);
    transform = CGAffineTransformScale(transform, 1.2f, 1.2f);
    imagePicker.cameraViewTransform = transform;
于 2014-08-14T08:57:56.607 回答
2

来自 UIViewController 参考链接

presentViewController:动画:完成:

讨论

在 iPhone 和 iPod touch 上,呈现的视图总是全屏

如果要嵌入图像选择器,则应手动将其视图添加到其他视图之一。

像这样

[self.view addSubview:self.imagePickerController.view];

我对上一篇文章中的代码进行了实验,并注释掉了最终的比例变换((使它成为全尺寸的那个),最后我得到了一个可爱的微型相机 imagePicker 漂浮在我的屏幕中间,所以它确实有效! 我使用的确切代码,包括缩放/淡入过渡,是 -

UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
imagePickerController.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage, nil];
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;

UIView *controllerView = imagePickerController.view;
controllerView.alpha = 0.0;
controllerView.transform = CGAffineTransformMakeScale(0.5, 0.5);

[[[[UIApplication sharedApplication] delegate] window] addSubview:controllerView];

[UIView animateWithDuration:0.3
          delay:0.0
        options:UIViewAnimationOptionCurveLinear
     animations:^{
         controllerView.alpha = 1.0;
     }
     completion:nil
];
[imagePickerController release];
于 2013-10-03T06:43:13.000 回答