1
Swift3 iOS10アプリ。私はSCNView
をストーリーボードフレームに入れました。私はUIView
を(Bring to Front)の上に置き、スクリーンの中央部分だけを塗りつぶすようにサイズを決めました。AVFoundationプレビューが表示されない
私のviewDidLoad
私はAVFoundationを使ってカメラを見つけ、セッションを構築し、入力を追加してプレビューを行い、そのプレビューをUIView
のレイヤーに追加します。
そして、私が代わりにプレビューの白い四角形を取得します:
私はどこかのステップを見逃していると仮定し...
// 3D scene and vars
@IBOutlet var sceneView: SCNView!
var camera: SCNNode!
var sphere: SCNNode!
// camera scene and vars
@IBOutlet var cameraView: UIView!
var cameraSession: AVCaptureSession = AVCaptureSession()
var cameraDevice : AVCaptureDevice!
var cameraInput : AVCaptureDeviceInput!
var cameraLayer: AVCaptureVideoPreviewLayer!
override func viewDidLoad() {
... 3D setup here ...
cameraDevice = AVCaptureDevice.defaultDevice(withDeviceType: .builtInWideAngleCamera, mediaType: AVMediaTypeVideo, position: .back)
do {
let possibleCameraInput: AnyObject? = try AVCaptureDeviceInput(device: cameraDevice)
if let anInput = possibleCameraInput as? AVCaptureDeviceInput {
if cameraSession.canAddInput(anInput) {
cameraSession.addInput(anInput)
}
}
} catch _ {
//TODO handle this error
}
// add the preview layer to our imageview
if cameraSession.inputs.count > 0 {
cameraLayer = AVCaptureVideoPreviewLayer(session: cameraSession) as AVCaptureVideoPreviewLayer
cameraView.layer.addSublayer(cameraLayer)
}
cameraSession.startRunning()
これまでSCNViewの中から試したことはありませんでしたが、あなたのやり方は大丈夫です。あなたの問題のIDを持つことが、TODOのキャッチエラーを最初に埋め込むことを提案している場合。あなたのifステートメントを取得し、実際に入力を取得し、あなたのビューとレイヤーにサイズ(チェック制約など)があることを確認し、ビューを検査してください。シミュレータでこれを試していないのですか? – Scriptable
SCNViewとUIViewは "外部ビュー"のピアであり、1つのXcodeが自動的に挿入されます。はい、これは私の電話で実行されています...スナップを追加します。また、すべてのifはOKで、エラーはスローされません。 –