首页 > 解决方案 > 将 UIView 在容器中居中而不跳转

问题描述

我有这个结构:

当按下收藏按钮时,我希望视图显示在所有内容之上并居中。每当在 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)
        }

除了尝试使用约束来解决它之外,我还尝试使用 self.center = viewToCenterItselfInside 将其居中并在没有任何结果的情况下使用 UIScreen.main 。有任何想法吗?

标签: swiftuiviewtableviewconstraintscollectionview

解决方案


推荐阅读