如何在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
相关产品推荐
相关产品推荐

