我在Interface Builder中构建了一个显示有关某个对象的信息和照片的详细视图。由于信息长度和照片数量会有所不同,因此全部嵌套在UIScrollView
中。在视图转换后调整UICollectionView的大小
照片显示在UICollectionView
,但我要始终显示所有包含的照片,所以我禁用滚动并通过此功能动态变化的UICollectionView
Height
约束(整理渲染单元格时调用):
func resizePhotosCollectionView() {
photosCollectionViewHeightConstraint.constant = photosCollectionView.collectionViewLayout.collectionViewContentSize()
}
它很有效,直到UICollectionView
需要调整大小(通常通过设备方向更改)。我试图在功能上使用UIViewControllerTransitionCoordinator
:
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animateAlongsideTransition(nil) { context in
self.resizePhotosCollectionView()
}
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
}
,但结果是生涩,因为Height
约束过渡后改完成。
有什么办法如何在视图转换后自动调整UICollectionView
的大小?如果不是,如何在转换期间动态约束更改?
使用的Xcode 6.1目标IOS 8
这是几乎完美的解决方案,尤其是当同时调用'setNeedsUpdateConstraints'和'layoutIfNeeded'上后续视图(下面'UICollectionView')。谢谢蒙迪! –