我怎么设置UICollectionView中单元格的高度等于集合视图的高度?下面的代码不起作用,因为此时似乎不知道集合视图高度,因为在此阶段自动布局正在弄乱属性.它导致单元格高度高于实际集合视图.
我会在解决这个问题的答案中加上300个赏金!
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { return CGSize(width: 100, height: collectionView.frame.size.height) }
2015-12-16 18:43:53.643 My-app [1055:434762]输入代码的行为hereUICollectionViewFlowLayout未定义,因为:2015-12-16 18:43:53.643 My-app [1055:434762]项目height必须小于UICollectionView的高度减去section insets top和bottom值,减去内容insets的top和bottom值.2015-12-16 18:43:53.643 My-app [1055:434762]请检查代表返回的值.2015-12-16 18:43:53.644 My-app [1055:434762]相关的UICollectionViewFlowLayout实例是,并附加到; layer =; contentOffset:{0,0}; contentSize:{3087,307}>集合视图布局:.2015-12-16 18:43:53.644 My-app [1055:434762]在UICollectionViewFlowLayoutBreakForInvalidSizes上创建一个符号断点,以便在调试器中捕获它.
基于hannads建议的解决方案.如果有更好的方法请告诉我
与财产观察员一起建造了一处房产.
var myCollectionViewHeight: CGFloat = 0.0 { didSet { if myCollectionViewHeight != oldValue { myCollectionView.collectionViewLayout.invalidateLayout() myCollectionView.collectionViewLayout.prepareLayout() } } }
覆盖此方法(多次调用)
override func viewDidLayoutSubviews() { myCollectionViewHeight = myCollectionView.bounds.size.height }
然后我在我的代表中有这个:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { return CGSize(width: 100, height: myCollectionViewHeight) }
hannad.. 11
我就是这样做的.首先在视图控制器中添加一个全局变量,该变量将用于存储集合视图的高度.在该viewDidLayoutSubviews
方法中,将此变量设置为collectionView的高度,如果更改,则调用方法以使UICollectionView
布局无效
collectionView.collectionViewLayout.invalidateLayout()
这将调用方法来设置collectionView单元格的大小,并在该方法中,将单元格的高度设置为包含collectionView高度的全局变量.
注意:目前在我的手机上并没有测试此代码.我可能错过了什么.
我就是这样做的.首先在视图控制器中添加一个全局变量,该变量将用于存储集合视图的高度.在该viewDidLayoutSubviews
方法中,将此变量设置为collectionView的高度,如果更改,则调用方法以使UICollectionView
布局无效
collectionView.collectionViewLayout.invalidateLayout()
这将调用方法来设置collectionView单元格的大小,并在该方法中,将单元格的高度设置为包含collectionView高度的全局变量.
注意:目前在我的手机上并没有测试此代码.我可能错过了什么.
您尝试将此代码设置为viewDidLoad
:
self.automaticallyAdjustsScrollViewInsets = false
希望这有帮助!