创建一个UIView并将其增长到填充屏幕

时间:2017-07-30 09:08:48

标签: ios iphone uiview swift3 uicollectionview

我正在制作一个由两个主要观点组成的天气。 第一个是主视图,它有一个可滚动的UICollectionView,它有一个代表小天气卡的单元格。第二个是不同的视图,其中更详细地显示了所有天气细节。

我想在集合视图的顶部创建一个UIView并将其增长以填充屏幕。可悲的是,我一直都在失败,找不到合适的方法。 当按下单元格时,我想在单元格顶部创建一个UIView(在视图上获取它的位置),然后将其增长以填充屏幕。

This is the main view.

我打算放置代码:

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
}

1 个答案:

答案 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
    })