Swift UICollectionViewCell';s子视图绝对帧
我一直认为这是一个很容易解决的问题,但花了很多时间来解决却没有结果 因此,我有一个UIViewController,其中包含UICollectionView。此集合从顶部填充75像素,单元设置非常简单-仅设置1UIImageView以适合容器大小。一切都是通过自动布局制作的 我的任务是让UIImageView轻触全屏。我正在做的是创建一个临时的UIImageView,并添加到UIViewController视图的层次结构中 我面临的问题是我无法在我点击的单元格中获取UIImageView的绝对帧 我尝试了各种方法来计算帧,我最近的一次尝试是Swift UICollectionViewCell';s子视图绝对帧,swift,uiimageview,autolayout,uicollectionview,uicollectionviewcell,Swift,Uiimageview,Autolayout,Uicollectionview,Uicollectionviewcell,我一直认为这是一个很容易解决的问题,但花了很多时间来解决却没有结果 因此,我有一个UIViewController,其中包含UICollectionView。此集合从顶部填充75像素,单元设置非常简单-仅设置1UIImageView以适合容器大小。一切都是通过自动布局制作的 我的任务是让UIImageView轻触全屏。我正在做的是创建一个临时的UIImageView,并添加到UIViewController视图的层次结构中 我面临的问题是我无法在我点击的单元格中获取UIImageView的绝对帧
var rect = cell.imageView.superview!.convertRect(cell.imageView.frame, toView: self.view)
但是,它返回的结果似乎忽略了集合视图顶部约束
更新:
事实证明,我的问题出在我从收集视图获取单元格的错误方式上。而不是:
let cell = collectionView.cellForItemAtIndexPath(indexPath) as! UIImageCollectionViewCell
我和他在一起
let cell = self.collectionView(collectionView, cellForItemAtIndexPath: indexPath) as! UIImageCollectionViewCell
这显然导致创建一个具有错误帧的新单元。我的糟糕,深夜编码有时不是最好的事情。多亏了这个快速的例子,我试过了,效果如期
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
@IBOutlet var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
return collectionView.dequeueReusableCellWithReuseIdentifier("aaa", forIndexPath: indexPath)
}
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 10
}
@IBAction func frame(sender: AnyObject) {
print(String(sender.frame))
let rect = sender.superview??.convertRect(sender.frame, toView: self.view)
print(String(rect))
let addedView = UIView()
view.addSubview(addedView)
addedView.frame = rect!
addedView.backgroundColor = UIColor.yellowColor()
}
}
故事板看起来像:
输出如下所示: