使用Swift设置自定义摄影机覆盖的帧时出现问题
如问题所述,我在使用Swift语言设置自定义摄影机覆盖图的视图框时遇到问题。我一直收到一个错误,它声明“可选类型的值”CGRect“未展开”,我不太理解。问题是:使用Swift设置自定义摄影机覆盖的帧时出现问题,swift,ios8,uiimagepickercontroller,Swift,Ios8,Uiimagepickercontroller,如问题所述,我在使用Swift语言设置自定义摄影机覆盖图的视图框时遇到问题。我一直收到一个错误,它声明“可选类型的值”CGRect“未展开”,我不太理解。问题是: cameraOverlay.frame = camera.cameraOverlayView?.frame Xcode试图通过在帧的末尾添加一个bang(!)来自动更正该问题,但这也不起作用,并创建另一个错误 以下是我的自定义相机覆盖的全部nib初始化代码: @IBOutlet var cameraOverlay: UIView!
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
isnil
崩溃。我发现您给出的第一个答案似乎效果最好,同时也嵌套在if条件中,以便按照您的建议检查nil。。。。。。。我的笔尖视图加载所有按钮,但相机没有打开。我只有白色背景。你知道那里可能发生了什么吗?没关系,想清楚了!我的笔尖视图有一个不透明的白色背景。我想我假设摄像机的视野会在它上面打开,但事实并非如此。