无法使用Swift设置自定义相机覆盖的帧

时间:2014-10-09 19:30:57

标签: swift ios8 uiimagepickercontroller

正如问题所述,我在使用Swift语言为自定义相机覆盖设置视图时遇到问题。我一直收到一个错误,指出“可选类型的值”CGRect“未解包”,我不太明白。问题是这一个:

cameraOverlay.frame = camera.cameraOverlayView?.frame

Xcode尝试通过在帧的末尾添加一个bang(!)来自动更正问题,但这也不起作用,并产生另一个错误。

以下是我的自定义相机叠加层的整个笔尖初始化代码:

@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,并确保未选中opaque是安全的。我有一段时间没遇到这个问题,直到我意识到发生了什么。

1 个答案:

答案 0 :(得分:4)

使用此

    cameraOverlay.frame = camera.cameraOverlayView!.frame

实际上您正在使用?可选链接,它返回optional中包含的帧。!用于可选的展开

或者您也可以

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