I'm building an camera app in Swift3. When I try running my app on my iPhone it displays the following error. Not sure why or what to do.
import UIKit
import AVFoundation
class ViewController: UIViewController {
@IBOutlet weak var previewView:UIView!
var session = AVCaptureSession()
var photoOutput = AVCapturePhotoOutput()
let notification = NotificationCenter.default
override func viewDidLoad() {
super.viewDidLoad()
if session.isRunning {
return
}
setupInputOutput()
setPreviewLayer()
session.startRunning()
notification.addObserver(self,
selector: #selector(self.changedDeviceOrientation(_:)),
name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
}
@IBAction func takePhoto(_ sender: AnyObject) {
let captureSetting = AVCapturePhotoSettings()
captureSetting.flashMode = .auto
captureSetting.isAutoStillImageStabilizationEnabled = true
captureSetting.isHighResolutionPhotoEnabled = false
photoOutput.capturePhoto(with: captureSetting, delegate: self)
}
func setupInputOutput(){
session.sessionPreset = AVCaptureSessionPresetPhoto
do {
let device = AVCaptureDevice.defaultDevice(
withDeviceType: AVCaptureDeviceType.builtInWideAngleCamera,
mediaType: AVMediaTypeVideo,
position: .back)
let input = try AVCaptureDeviceInput(device: device)
if session.canAddInput(input){
session.addInput(input)
}else {
print("セッションに入力を追加できなかった")
return
}
} catch let error as NSError {
print("カメラがない\(error)")
return
}
if session.canAddOutput(photoOutput) {
session.addOutput(photoOutput)
} else {
print("セッションに出力をできなかった")
return
}
}
func setPreviewLayer(){
let previewLayer = AVCaptureVideoPreviewLayer(session: session)
guard let videoLayer = previewLayer else {
print("プレビューレイヤーを作れなかった")
return
}
videoLayer.frame = view.bounds
videoLayer.masksToBounds = true
videoLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
//previewViewに追加する
previewView.layer.addSublayer(videoLayer)
}
func changedDeviceOrientation(_ notification :Notification) {
if let photoOutputConnection = self.photoOutput.connection(withMediaType: AVMediaTypeVideo) {
switch UIDevice.current.orientation {
case .portrait:
photoOutputConnection.videoOrientation = .portrait
case .portraitUpsideDown:
photoOutputConnection.videoOrientation = .portraitUpsideDown
case .landscapeLeft:
photoOutputConnection.videoOrientation = .landscapeRight
case .landscapeRight:
photoOutputConnection.videoOrientation = .landscapeLeft
default:
break
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
it can't be running. when I try it running, "ETC_BREAKPOINT(code=1,subcode=0x1002b51fc" is appeared.there's no code error.