【发布时间】:2017-07-07 17:09:28
【问题描述】:
我有这个层次结构:
UICollectionView - UICollectionViewCell - UIScrollView - UIView: DetailedView
在 UIView 中,我有详细的内容(按钮、图像视图等)。 UICollectionView 有高度限制。
在按钮点击内部,我有一个动画来平滑地改变高度:
UIView.animate(withDuration: 0.5, delay: 0.0, options: .curveLinear, animations: {
self.heightConstraint.constant = newHeight
self.collectionViewLayout.invalidateLayout()
self.superview?.layoutIfNeeded()
}, completion: { finished in })
UICollectionView 的动画是正确的,但 DetailedView 的动画很奇怪。看起来项目被拉伸了,并且它们的大小被延迟校正。
如果我滚动到侧面,我在 UICollectionView 中有 4 个单元格。
如果我不调用self.collectionViewLayout.invalidateLayout(),内容(DetailedView)会在UICollectionView 内部重复,并且根本没有内容的动画。它只是“坐在”它的位置并重复。
(现在这些是我在一个视图中的 4 个单元格中的 2 个,但它们应该在各自的“页面”上)
但应该是的
我的场景有这些限制(我已经删除了启动动画的按钮,它没有限制并且被放在左上角):
Height Constraint 在动画内部发生变化。
【问题讨论】:
标签: ios swift uiview uiscrollview