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

iOS Swift:如何编程检查前置摄像头镜像开关及关闭镜像模式?

iOS 前置摄像头镜像模式的编程控制与状态检查

一、以编程方式关闭前置摄像头镜像模式

在iOS的AVFoundation框架中,你可以直接控制应用内前置摄像头的镜像状态,不受系统全局设置影响。核心是通过AVCaptureConnection的videoMirrored属性来设置:

示例代码(Swift)

import AVFoundation

// 初始化捕获会话
let captureSession = AVCaptureSession()
captureSession.sessionPreset = .photo

// 获取前置摄像头设备
guard let frontCamera = AVCaptureDevice.default(
    .builtInWideAngleCamera,
    for: .video,
    position: .front
), let cameraInput = try? AVCaptureDeviceInput(device: frontCamera),
      captureSession.canAddInput(cameraInput) else {
    fatalError("无法获取前置摄像头输入")
}
captureSession.addInput(cameraInput)

// 添加照片输出
let photoOutput = AVCapturePhotoOutput()
guard captureSession.canAddOutput(photoOutput) else {
    fatalError("无法添加照片输出")
}
captureSession.addOutput(photoOutput)

// 获取视频连接并关闭镜像
if let videoConnection = photoOutput.connection(with: .video) {
    // 强制关闭镜像,设置为false即可
    videoConnection.videoMirrored = false
    // 若需跟随系统设置,可结合下文的系统状态检查结果来赋值
}

// 启动会话
captureSession.startRunning()

二、检查系统前置摄像头镜像开关的状态

iOS系统全局的「前置相机镜像」开关状态,存储在系统偏好设置中,可通过读取指定的UserDefaults组来获取:

示例代码(Swift)

// 读取系统相机偏好设置
let cameraPreferences = UserDefaults(suiteName: "com.apple.Preferences.Camera")
// 默认值设为true,因为系统默认是开启镜像的
let isSystemMirrorEnabled = cameraPreferences?.bool(forKey: "CaptureDeviceFrontFacingMirror") ?? true

// 使用状态
print("系统前置摄像头镜像状态:\(isSystemMirrorEnabled ? "开启" : "关闭")")

注意事项

  • 该方式仅用于读取状态,不要尝试修改系统偏好设置,否则可能违反App Store审核规则。
  • 偏好设置的key(CaptureDeviceFrontFacingMirror)和组名可能随iOS版本变动,需注意版本兼容性测试。
  • 若你只是想获取当前应用内摄像头连接的镜像状态,直接读取videoConnection.isVideoMirrored即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:51:19