如何将UICollectionView的大小更改为屏幕大小的因素?

时间:2017-07-12 03:44:03

标签: ios swift uicollectionview autolayout

UICollectionView内嵌有UIViewController。要求是UICollectionView的高度始终等于屏幕大小的一半。迄今为止所尝试的是:

override func viewWillAppear(_ animated: Bool) {
  self.caCollectionView.frame.size.width = self.view.frame.size.width
  self.caCollectionView.frame.size.height = self.view.frame.size.height / 2
}

这在构建和运行时似乎没有生效。 有什么遗失的吗? 请帮忙。提前谢谢。

添加了屏幕截图:粉红色区域为UIViewController,白色区域为UICollectionView

enter image description here

2 个答案:

答案 0 :(得分:2)

您是否还要移动底部视图?

override func viewWillAppear(_ animated: Bool) {
  self.caCollectionView.frame.size.width = self.view.frame.size.width
  self.caCollectionView.frame.size.height = self.view.frame.size.height / 2
  self.pickAnotherView.frame.origin.y = self.caCollectionView.frame.origin.y+self.caCollectionView.frame.size.height
  self.pickAnotherView.frame.height = self.view.frame.height-self.caCollectionView.frame.size.height
}

您可以在有约束力的故事板上执行此操作。

  1. 设置相等的高度enter image description here
  2. 将倍数设置为0.5(视图高度的一半)enter image description here

答案 1 :(得分:1)

始终在viewDidLayoutSubviews中更新帧并使用边界而不是帧。

喜欢

override func viewDidLayoutSubviews()
  {

        super.viewDidLayoutSubviews()
        self.caCollectionView.frame.size.width = self.view.bounds.size.width 
        self.caCollectionView.frame.size.height = self.view.bounds.size.height / 2
  }