【问题标题】:Trouble setting the frame for a custom camera overlay using Swift使用 Swift 为自定义相机叠加层设置框架时遇到问题
【发布时间】:2014-10-09 19:30:57
【问题描述】:

正如问题所述,我无法使用 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 以确保安全。我有一段时间遇到这个问题,直到我意识到发生了什么。

【问题讨论】:

    标签: swift ios8 uiimagepickercontroller


    【解决方案1】:

    使用这个

        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)! 
    

    【讨论】:

    • 完美!如此令人沮丧,但如此简单的修复,哈哈。非常感谢!真的很感激
    • 请注意,这将导致cameraOverlayViewnil 的崩溃。
    • 我发现您给出的第一个答案似乎效果最好,同时还嵌套在 if 条件中以按照您的建议检查 nil ......我的 nib 视图加载了所有按钮,但相机没有打开。我只得到一个白色的背景。你知道那里会发生什么吗?
    • 没关系,只是想通了!我的笔尖视图有一个不透明的白色背景。我想我认为相机视图会在它上面打开,但事实并非如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    相关资源
    最近更新 更多