Skip to content

Commit 73412c7

Browse files
committed
More syntax fixes
1 parent cc3c0e7 commit 73412c7

3 files changed

Lines changed: 60 additions & 52 deletions

File tree

Sources/BarcodeScannerController.swift

Lines changed: 55 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import AVFoundation
55

66
/// Delegate to handle the captured code.
77
public protocol BarcodeScannerCodeDelegate: class {
8-
func barcodeScanner(_ controller: BarcodeScannerController, didCapturedCode code: String, type: String)
8+
func barcodeScanner(_ controller: BarcodeScannerController, didCaptureCode code: String, type: String)
99
}
1010

1111
/// Delegate to report errors.
@@ -81,12 +81,7 @@ open class BarcodeScannerController: UIViewController {
8181
}()
8282

8383
/// Video preview layer.
84-
lazy var videoPreviewLayer: AVCaptureVideoPreviewLayer = { [unowned self] in
85-
let videoPreviewLayer = AVCaptureVideoPreviewLayer(session: self.captureSession)
86-
videoPreviewLayer?.videoGravity = AVLayerVideoGravityResize
87-
88-
return videoPreviewLayer!
89-
}()
84+
var videoPreviewLayer: AVCaptureVideoPreviewLayer?
9085

9186
/// The current controller's status mode.
9287
var status: Status = Status(state: .scanning) {
@@ -100,9 +95,8 @@ open class BarcodeScannerController: UIViewController {
10095
guard status.state != .notFound else {
10196
infoView.status = status
10297

103-
DispatchQueue.main.asyncAfter(
104-
deadline: DispatchTime.now() + Double(Int64(2.0 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)) {
105-
self.status = Status(state: .scanning)
98+
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2.0) {
99+
self.status = Status(state: .scanning)
106100
}
107101

108102
return
@@ -156,16 +150,16 @@ open class BarcodeScannerController: UIViewController {
156150

157151
/// When the flag is set to `true` controller returns a captured code
158152
/// and waits for the next reset action.
159-
open var oneTimeSearch = true
153+
public var isOneTimeSearch = true
160154

161155
/// Delegate to handle the captured code.
162-
open weak var codeDelegate: BarcodeScannerCodeDelegate?
156+
public weak var codeDelegate: BarcodeScannerCodeDelegate?
163157

164158
/// Delegate to report errors.
165-
open weak var errorDelegate: BarcodeScannerErrorDelegate?
159+
public weak var errorDelegate: BarcodeScannerErrorDelegate?
166160

167161
/// Delegate to dismiss barcode scanner when the close button has been pressed.
168-
open weak var dismissalDelegate: BarcodeScannerDismissalDelegate?
162+
public weak var dismissalDelegate: BarcodeScannerDismissalDelegate?
169163

170164
/// Flag to lock session from capturing.
171165
var locked = false
@@ -181,7 +175,15 @@ open class BarcodeScannerController: UIViewController {
181175
open override func viewDidLoad() {
182176
super.viewDidLoad()
183177

178+
videoPreviewLayer = AVCaptureVideoPreviewLayer(session: self.captureSession)
179+
videoPreviewLayer?.videoGravity = AVLayerVideoGravityResize
180+
184181
view.backgroundColor = UIColor.black
182+
183+
guard let videoPreviewLayer = videoPreviewLayer else {
184+
return
185+
}
186+
185187
view.layer.addSublayer(videoPreviewLayer)
186188

187189
[infoView, headerView, settingsButton, flashButton, focusView].forEach {
@@ -195,8 +197,10 @@ open class BarcodeScannerController: UIViewController {
195197

196198
setupCamera()
197199

198-
NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground),
199-
name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil)
200+
NotificationCenter.default.addObserver(
201+
self, selector: #selector(appWillEnterForeground),
202+
name: NSNotification.Name.UIApplicationWillEnterForeground,
203+
object: nil)
200204
}
201205

202206
open override func viewWillAppear(_ animated: Bool) {
@@ -262,7 +266,7 @@ open class BarcodeScannerController: UIViewController {
262266
captureSession.addOutput(output)
263267
output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
264268
output.metadataObjectTypes = metadata
265-
videoPreviewLayer.session = captureSession
269+
videoPreviewLayer?.session = captureSession
266270

267271
setupFrames()
268272
}
@@ -272,18 +276,18 @@ open class BarcodeScannerController: UIViewController {
272276
/**
273277
Shows error message and goes back to the scanning mode.
274278

275-
- Parameter message: Error message that overrides the message from the config.
279+
- Parameter errorMessage: Error message that overrides the message from the config.
276280
*/
277-
open func resetWithError(_ message: String? = nil) {
278-
status = Status(state: .notFound, text: message)
281+
public func reset(errorMessage: String? = nil) {
282+
status = Status(state: .notFound, text: errorMessage)
279283
}
280284

281285
/**
282286
Resets the controller to the scanning mode.
283287

284288
- Parameter animated: Flag to show scanner with or without animation.
285289
*/
286-
open func reset(animated: Bool = true) {
290+
public func reset(animated: Bool = true) {
287291
status = Status(state: .scanning, animated: animated)
288292
}
289293

@@ -294,7 +298,7 @@ open class BarcodeScannerController: UIViewController {
294298
let alpha: CGFloat = status.state == .scanning ? 1 : 0
295299

296300
torchMode = .off
297-
locked = status.state == .processing && oneTimeSearch
301+
locked = status.state == .processing && isOneTimeSearch
298302

299303
status.state == .scanning
300304
? captureSession.startRunning()
@@ -314,14 +318,17 @@ open class BarcodeScannerController: UIViewController {
314318
headerView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 64)
315319
flashButton.frame = CGRect(x: view.frame.width - 50, y: 73, width: 37, height: 37)
316320
infoView.frame = infoFrame
317-
videoPreviewLayer.frame = view.layer.bounds
318321

319-
if videoPreviewLayer.connection != nil {
320-
videoPreviewLayer.connection.videoOrientation = .portrait
322+
if let videoPreviewLayer = videoPreviewLayer {
323+
videoPreviewLayer.frame = view.layer.bounds
324+
325+
if videoPreviewLayer.connection != nil {
326+
videoPreviewLayer.connection.videoOrientation = .portrait
327+
}
321328
}
322329

323-
centerSubview(focusView, size: CGSize(width: 218, height: 150))
324-
centerSubview(settingsButton, size: CGSize(width: 150, height: 50))
330+
center(subview: focusView, inSize: CGSize(width: 218, height: 150))
331+
center(subview: settingsButton, inSize: CGSize(width: 150, height: 50))
325332
}
326333

327334
/**
@@ -330,7 +337,7 @@ open class BarcodeScannerController: UIViewController {
330337
- Parameter subview: The subview.
331338
- Parameter size: A new size.
332339
*/
333-
func centerSubview(_ subview: UIView, size: CGSize) {
340+
func center(subview: UIView, inSize size: CGSize) {
334341
subview.frame = CGRect(
335342
x: (view.frame.width - size.width) / 2,
336343
y: (view.frame.height - size.height) / 2,
@@ -351,7 +358,7 @@ open class BarcodeScannerController: UIViewController {
351358

352359
- Parameter processing: Flag to set the current state to `.Processing`.
353360
*/
354-
func animateFlash(_ processing: Bool = false) {
361+
func animateFlash(whenProcessing: Bool = false) {
355362
let flashView = UIView(frame: view.bounds)
356363
flashView.backgroundColor = UIColor.white
357364
flashView.alpha = 1
@@ -366,7 +373,7 @@ open class BarcodeScannerController: UIViewController {
366373
completion: { _ in
367374
flashView.removeFromSuperview()
368375

369-
if processing {
376+
if whenProcessing {
370377
self.status = Status(state: .processing)
371378
}
372379
})
@@ -384,7 +391,7 @@ open class BarcodeScannerController: UIViewController {
384391
UIView.animate(withDuration: 1.0, delay:0,
385392
options: [.repeat, .autoreverse, .beginFromCurrentState],
386393
animations: {
387-
self.centerSubview(self.focusView, size: CGSize(width: 280, height: 80))
394+
self.center(subview: self.focusView, inSize: CGSize(width: 280, height: 80))
388395
}, completion: nil)
389396
}
390397

@@ -414,30 +421,31 @@ open class BarcodeScannerController: UIViewController {
414421
extension BarcodeScannerController: AVCaptureMetadataOutputObjectsDelegate {
415422

416423
public func captureOutput(_ captureOutput: AVCaptureOutput!,
417-
didOutputMetadataObjects metadataObjects: [Any]!,
418-
from connection: AVCaptureConnection!) {
419-
guard !locked else { return }
420-
421-
guard metadataObjects != nil && !metadataObjects.isEmpty else { return }
422-
423-
guard let metadataObj = metadataObjects[0] as? AVMetadataMachineReadableCodeObject,
424-
let code = metadataObj.stringValue
425-
, metadata.contains(metadataObj.type) else { return }
426-
427-
if oneTimeSearch {
428-
locked = true
429-
}
424+
didOutputMetadataObjects metadataObjects: [Any]!,
425+
from connection: AVCaptureConnection!) {
426+
guard !locked else { return }
427+
guard metadataObjects != nil && !metadataObjects.isEmpty else { return }
428+
429+
guard
430+
let metadataObj = metadataObjects[0] as? AVMetadataMachineReadableCodeObject,
431+
let code = metadataObj.stringValue,
432+
metadata.contains(metadataObj.type)
433+
else { return }
434+
435+
if isOneTimeSearch {
436+
locked = true
437+
}
430438

431-
animateFlash(oneTimeSearch)
432-
codeDelegate?.barcodeScanner(self, didCapturedCode: code, type: metadataObj.type)
439+
animateFlash(whenProcessing: isOneTimeSearch)
440+
codeDelegate?.barcodeScanner(self, didCaptureCode: code, type: metadataObj.type)
433441
}
434442
}
435443

436444
// MARK: - HeaderViewDelegate
437445

438446
extension BarcodeScannerController: HeaderViewDelegate {
439447

440-
func headerViewDidPressClose(_ hederView: HeaderView) {
448+
func headerViewDidPressClose(_ headerView: HeaderView) {
441449
dismissalDelegate?.barcodeScannerDidDismiss(self)
442450
}
443451
}

Sources/HeaderView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import UIKit
22

33
protocol HeaderViewDelegate: class {
4-
func headerViewDidPressClose(_ hederView: HeaderView)
4+
func headerViewDidPressClose(_ headerView: HeaderView)
55
}
66

77
/**

Sources/InfoView.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ class InfoView: UIVisualEffectView {
127127
borderView.isHidden = false
128128

129129
animate(blurStyle: .light)
130-
animateBorderView(CGFloat(M_PI_2))
130+
animate(borderViewAngle: CGFloat(M_PI_2))
131131
}
132132

133133
/**
@@ -151,7 +151,7 @@ class InfoView: UIVisualEffectView {
151151

152152
- Parameter angle: Rotation angle.
153153
*/
154-
func animateBorderView(_ angle: CGFloat) {
154+
func animate(borderViewAngle: CGFloat) {
155155
guard status.state == .processing else {
156156
borderView.transform = CGAffineTransform.identity
157157
return
@@ -162,9 +162,9 @@ class InfoView: UIVisualEffectView {
162162
initialSpringVelocity: 1.0,
163163
options: [.beginFromCurrentState],
164164
animations: {
165-
self.borderView.transform = CGAffineTransform(rotationAngle: angle)
165+
self.borderView.transform = CGAffineTransform(rotationAngle: borderViewAngle)
166166
}, completion: { _ in
167-
self.animateBorderView(angle + CGFloat(M_PI_2))
167+
self.animate(borderViewAngle: borderViewAngle + CGFloat(M_PI_2))
168168
})
169169
}
170170
}

0 commit comments

Comments
 (0)