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 class Window1 {
public let hostView: WindowHostView public let hostView: WindowHostView
public let badgeView: UIImageView public let badgeView: UIImageView
private let customProximityDimView: UIView
private var deviceMetrics: DeviceMetrics private var deviceMetrics: DeviceMetrics
@ -331,10 +330,6 @@ public class Window1 {
self.badgeView.image = UIImage(bundleImageName: "Components/AppBadge") self.badgeView.image = UIImage(bundleImageName: "Components/AppBadge")
self.badgeView.isHidden = true self.badgeView.isHidden = true
self.customProximityDimView = UIView()
self.customProximityDimView.backgroundColor = .black
self.customProximityDimView.isHidden = true
self.systemUserInterfaceStyle = hostView.systemUserInterfaceStyle self.systemUserInterfaceStyle = hostView.systemUserInterfaceStyle
let boundsSize = self.hostView.eventView.bounds.size let boundsSize = self.hostView.eventView.bounds.size
@ -673,7 +668,6 @@ public class Window1 {
self.windowPanRecognizer = recognizer self.windowPanRecognizer = recognizer
self.hostView.containerView.addGestureRecognizer(recognizer) self.hostView.containerView.addGestureRecognizer(recognizer)
self.hostView.containerView.addSubview(self.badgeView) self.hostView.containerView.addSubview(self.badgeView)
self.hostView.containerView.addSubview(self.customProximityDimView)
} }
public required init(coder aDecoder: NSCoder) { public required init(coder aDecoder: NSCoder) {
@ -707,11 +701,18 @@ public class Window1 {
self.updateBadgeVisibility() self.updateBadgeVisibility()
} }
private var proximityDimController: CustomDimController?
public func setProximityDimHidden(_ hidden: Bool) { public func setProximityDimHidden(_ hidden: Bool) {
guard hidden != self.customProximityDimView.isHidden else { if !hidden {
return 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() { private func updateBadgeVisibility() {
@ -1170,8 +1171,6 @@ public class Window1 {
self.updateBadgeVisibility() 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.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
}
}