You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在iOS中使用Swift移除相机控制按钮并扩展取景范围

解决方案

1. 移除相机默认控制按钮

直接给UIImagePickerController设置showsCameraControls属性为false,就能去掉自带的拍照、切换摄像头等控制按钮:

@IBAction func btnPressed(_ sender: Any) {
    let cameraVC = UIImagePickerController()
    cameraVC.sourceType = .camera
    // 关闭默认控制按钮
    cameraVC.showsCameraControls = false
    cameraVC.delegate = self
    self.present(cameraVC, animated: true)
}

2. 让取景画面填满屏幕(消除黑边)

默认相机预览因为和屏幕比例不匹配会出现黑边,你可以通过调整cameraViewTransform缩放预览画面,强制填满整个屏幕:

@IBAction func btnPressed(_ sender: Any) {
    let cameraVC = UIImagePickerController()
    cameraVC.sourceType = .camera
    cameraVC.showsCameraControls = false
    cameraVC.delegate = self
    
    // 计算缩放比例,让预览适配屏幕尺寸
    guard let cameraView = cameraVC.cameraView else {
        self.present(cameraVC, animated: true)
        return
    }
    let screenSize = UIScreen.main.bounds.size
    let cameraPreviewSize = cameraView.bounds.size
    
    let widthScale = screenSize.width / cameraPreviewSize.width
    let heightScale = screenSize.height / cameraPreviewSize.height
    let maxScale = max(widthScale, heightScale)
    
    // 应用缩放变换
    cameraVC.cameraViewTransform = CGAffineTransform(scaleX: maxScale, y: maxScale)
    
    self.present(cameraVC, animated: true)
}

注意:这种缩放会裁剪掉部分边缘画面,属于强制拉伸适配。如果想要更灵活的画面控制(比如保持比例同时尽量填充),建议直接使用AVFoundation框架自定义相机界面,能完全掌控取景范围和UI布局。


内容的提问来源于stack exchange,提问作者Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:55:58