Вы делаете вещи в два этапа.В viewWillAppear
вы добавляете слой предварительного просмотра, не задавая ему вообще никакого размера, так что это слой нулевого размера с нулевым началом:
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession!)
previewLayer?.videoGravity = AVLayerVideoGravity.resizeAspect
self.view.layer.addSublayer(previewLayer!)
Затем, в viewDidAppear
, вы увеличиваетеслой предварительного просмотра, задав ему фактический кадр:
previewLayer?.frame = self.view.frame
Два этапа происходят в этом порядке, и мы можем видеть скачок, вызванный изменением в кадре слоя предварительного просмотра.
Если вы не хотите видеть прыжок, не делайте этого.Не добавляйте слой предварительного просмотра, пока не дадите ему его фактический кадр.