Dual camera improvements

This commit is contained in:
Ilya Laktyushin
2023-06-22 01:35:39 +04:00
parent 1639a6a7ea
commit c67d05c386
4 changed files with 67 additions and 26 deletions

View File

@@ -59,7 +59,22 @@ public class CameraSimplePreviewView: UIView {
self.placeholderView.image = additional ? CameraSimplePreviewView.lastAdditionalStateImage() : CameraSimplePreviewView.lastStateImage()
self.addSubview(self.placeholderView)
self.resetPlaceholder()
if !additional {
if #available(iOS 13.0, *) {
self.previewingDisposable = (self.isPreviewing
|> filter { $0 }
|> take(1)
|> deliverOnMainQueue).start(next: { [weak self] _ in
self?.removePlaceholder(delay: 0.15)
})
} else {
Queue.mainQueue().after(0.35) {
self.removePlaceholder(delay: 0.15)
}
}
} else {
self.placeholderView.alpha = 1.0
}
}
required init?(coder: NSCoder) {
@@ -76,28 +91,18 @@ public class CameraSimplePreviewView: UIView {
self.placeholderView.frame = self.bounds.insetBy(dx: -1.0, dy: -1.0)
}
public func removePlaceholder(delay: Double = 0.0) {
UIView.animate(withDuration: 0.3, delay: delay) {
self.placeholderView.alpha = 0.0
}
}
public func resetPlaceholder() {
guard self.placeholderView.alpha == 0.0 else {
return
}
self.placeholderView.image = self.additional ? CameraSimplePreviewView.lastAdditionalStateImage() : CameraSimplePreviewView.lastStateImage()
self.placeholderView.alpha = 1.0
if #available(iOS 13.0, *) {
self.previewingDisposable = (self.isPreviewing
|> filter { $0 }
|> take(1)
|> deliverOnMainQueue).start(next: { [weak self] _ in
UIView.animate(withDuration: 0.3, delay: 0.15) {
self?.placeholderView.alpha = 0.0
}
})
} else {
Queue.mainQueue().after(0.5) {
UIView.animate(withDuration: 0.3) {
self.placeholderView.alpha = 0.0
}
}
}
}
private var _videoPreviewLayer: AVCaptureVideoPreviewLayer?