我正在制作一个由两个主要观点组成的天气。 第一个是主视图,它有一个可滚动的UICollectionView,它有一个代表小天气卡的单元格。第二个是不同的视图,其中更详细地显示了所有天气细节。
我想在集合视图的顶部创建一个UIView并将其增长以填充屏幕。可悲的是,我一直都在失败,找不到合适的方法。 当按下单元格时,我想在单元格顶部创建一个UIView(在视图上获取它的位置),然后将其增长以填充屏幕。
我打算放置代码:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print("Cell [\(indexPath.row)] selected.")
// Get cell position on screen:
let attributes = collectionView.layoutAttributesForItem(at: indexPath)
let cellRect = attributes?.frame
let frameCellInSuperview = collectionView.convert(cellRect!, to: collectionView.superview)
print("x: \(Double(frameCellInSuperview.origin.x)), y: \(Double(frameCellInSuperview.origin.y))")
// Create a small UIView in the exact same position
// Grow the UIView to fill the screen
}
答案 0 :(得分:0)
您可以使用以下代码获取针对superview的当前索引帧:
let theAttributes:UICollectionViewLayoutAttributes! = collectionView.layoutAttributesForItem(at: indexPath)
let cellFrameInSuperview:CGRect! = collectionView.convert(theAttributes.frame, to: collectionView.superview)
现在创建一个相同帧的UIView。使用此代码:
var popView = UIView(frame: cellFrameInSuperview)
self.view.addSubview(popView)
现在通过更新框架动画视图:
UIView.animateWithDuration(3.0, animations: {
popView.frame = UIScreen.main.bounds
})