Я пытаюсь быстро сделать приложение для фотобудки. Я пытаюсь выровнять верхнюю часть моего cameraPreviewLayer (который является AVCaptureVideoPreviewLayer, а не UIView на раскадровке) в нижнюю часть UIView, который находится в верхней части экрана (я называю это topBorder - у него есть fla sh).
Я думал, что смогу сделать это, выполнив следующие действия:
cameraPreviewLayer?.anchorPoint = CGPoint(x: 0, y: 0)
cameraPreviewLayer?.position = CGPoint(x: 0, y: topBorder.frame.height)
Но, похоже, это не работает, cameraPreviewLayer сидит ниже, чем высота моей черной рамки в верхней части экрана. Идея состоит в том, что cameraPrevieLayer будет отображаться прямо под верхней границей на всех экранах (это для iPhone и iPad, которые поддерживают iOS 13 или новее).
Вот еще код для контекста:
import UIKit
import AVFoundation
class ViewController: UIViewController, PreviewDelegate {
var cameraPreviewLayer: AVCaptureVideoPreviewLayer!
@IBOutlet weak var topBorder: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// Functions for capturing image
setupCaptureSession()
setupDevice()
setupInputOutput()
setupPreviewLayer()
startRunningCaptureSession()
super.viewDidLoad();
}
func setupPreviewLayer() {
cameraPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
cameraPreviewLayer?.videoGravity = AVLayerVideoGravity.resizeAspect
cameraPreviewLayer?.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
cameraPreviewLayer?.frame = self.view.frame
self.view.layer.insertSublayer(cameraPreviewLayer!, at: 0)
cameraPreviewLayer?.anchorPoint = CGPoint(x: 0, y: 0)
cameraPreviewLayer?.position = CGPoint(x: 0, y: topBorder.frame.height)
}
}
(это не весь код, если вам нужно больше контекста, просто дайте мне знать) Вот скриншот того, как это выглядит на iPhone X запущенном iOS 13.5:
![enter image description here](https://i.stack.imgur.com/kFnTX.jpg)