У меня есть такая структура:
- контейнер (UIView)
- Заголовок (UIView)
- TableView
- CollectionView
- CollectionView
- CollectionView
Когда нажата любимая кнопка, я хочу, чтобы представление отображалось поверх всего и былопо центру.Всякий раз, когда он добавляется, когда tableView не прокручивается, он работает нормально.Однако при добавлении после прокрутки весь макет переходит на свое место.Чем больше прокрутки, тем больше прыжков.Визуальное представление макета:
https://gyazo.com/8ddc75ce1ac96ff00aa9a9d8b0d4b725
Вид загружается из XIB и центрируется в его контейнере.Якоря высоты и ширины вида уже установлены (и переводит AutoresizingMaskIntoConstraints в false).Вот метод настройки представления, которое будет центрировано.
public func configure(viewToCenterItselfInside: UIView) {
self.centerXAnchor.constraint(equalTo: viewToCenterItselfInside.centerXAnchor).isActive = true
self.centerYAnchor.constraint(equalTo: viewToCenterItselfInside.centerYAnchor).isActive = true
UIView.animate(withDuration: 0.5) {
self.alpha = 1
}
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(1500)) {
UIView.animate(withDuration: 0.5, animations: {
self.alpha = 0
}) { (_) in
self.removeFromSuperview()
}
}
}
Вот код, когда представление загружается
if let addedFavorite = Bundle.main.loadNibNamed("ConfirmationView", owner: nil, options: nil)?.first as? ConfirmationView {
view.addSubview(addedFavorite)
addedFavorite.configure(viewToCenterItselfInside: view)
}
В дополнение к попытке решить его с ограничениями I 'Мы также пытались центрировать его с помощью self.center = viewToCenterItselfInside и возиться с UIScreen.main без каких-либо результатов.Есть идеи?