当前位置:  开发笔记 > 编程语言 > 正文

UICollectionViewCell和UICollectionView的高度相等

如何解决《UICollectionViewCell和UICollectionView的高度相等》经验,为你挑选了2个好方法。

我怎么设置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高度的全局变量.

注意:目前在我的手机上并没有测试此代码.我可能错过了什么.



1> hannad..:

我就是这样做的.首先在视图控制器中添加一个全局变量,该变量将用于存储集合视图的高度.在该viewDidLayoutSubviews方法中,将此变量设置为collectionView的高度,如果更改,则调用方法以使UICollectionView布局无效

collectionView.collectionViewLayout.invalidateLayout()

这将调用方法来设置collectionView单元格的大小,并在该方法中,将单元格的高度设置为包含collectionView高度的全局变量.

注意:目前在我的手机上并没有测试此代码.我可能错过了什么.



2> vien vu..:

您尝试将此代码设置为viewDidLoad:

self.automaticallyAdjustsScrollViewInsets = false

希望这有帮助!

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有