mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 23:32:41 +00: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:
parent
a8c505c2f9
commit
53798be947
2 changed files with 6 additions and 27 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
1
changelog.d/pr-7046.bugfix
Normal file
1
changelog.d/pr-7046.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Prevent autolayout crashes when showing toast notifications
|
Loading…
Reference in a new issue