From e98520ad3757a9321a67c461ae5f20746eae8f3a Mon Sep 17 00:00:00 2001 From: nelanelanela Date: Tue, 21 Oct 2014 09:32:05 +0100 Subject: [PATCH] Camera lifcycle enhenced. --- .../UserInterfaceState.xcuserstate | Bin 44613 -> 44586 bytes camera/CameraManager.swift | 13 +++++++---- camera/ViewController.swift | 22 ++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/camera.xcodeproj/project.xcworkspace/xcuserdata/nataliaterlecka.xcuserdatad/UserInterfaceState.xcuserstate b/camera.xcodeproj/project.xcworkspace/xcuserdata/nataliaterlecka.xcuserdatad/UserInterfaceState.xcuserstate index e97c3c4a930e061b8f8b5dac611518ec516bbc64..c5e9958ed5ca52fec64582073fc6d6f2b2bc6979 100644 GIT binary patch delta 20721 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

L`$(6`pN)pyi))_2u+*Z0?t&`;IR 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 delta 20869 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 Void in }) + self._setupCamera({Void -> Void in + if let validEmbedingView = self.embedingView? { + self._addPreeviewLayerToView(validEmbedingView) + } + }) } } @@ -463,8 +467,9 @@ class CameraManager: NSObject, AVCaptureFileOutputRecordingDelegate { validCaptureSession.commitConfiguration() validCaptureSession.startRunning() self._startFollowingDeviceOrientation() - completition() self.cameraIsSetup = true + + completition() } }) } else { diff --git a/camera/ViewController.swift b/camera/ViewController.swift index 0ce30a4..9ddce08 100644 --- a/camera/ViewController.swift +++ b/camera/ViewController.swift @@ -10,12 +10,19 @@ import UIKit class ViewController: UIViewController { + // MARK: - Constants + let cameraManager = CameraManager.sharedInstance + // MARK: - @IBOutlets + @IBOutlet weak var cameraView: UIView! @IBOutlet weak var imageView: UIImageView! @IBOutlet weak var cameraButton: UIButton! + + // MARK: - UIViewController + override func viewDidLoad() { super.viewDidLoad() @@ -27,6 +34,21 @@ class ViewController: UIViewController { } } + override func viewWillAppear(animated: Bool) + { + super.viewWillAppear(animated) + self.cameraManager.resumeCaptureSession() + } + + override func viewWillDisappear(animated: Bool) + { + super.viewWillDisappear(animated) + self.cameraManager.stopCaptureSession() + } + + + // MARK: - @IBActions + @IBAction func changeFlashMode(sender: UIButton) { self.cameraManager.flashMode = CameraFlashMode.fromRaw((self.cameraManager.flashMode.toRaw()+1)%3)!