swift - UIView.transition 后单元格的结构被破坏
问题描述
在我的一个控制器中,我将 UICollectionView 与两侧单元格一起使用(单元格的正面有一个按钮,如果用户点击它,单元格应该显示他/她单元格的另一侧)。
所以我在我的单元格中有这个:
firstView = UIView()
...
self.addSubview(firstView)
infoView = UIView()
...
self.insertSubview(infoView, belowSubview: firstView)
两个视图中都有很多元素,为了构建这些元素,我主要使用 Visual Format 约束和锚点。
IE
let topFirstViewConstraint = firstView.topAnchor.constraint(equalTo: self.topAnchor, constant: 4)
allConstraints.append(topFirstViewConstraint)
...
let goButtonCenter = goButton.centerXAnchor.constraint(equalTo: firstView.centerXAnchor, constant: 0)
allConstraints.append(goButtonCenter)
为了在正面和背面视图之间切换,我使用 UIView.transition:
UIView.transition(from: firstView, to: infoView, duration: 0.2, options: .transitionFlipFromLeft) { (success) in
}
它就像一个魅力,我根本没有任何自动布局错误。
但是,如果我试图从约束切换firstView
到infoView
firstView
狂野,反之亦然(我仍然没有任何错误,但我知道这些视图应该看起来如何,而且一团糟)。我尝试self.updateConstraints()
在过渡关闭中使用,但它不起作用。
有没有人经历过这样的事情?
解决方案
https://developer.apple.com/documentation/uikit/uiview/1622562-transition说:
fromView:过渡的起始视图。默认情况下,此视图作为过渡的一部分从其父视图中删除。
当约束的一方从超级视图中删除时,约束会发生什么?它肯定不再起作用了。
你可以尝试什么
讨论:此方法提供了一种简单的方法,可以从 fromView 参数中的视图过渡到 toView 参数中的视图。默认情况下,fromView 中的视图在视图层次结构中被 toView 中的视图替换。如果两个视图都已经是视图层次结构的一部分,则可以在 options 参数中包含 showHideTransitionViews 选项以简单地隐藏或显示它们。
推荐阅读
- python-3.x - ValueError:无法为张量“输入/X:0”提供形状(64、80、60、3)的值,其形状为“(?、80、60、1)”
- javascript - 如何为 npm 包制作最佳汇总配置
- r - 带有ggplot2的饼图,计算条目的出现次数
- java - springboot原生查询中设置参数很慢
- java - 如何从作为构造函数参数的数组列表中检索项目
- docker - 容器内存不断增长,而应用程序和顶部报告内存稳定
- java - 将 ListView 值传递给另一个 Activity 中的多个 EditText
- r - 将日期/时间列更改为日期 24 小时时间
- azure - Azure IoT Hub 到 Esp-32(运行 Mongoose 操作系统)
- python - 如何在 Python 中删除列表中的引号(小饰品)