自定义相机视图 - 无法更改cameraLayout UIImagePicker、Swift的帧大小

Kut*_*ren 2 uiimageview uiimagepickercontroller ios ios-camera swift

基本上,我正在尝试制作自定义相机视图。我无法更改 UIImagePicker 内部图像视图的大小。我所说的图像视图是指显示相机视图的窗口。我希望从图片中可以看得更清楚。它是那个红色方块内部的视图(我手动绘制了那个红色方块来向您展示,不要认为它是来自代码)。

\n\n

相机视图示例

\n\n

到目前为止我尝试的任何方法都无法帮助我改变红色矩形区域的大小。以下是我到目前为止所拥有的:

\n\n
@IBAction func takePhoto(sender: UIButton) {\n    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera){\n        imagePicker =  UIImagePickerController()\n        imagePicker.delegate = self\n        imagePicker.sourceType = .Camera\n        imagePicker.allowsEditing = false\n        imagePicker.showsCameraControls = false\n\n        //Create view\n        let customViewController = CustomCameraViewController(\n            nibName:"CustomCameraViewController",\n            bundle: nil\n        )\n        let customView:CustomCameraView = customViewController.view as! CustomCameraView\n\n        //Assignments\n        customView.frame = self.imagePicker.view.frame\n        customView.delegate = self\n        self.imagePicker.cameraOverlayView?.frame.size = customView.image.frame.size\n\n        presentViewController(imagePicker,\n            animated: true,\n            completion: {\n                self.imagePicker.cameraOverlayView = customView\n            }\n        )\n    }else{\n        //Alert\n        let alert = UIAlertController(title: "\xc3\x9czg\xc3\xbcn\xc3\xbcz, kameran\xc4\xb1z\xc4\xb1 a\xc3\xa7amad\xc4\xb1k!", message: "Telefonunuz kameray\xc4\xb1 desteklemiyor veya a\xc3\xa7mam\xc4\xb1za izin verilmemi\xc5\x9f. \xc4\xb0zin vermek isterseniz ayarlardan izni a\xc3\xa7abilirsiniz.", preferredStyle: UIAlertControllerStyle.Alert)\n\n        //Creating actions\n        let okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default){\n            UIAlertAction in\n            NSLog("OK is Pressed. Proceeding...")\n        }\n\n        //Adding actions\n        alert.addAction(okAction)\n\n        //Display alert\n        self.presentViewController(alert, animated: true, completion: nil)\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我正在尝试从 xib 文件完成整个自定义视图,它与 CustomCameraView 类相关。我为 CustomCameraView 设置了两个委托方法,以便能够使用它们,但这些对于这个问题来说不是必需的,所以我不会发布代码,但我仍然认为您可能需要知道。与问题相关的是xib文件,所以请在下面找到它:

\n\n

CustomCameraViewController.xib 文件

\n\n

这些按钮显示在它们应该在的位置,但是我无法使用该 imageView。我在这里创建了一个图像视图,以便我可以获取它的frame.size并设置为选择器的frame.size(您可以在我的代码清单中看到这一点)。当然,对该图像视图的引用位于 CustomCameraView 类中,因此您也可能会注意到,我是从该类进行访问的。

\n\n

我已经诚实地尝试了一整天,但我或我自己在网上都找不到解决方案。我也读过 AVFoundation,但似乎没有明确解释如何在 AVFoundation 文档中设置该视图的帧大小,如 UIImagePicker 中,所以我决定问你们,因为我在项目中迷失了方向,无法思考另一个现在就这样。

\n\n

如果您能帮助我,我将非常感激。如果您需要更多信息,请告诉我。

\n\n

谢谢!

\n

bey*_*ulf 5

不确定你想如何改变cameraView的框架,但你可以说类似下面的内容来将视图在屏幕上向下移动100点:

 if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera){
            imagePicker =  UIImagePickerController()
            imagePicker.delegate = self
            imagePicker.sourceType = .Camera
            imagePicker.allowsEditing = false
            imagePicker.showsCameraControls = false

            //Create view
            let customViewController = CustomCameraViewController(
                nibName:"CustomCameraViewController",
                bundle: nil
            )
            let customView:CustomCameraView = customViewController.view as! CustomCameraView

            //Assignments
            customView.frame = self.imagePicker.view.frame
            customView.delegate = self
            imagePicker.cameraOverlayView = customView
            //adjust the cameraView's position
            imagePicker.cameraViewTransform = CGAffineTransformMakeTranslation(0.0, 100.0);

            presentViewController(imagePicker,
                animated: true,
                completion: {
                }
            )
        }
Run Code Online (Sandbox Code Playgroud)

如果你想缩放cameraView以占据更多的屏幕,你可以说CGAffineTransformMakeScale(scaleX,scaleY),但是你必须裁剪结果图像以匹配向用户显示的图像。