Improve custom proximity diming

This commit is contained in:
Ilya Laktyushin 2024-03-04 20:33:05 +04:00
parent c9bffd66f9
commit f7ca39103c

View File

@ -243,7 +243,6 @@ public final class WindowKeyboardGestureRecognizerDelegate: NSObject, UIGestureR
public class Window1 {
public let hostView: WindowHostView
public let badgeView: UIImageView
private let customProximityDimView: UIView
private var deviceMetrics: DeviceMetrics
@ -331,10 +330,6 @@ public class Window1 {
self.badgeView.image = UIImage(bundleImageName: "Components/AppBadge")
self.badgeView.isHidden = true
self.customProximityDimView = UIView()
self.customProximityDimView.backgroundColor = .black
self.customProximityDimView.isHidden = true
self.systemUserInterfaceStyle = hostView.systemUserInterfaceStyle
let boundsSize = self.hostView.eventView.bounds.size
@ -673,7 +668,6 @@ public class Window1 {
self.windowPanRecognizer = recognizer
self.hostView.containerView.addGestureRecognizer(recognizer)
self.hostView.containerView.addSubview(self.badgeView)
self.hostView.containerView.addSubview(self.customProximityDimView)
}
public required init(coder aDecoder: NSCoder) {
@ -707,11 +701,18 @@ public class Window1 {
self.updateBadgeVisibility()
}
private var proximityDimController: CustomDimController?
public func setProximityDimHidden(_ hidden: Bool) {
guard hidden != self.customProximityDimView.isHidden else {
return
if !hidden {
if self.proximityDimController == nil {
let proximityDimController = CustomDimController(navigationBarPresentationData: nil)
self.proximityDimController = proximityDimController
(self.viewController as? NavigationController)?.presentOverlay(controller: proximityDimController, inGlobal: true, blockInteraction: false)
}
} else if let proximityDimController = self.proximityDimController {
self.proximityDimController = nil
proximityDimController.dismiss()
}
self.customProximityDimView.isHidden = hidden
}
private func updateBadgeVisibility() {
@ -1170,8 +1171,6 @@ public class Window1 {
self.updateBadgeVisibility()
self.badgeView.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((self.windowLayout.size.width - image.size.width) / 2.0), y: 5.0), size: image.size)
}
self.customProximityDimView.frame = CGRect(origin: .zero, size: self.windowLayout.size)
}
}
}
@ -1383,3 +1382,25 @@ public class Window1 {
}
}
}
private class CustomDimController: ViewController {
class Node: ASDisplayNode {
override init() {
super.init()
self.backgroundColor = .black
}
}
override init(navigationBarPresentationData: NavigationBarPresentationData?) {
super.init(navigationBarPresentationData: nil)
}
required public init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func loadDisplayNode() {
let node = Node()
self.displayNode = node
}
}