使用Swift设置自定义摄影机覆盖的帧时出现问题

使用Swift设置自定义摄影机覆盖的帧时出现问题,swift,ios8,uiimagepickercontroller,Swift,Ios8,Uiimagepickercontroller,如问题所述,我在使用Swift语言设置自定义摄影机覆盖图的视图框时遇到问题。我一直收到一个错误,它声明“可选类型的值”CGRect“未展开”,我不太理解。问题是: cameraOverlay.frame = camera.cameraOverlayView?.frame Xcode试图通过在帧的末尾添加一个bang(!)来自动更正该问题,但这也不起作用,并创建另一个错误 以下是我的自定义相机覆盖的全部nib初始化代码: @IBOutlet var cameraOverlay: UIView!

如问题所述,我在使用Swift语言设置自定义摄影机覆盖图的视图框时遇到问题。我一直收到一个错误,它声明“可选类型的值”CGRect“未展开”,我不太理解。问题是:

cameraOverlay.frame = camera.cameraOverlayView?.frame
Xcode试图通过在帧的末尾添加一个bang(!)来自动更正该问题,但这也不起作用,并创建另一个错误

以下是我的自定义相机覆盖的全部nib初始化代码:

@IBOutlet var cameraOverlay: UIView!

override func viewDidLoad()
{
    super.viewDidLoad()

    var camera = UIImagePickerController()
    camera.delegate = self
    camera.allowsEditing = false
    camera.sourceType = UIImagePickerControllerSourceType.Camera
    camera.showsCameraControls = false

    NSBundle.mainBundle().loadNibNamed("CameraOverlay", owner: self, options: nil)
    cameraOverlay.frame = camera.cameraOverlayView?.frame
    camera.cameraOverlayView = cameraOverlay
    cameraOverlay = nil

    self.presentViewController(camera, animated: false, completion: nil)
}
感谢您的帮助。谢谢

编辑 确保笔尖视图没有白色背景,否则相机将不会出现。将视图背景色设置为clearColor,并确保未选中“不透明”以确保安全。我有过一段时间这个问题,直到我意识到发生了什么

    cameraOverlay.frame = camera.cameraOverlayView!.frame
实际上,您使用的是
可选链接,它返回包装在
可选
中的帧用于可选的展开

或者你也可以这样做

    //it will not crash but you should handle nil case using unwrap by `!` as shown above using `if` condition
    cameraOverlay.frame  = (camera.cameraOverlayView?.frame)! 

完美的这么令人沮丧,但这么简单的修复,哈哈。非常感谢!非常感谢。请注意,这将导致
cameraOverlayView
is
nil
崩溃。我发现您给出的第一个答案似乎效果最好,同时也嵌套在if条件中,以便按照您的建议检查nil。。。。。。。我的笔尖视图加载所有按钮,但相机没有打开。我只有白色背景。你知道那里可能发生了什么吗?没关系,想清楚了!我的笔尖视图有一个不透明的白色背景。我想我假设摄像机的视野会在它上面打开,但事实并非如此。