2015-09-06 18 views

回答

2

你说得对。 UICollectionViewCell不能像其他视图一样使用相同的AutoLayout规则。每个单元由UICollectionView上设置的布局类别控制。

从技术上讲,您可以在界面生成器中拖动手柄并调整其大小,但对于不同的屏幕宽度和方向它不会动态调整。

我能想到的两个选项:

  1. 覆盖的sizeForItemAtIndexPath:在视图控制器和设置为父容器的宽度编程。见更新1上question here对于如何做到这一点,或查看Apple documentation here的更多背景信息
  2. 考虑使用一个UITableView如果所有的细胞永远是全宽
0

可以使用的CollectionView布局。此代码应该对您有所帮助:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 

    var size = CGSize.zero 

    if let layout = collectionViewLayout as? UICollectionViewFlowLayout { 
     size = layout.itemSize; 
     size.width = collectionView.bounds.width 
    } 

    return size 
} 

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    collectionView.collectionViewLayout.invalidateLayout() 
} 
相关问题