我正在尝试将视图转换为另一个viewController的collectionViewCell的imageView。为此,我需要将collectionViewCell中的imageView框架转换为Window。
我正在尝试使用viewWillAppear中的以下内容:
let indexPath = IndexPath(item: 0, section: 0)
let cell = collectionView.cellForItem(at: indexPath) as! ImageCollectionViewCell
let boundingRect = cell.imageView.convert(cell.imageView.bounds, to: nil)
boundingRect的大小是正确的但是由于某种原因,原点是0,0而不是它应该在的位置。
我想知道问题是否尚未布置collectionView,因此原点是错误的。如果是这种情况,我该如何强制它进行布局。我试过了:
collectionView.setNeedsLayout()
collectionView.layoutIfNeeded()
但这也没有改变原点。
如何在viewDidAppear之前强制使用collectionView的布局并获取特定单元格(或该单元格中的imageView)的框架。我想避免在viewWillLayoutSubviews或viewDidLayoutSubviews中执行此操作以防止此操作持续运行。
答案 0 :(得分:2)
根据https://developer.apple.com/documentation/uikit/uiview/1622498-convert我们需要:
我们得到了
let boundingRect = collectionView.superview.convert(cell.imageView.frame, from: cell)