无法获取用于转换的 collectionViewCell 项目的框架
can't get frame of collectionViewCell item for transition
我正在尝试将视图转换为另一个 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还没有布局导致origin不对的问题。如果是这样的话,我怎么能强制它布局。我试过:
collectionView.setNeedsLayout()
collectionView.layoutIfNeeded()
但这也没有改变原点。
如何强制 collectionView 的布局并在 viewDidAppear 之前获取特定单元格(或该单元格中的 imageView)的框架。我想避免在 viewWillLayoutSubviews 或 viewDidLayoutSubviews 中这样做,以防止这种情况不断发生 运行.
根据https://developer.apple.com/documentation/uikit/uiview/1622498-convert我们需要:
- view (collectionView.superview),我们要获取子视图的地方
位置,
- 子视图的框架 (cell.imageView.frame)
- 和子视图的父视图或 superview.superview 等,任何包含子视图的框架(单元格)的视图
我们得到
let boundingRect = collectionView.superview.convert(cell.imageView.frame, from: cell)
我正在尝试将视图转换为另一个 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还没有布局导致origin不对的问题。如果是这样的话,我怎么能强制它布局。我试过:
collectionView.setNeedsLayout()
collectionView.layoutIfNeeded()
但这也没有改变原点。
如何强制 collectionView 的布局并在 viewDidAppear 之前获取特定单元格(或该单元格中的 imageView)的框架。我想避免在 viewWillLayoutSubviews 或 viewDidLayoutSubviews 中这样做,以防止这种情况不断发生 运行.
根据https://developer.apple.com/documentation/uikit/uiview/1622498-convert我们需要:
- view (collectionView.superview),我们要获取子视图的地方 位置,
- 子视图的框架 (cell.imageView.frame)
- 和子视图的父视图或 superview.superview 等,任何包含子视图的框架(单元格)的视图
我们得到
let boundingRect = collectionView.superview.convert(cell.imageView.frame, from: cell)