Skip to content

Commit a6f6989

Browse files
committed
ソースコードの整形。リリース版
1 parent 8dd96d5 commit a6f6989

File tree

6 files changed

+176
-171
lines changed

6 files changed

+176
-171
lines changed

Example/Pods/Pods.xcodeproj/project.pbxproj

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Example/QRReader/ViewController.swift

+26-17
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@ class ViewController: UIViewController {
1616

1717
override func viewDidLoad() {
1818
super.viewDidLoad()
19-
self.myQRCodeReader.delegate = self
20-
self.myQRCodeReader.setupCamera(view:self.view)
21-
//読み込めるカメラ範囲
22-
self.myQRCodeReader.readRange()
19+
self.myQRCodeReader.setupCamera(vc: self)
2320
}
2421
}
2522

@@ -29,19 +26,31 @@ extension ViewController: AVCaptureMetadataOutputObjectsDelegate{
2926
didOutput metadataObjects: [AVMetadataObject],
3027
from connection: AVCaptureConnection) {
3128
//一画面上に複数のQRがある場合、複数読み込むが今回は便宜的に先頭のオブジェクトを処理
32-
if let metadata = metadataObjects.first as? AVMetadataMachineReadableCodeObject{
33-
let barCode = self.myQRCodeReader.previewLayer.transformedMetadataObject(for: metadata) as! AVMetadataMachineReadableCodeObject
34-
//読み込んだQRを映像上で枠を囲む。ユーザへの通知。必要な時は記述しなくてよい。
35-
self.myQRCodeReader.qrView.frame = barCode.bounds
36-
//QRデータを表示
37-
if let str = metadata.stringValue {
38-
print(str)
39-
let alert = UIAlertController(title: "スキャン完了",
40-
message: str,
41-
preferredStyle: .alert)
42-
let okAction = UIAlertAction(title: "OK", style: .default)
43-
alert.addAction(okAction)
44-
self.present(alert, animated: true)
29+
if let metadata = metadataObjects.first as? AVMetadataMachineReadableCodeObject {
30+
guard let barCode = self.myQRCodeReader.previewLayer.transformedMetadataObject(for: metadata),
31+
let barCode = barCode as? AVMetadataMachineReadableCodeObject else {
32+
return
33+
}
34+
// 枠追従モード
35+
self.myQRCodeReader.followingBorder(barCode.bounds)
36+
// スキャン完了時にCameraのスキャンを停止
37+
self.myQRCodeReader.stopCamera()
38+
39+
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
40+
//QRデータを表示
41+
if let str = metadata.stringValue {
42+
print(str)
43+
let alert = UIAlertController(title: "スキャン完了",
44+
message: str,
45+
preferredStyle: .alert)
46+
let okAction = UIAlertAction(title: "OK", style: .default)
47+
let restartAction = UIAlertAction(title: "再起動", style: .default, handler: {_ in
48+
self.myQRCodeReader.restartCamera()
49+
})
50+
alert.addAction(okAction)
51+
alert.addAction(restartAction)
52+
self.present(alert, animated: true)
53+
}
4554
}
4655
}
4756
}

QRReader.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
Pod::Spec.new do |s|
1010
s.name = 'QRReader'
11-
s.version = '0.4.1'
11+
s.version = '1.0.0'
1212
s.summary = 'qr読み込みを簡略化します。'
1313

1414
s.homepage = 'https://github.com/KiraSoga/QRReader'

QRReader/Classes/DashedBorderAroundView.swift

-108
This file was deleted.
+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
//
2+
// QrBorderAroundView.swift
3+
// QRReader
4+
//
5+
// Created by KiraSoga on 2022/08/19.
6+
//
7+
8+
import UIKit
9+
10+
class QrBorderAroundView: UIView {
11+
12+
override func layoutSublayers(of layer: CALayer) {
13+
super.layoutSublayers(of: layer)
14+
15+
let rect = self.bounds
16+
let cornerRadius: CGFloat = 10
17+
18+
let upperLeft = self.getQrBorderLayer()
19+
upperLeft.mask = self.getBorderMaskLayer(.init(x: cornerRadius,
20+
y: cornerRadius))
21+
self.layer.addSublayer(upperLeft)
22+
23+
let upperRight = self.getQrBorderLayer()
24+
upperRight.mask = self.getBorderMaskLayer(.init(x: rect.maxX - cornerRadius,
25+
y: cornerRadius))
26+
self.layer.addSublayer(upperRight)
27+
28+
let bottomRight = self.getQrBorderLayer()
29+
bottomRight.mask = self.getBorderMaskLayer(.init(x: rect.maxX - cornerRadius,
30+
y: rect.maxY - cornerRadius))
31+
self.layer.addSublayer(bottomRight)
32+
33+
let bottomLeft = self.getQrBorderLayer()
34+
bottomLeft.mask = self.getBorderMaskLayer(.init(x: cornerRadius,
35+
y: rect.maxY - cornerRadius))
36+
self.layer.addSublayer(bottomLeft)
37+
38+
self.layer.cornerRadius = 10
39+
}
40+
41+
private func getQrBorderLayer() -> CAShapeLayer {
42+
let rect = self.bounds
43+
let cornerRadius: CGFloat = 10
44+
45+
let path = UIBezierPath()
46+
47+
path.move(to: CGPoint(x: 0, y: rect.maxY - cornerRadius))
48+
path.addArc(withCenter: CGPoint(x: cornerRadius, y: cornerRadius),
49+
radius: cornerRadius,
50+
startAngle: CGFloat(Double.pi),
51+
endAngle: -CGFloat(Double.pi / 2),
52+
clockwise: true)
53+
path.addArc(withCenter: CGPoint(x: rect.maxX - cornerRadius, y: cornerRadius),
54+
radius: cornerRadius,
55+
startAngle: -CGFloat(Double.pi / 2),
56+
endAngle: 0,
57+
clockwise: true)
58+
path.addArc(withCenter: CGPoint(x: rect.maxX - cornerRadius, y: rect.maxY - cornerRadius),
59+
radius: cornerRadius,
60+
startAngle: 0,
61+
endAngle: CGFloat(Double.pi / 2),
62+
clockwise: true)
63+
path.addArc(withCenter: CGPoint(x: cornerRadius, y: rect.maxY - cornerRadius),
64+
radius: cornerRadius,
65+
startAngle: CGFloat(Double.pi / 2),
66+
endAngle: CGFloat(Double.pi),
67+
clockwise: true)
68+
69+
let shapeLayer = CAShapeLayer()
70+
shapeLayer.fillColor = UIColor.clear.cgColor
71+
shapeLayer.strokeColor = UIColor.white.cgColor
72+
shapeLayer.lineWidth = 10
73+
shapeLayer.lineCap = .round
74+
shapeLayer.path = path.cgPath
75+
76+
return shapeLayer
77+
}
78+
79+
private func getBorderMaskLayer(_ cgPoint: CGPoint) -> CAShapeLayer {
80+
let path = UIBezierPath()
81+
82+
path.addArc(withCenter: cgPoint,
83+
radius: 30,
84+
startAngle: 0,
85+
endAngle: Double.pi * 2,
86+
clockwise: true)
87+
88+
let shapeLayer = CAShapeLayer()
89+
shapeLayer.fillColor = UIColor.black.cgColor
90+
shapeLayer.path = path.cgPath
91+
shapeLayer.lineWidth = 10
92+
93+
return shapeLayer
94+
}
95+
}

0 commit comments

Comments
 (0)