전화를 클릭 할 때
func loadCamera()
{
session?.stopRunning()
videoPreviewLayer?.removeFromSuperlayer()
session = AVCaptureSession()
session!.sessionPreset = AVCaptureSessionPresetPhoto
var backCamera = AVCaptureDevice.defaultDevice(withDeviceType: .builtInWideAngleCamera, mediaType: AVMediaTypeVideo, position: .front)
if cameraPos == "back"
{
backCamera = AVCaptureDevice.defaultDevice(withDeviceType: .builtInWideAngleCamera, mediaType: AVMediaTypeVideo, position: .back)
}
var error: NSError?
var input: AVCaptureDeviceInput!
do {
input = try AVCaptureDeviceInput(device: backCamera)
} catch let error1 as NSError {
error = error1
input = nil
print(error!.localizedDescription)
}
if error == nil && session!.canAddInput(input) {
session!.addInput(input)
stillImageOutput = AVCapturePhotoOutput()
if session!.canAddOutput(stillImageOutput) {
session!.addOutput(stillImageOutput)
videoPreviewLayer = AVCaptureVideoPreviewLayer(session: session)
videoPreviewLayer?.frame = cameraView.bounds
videoPreviewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
videoPreviewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.portrait
cameraView.layer.addSublayer(videoPreviewLayer!)
session!.startRunning()
}
}
}
내가 viewWillAppear
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
loadCamera()
}
에서이 전화를하고 난 부하 카메라를 호출을 loadCamera()
내부에 viewDidAppear
대신의 기능이 있습니다.
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(true)
loadCamera()
}
배경 스레드 :
DispatchQueue.global(qos: .background).async {
// perform ui updation and web related code
// background thread
DispatchQueue.main.async {
// main thread
}
}
시도. 여전히 같은 – user2238284
당신은 또한 일부 uicomponents 업데이 트를 수행하는 배경 스레드를 사용할 수 있습니다. – vaibhav
공유 할 수있는 제안이나 링크를 볼 수 있습니까? – user2238284