mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-23 18:12:44 +02:00
Prevent Unable to activate constraint with anchors .. because they have no common ancestor. crashes. Only link toasts to the top safe area instead of the navigation controller
This commit is contained in:
committed by
Stefan Ceriu
parent
e299e3c830
commit
d6b745d50b
@@ -22,10 +22,6 @@ import MatrixSDK
|
||||
/// A presenter responsible for showing / hiding a toast view for loading spinners or success messages.
|
||||
/// It is managed by an `UserIndicator`, meaning the `present` and `dismiss` methods will be called when the parent `UserIndicator` starts or completes.
|
||||
class ToastViewPresenter: UserIndicatorViewPresentable {
|
||||
struct Constants {
|
||||
static let navigationBarPatting = CGFloat(12)
|
||||
}
|
||||
|
||||
private let viewState: ToastViewState
|
||||
private let presentationContext: UserIndicatorPresentationContext
|
||||
private weak var view: UIView?
|
||||
@@ -46,19 +42,11 @@ class ToastViewPresenter: UserIndicatorViewPresentable {
|
||||
self.view = view
|
||||
|
||||
view.translatesAutoresizingMaskIntoConstraints = false
|
||||
if let navigation = viewController.topNavigationController {
|
||||
navigation.view.addSubview(view)
|
||||
NSLayoutConstraint.activate([
|
||||
view.centerXAnchor.constraint(equalTo: navigation.view.centerXAnchor),
|
||||
view.topAnchor.constraint(equalTo: navigation.navigationBar.safeAreaLayoutGuide.bottomAnchor, constant: Constants.navigationBarPatting)
|
||||
])
|
||||
} else {
|
||||
viewController.view.addSubview(view)
|
||||
NSLayoutConstraint.activate([
|
||||
view.centerXAnchor.constraint(equalTo: viewController.view.centerXAnchor),
|
||||
view.topAnchor.constraint(equalTo: viewController.view.topAnchor)
|
||||
])
|
||||
}
|
||||
viewController.view.addSubview(view)
|
||||
NSLayoutConstraint.activate([
|
||||
view.centerXAnchor.constraint(equalTo: viewController.view.centerXAnchor),
|
||||
view.topAnchor.constraint(equalTo: viewController.view.safeAreaLayoutGuide.topAnchor)
|
||||
])
|
||||
|
||||
view.alpha = 0
|
||||
view.transform = .init(translationX: 0, y: 5)
|
||||
@@ -85,13 +73,3 @@ class ToastViewPresenter: UserIndicatorViewPresentable {
|
||||
animator?.startAnimation()
|
||||
}
|
||||
}
|
||||
|
||||
private extension UIViewController {
|
||||
var topNavigationController: UINavigationController? {
|
||||
var controller: UINavigationController? = self as? UINavigationController ?? navigationController
|
||||
while controller?.navigationController != nil {
|
||||
controller = controller?.navigationController
|
||||
}
|
||||
return controller
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user