Я пользуюсь swift 4, и у меня есть приложение, в котором люди могут открывать камеру своего телефона через мое приложение.У меня есть ViewController с именем CameraController
, который имеет значение по умолчанию UIView
, и у меня есть представление поверх этого, называемое CameraView
, которое отображает камеру пользователя и другие кнопки поверх этого.
Когда я нажимаю одну из этих кнопок, я перехожу к другому контроллеру вида через переход (PlacesController
).Когда я отклоняю PlacesController
, я возвращаюсь к CameraController
, однако для повторного отображения теперь требуется около 8 или 10 секунд.
Можно ли как-нибудь перейти к другому контроллеру при сохранении моего текущего подпредставления?
Опять проблема в том, что когда я иду к своему контроллеру segue PlaceController
изатем вернитесь к моему CameraController
. Это займет около 8 или 10 секунд, прежде чем камера и подслой станут видимыми.В частности, этот код ниже, и мне было интересно, смогу ли я сохранить мой подслой все еще работающим, так как ожидание 10 секунд, пока он покажется, слишком много.
self.CameraView.layer.insertSublayer(previewLayer!, at: 0)
Это мой код:
class CameraController: UIViewController {
@IBOutlet weak var CameraView: UIView!
var previewLayer: AVCaptureVideoPreviewLayer?
let captureSession = AVCaptureSession()
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
DispatchQueue.main.async {
self.beginSession()
}
func beginSession() {
// gets the camera showing and displays buttons on top of it
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
self.CameraView.layer.insertSublayer(previewLayer!, at: 0)
previewLayer?.frame = self.CameraView.layer.bounds
previewLayer?.videoGravity = AVLayerVideoGravity.resizeAspectFill
captureSession.startRunning()
stillImageOutput.outputSettings = [AVVideoCodecKey: AVVideoCodecType.jpeg]
if captureSession.canAddOutput(stillImageOutput) {
captureSession.addOutput(stillImageOutput)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "PlacesController" {
let PlaceAreaSearchC: ColorC = segue.destination as! PlacesController
PlaceAreaSearchC.delegate = self
}
}
// PlacesController
class PlacesController: UIViewController {
@IBAction func backAction(_ sender: Any) {
// This is how I go back to my view CameraController
dismiss(animated: true, completion: nil)
}
}