正如问题所述,我在使用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是安全的。我有一段时间没遇到这个问题,直到我意识到发生了什么。
答案 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)!