[Temp] Input panel progress

This commit is contained in:
Ali
2022-06-21 21:47:01 +01:00
parent abe701f625
commit 0f1b382265
44 changed files with 1728 additions and 196 deletions

View File

@@ -483,6 +483,38 @@ private func makeLayerSubtreeSnapshot(layer: CALayer) -> CALayer? {
return view
}
private func makeLayerSubtreeSnapshotAsView(layer: CALayer) -> UIView? {
if layer is AVSampleBufferDisplayLayer {
return nil
}
let view = UIView()
view.layer.isHidden = layer.isHidden
view.layer.opacity = layer.opacity
view.layer.contents = layer.contents
view.layer.contentsRect = layer.contentsRect
view.layer.contentsScale = layer.contentsScale
view.layer.contentsCenter = layer.contentsCenter
view.layer.contentsGravity = layer.contentsGravity
view.layer.masksToBounds = layer.masksToBounds
view.layer.cornerRadius = layer.cornerRadius
view.layer.backgroundColor = layer.backgroundColor
if let sublayers = layer.sublayers {
for sublayer in sublayers {
let subtree = makeLayerSubtreeSnapshotAsView(layer: sublayer)
if let subtree = subtree {
subtree.layer.transform = sublayer.transform
subtree.layer.frame = sublayer.frame
subtree.layer.bounds = sublayer.bounds
view.addSubview(subtree)
} else {
return nil
}
}
}
return view
}
public extension UIView {
func snapshotContentTree(unhide: Bool = false, keepTransform: Bool = false) -> UIView? {
let wasHidden = self.isHidden
@@ -523,6 +555,26 @@ public extension CALayer {
}
}
public extension CALayer {
func snapshotContentTreeAsView(unhide: Bool = false) -> UIView? {
let wasHidden = self.isHidden
if unhide && wasHidden {
self.isHidden = false
}
let snapshot = makeLayerSubtreeSnapshotAsView(layer: self)
if unhide && wasHidden {
self.isHidden = true
}
if let snapshot = snapshot {
snapshot.frame = self.frame
snapshot.bounds = self.bounds
return snapshot
}
return nil
}
}
public extension CGRect {
var topLeft: CGPoint {
return self.origin