swift - 将 UIView 在容器中居中而不跳转
问题描述
我有这个结构:
- 容器(UIView)
- 标题(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 。有任何想法吗?
解决方案
推荐阅读
- ios - Swift 4 - 如何覆盖标签栏将打开视图控制器
- java - SQLiteConstraintException:NOT NULL 约束android
- c++ - 如何检测可变参数函数参数列表中给定类型参数的可用性并在处理所有参数后采取行动
- html - 定位待办事项列表元素的问题
- algorithm - 给定一个对象向量,查找范围最快的速度是多少?
- dart - 如何为大量 CheckboxListTiles 创建一个布尔值?
- python - 在 Python Web 驱动程序中检索 HTML 元素对象
- c++ - 图中的 MST 相关边
- api - JWT 令牌似乎是正确的,但收到的响应是 401
- python - 熊猫列中不同组的不同缩放比例