Как удалить все элементы пользовательского интерфейса из камеры? Мне нужно получить минималистичное отображение камеры, как на втором снимке экрана.Как получить отображение камеры без элементов пользовательского интерфейса?
ответ
class Scanner: NSObject {
//MARK: - Private Properties
private var captureSession: AVCaptureSession?
private(set) var videoLayer: AVCaptureVideoPreviewLayer?
//MARK: - Initialization
override init() {
super.init()
captureSession = AVCaptureSession()
if let captureSession = captureSession {
let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
do {
let input = try AVCaptureDeviceInput(device: device)
captureSession.addInput(input)
let output = AVCaptureMetadataOutput()
captureSession.addOutput(output)
} catch {
print(error)
abort()
}
videoLayer = AVCaptureVideoPreviewLayer(session: self.captureSession)
if let videoLayer = videoLayer {
videoLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
}
}
}
В вашей UIViewController
вы установите его так:
let scanner = Scanner()
if let videoLayer = scanner.videoLayer {
videoLayer.frame = self.view.bounds
self.view.layer.addSublayer(videoLayer)
scanner.startSession()
}
Один из способов сделать это является использование UIImagePickerController
, который, вероятно, самый простой способ, чтобы сделать снимок с камера. Этот класс имеет свойство showsCameraControls
, которое вы можете установить на NO
, если вы не хотите обычного набора элементов управления. Если вы это сделаете, вам нужно будет установить свойство cameraOverlayView
на представление, которое вы предоставляете. Обычно это представление будет содержать ваш собственный набор элементов управления камерой, но вместо этого вы можете перейти в пустой вид. Вы хотите настроить представление так, чтобы оно реагировало на жесты пользователя, чтобы они могли снимать фотографию (возможно, с помощью крана) или снимать камеру без фотосъемки (для этого вы можете использовать салфетки) ,
Здравствуйте, спасибо за ваш ответ, но я получил ошибку: Значение типа «Сканер» не имеет члена «startSession» – Denis
Вставить 'captureSession.startRunning()' после установки 'captureSession'. –
У меня черный экран. http://www.imageup.ru/img76/2635267/img_0313.jpg.html – Denis