UICollectionView 单元格在swift中使用约束固定宽度和动态高度

     2023-03-13     245

关键词:

【中文标题】UICollectionView 单元格在swift中使用约束固定宽度和动态高度【英文标题】:UICollectionView cell fixed width and dynamic height using constraints in swift 【发布时间】:2019-09-12 05:32:20 【问题描述】:

我有一个集合视图和一个单元格,里面有一个基于其内容具有固定宽度和动态高度的单元格。我正在使用自动布局约束,我的代码如下。

我已经尝试在单元格内和视图内设置所有类型的自动约束。

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
            return 5
        

        func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! ViewControllerCell

            cell.lbl_text.text = "djs sdfs sdfs dsfsfd gdgfd dfgd df "

            return cell

        



        override func viewDidLoad() 
            super.viewDidLoad()
            // Do any additional setup after loading the view.

            if let flowLayout = coll_main?.collectionViewLayout as? UICollectionViewFlowLayout 
                flowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize

            



    

In cell class method:
override func awakeFromNib() 
        super.awakeFromNib()
        self.contentView.autoresizingMask = [UIView.AutoresizingMask.flexibleHeight]
    

    override func layoutSubviews() 
        self.layoutIfNeeded()
    

我在没有设置该宽度的情况下获得单元格宽度修复。这个问题怎么解决?

这里是截图。

【问题讨论】:

您必须实现sizeForItemAt 才能提供正确的大小。 【参考方案1】:

您需要确保 CollectionView 的 Estimate Size 设置为 None

【讨论】:

【参考方案2】:

请执行以下步骤

    在界面构建器中选择您的 collectionView。 去找尺寸检查员 将估计大小更改为无,如图所示。

希望它能解决问题

【讨论】:

【参考方案3】:

您可以使用 collectionView 委托

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

为此,您需要扩展 UICollectionViewDelegateFlowLayout

【讨论】:

【参考方案4】:

您必须使用UICollectionViewDelegateFlowLayout 并实现sizeForItemAt,如下所示。

// MARK: - UICollectionViewDelegateFlowLayout -
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
        let sectionInset = (collectionViewLayout as! UICollectionViewFlowLayout).sectionInset

        // Here you can set dynamic height for the individual cell according to your content size.
        let referenceHeight: CGFloat = 100 // Approximate height of your cell

        let referenceWidth = collectionView.safeAreaLayoutGuide.layoutFrame.width
            - sectionInset.left
            - sectionInset.right
            - collectionView.contentInset.left
            - collectionView.contentInset.right

        return CGSize(width: referenceWidth, height: referenceHeight)
    

这里有一篇关于它的文章,你可以关注this。

【讨论】:

【参考方案5】:

在您的集合视图中添加此属性或取消选中您笔尖中的 PrefetchingEnabled 属性。

collectionView.isPrefetchingEnabled = false

【讨论】:

【参考方案6】:

实现 UICollectionViewDelegateFlowLayout 方法以获取集合单元格大小。

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

然后转到情节提要并在尺寸检查器中将collectionView 估计尺寸设为无

【讨论】:

UICollectionView 单元格在我滚动时消失

】UICollectionView单元格在我滚动时消失【英文标题】:UICollectionViewcelldisappearswheniscrollit【发布时间】:2016-12-0102:32:56【问题描述】:我有一个collectionView,它的滚动方向是水平的。它只有一行,单元格间距为16.0px。所以我将它的co... 查看详情

UICollectionView 的单元格在滚动后并不总是刷新

】UICollectionView的单元格在滚动后并不总是刷新【英文标题】:CellofUICollectionViewnotalwaysrefreshedafterascroll【发布时间】:2012-11-1920:32:37【问题描述】:我在我的Storyboard(iPad)中定义了一个包含UICollectionView的视图,在视图的底部还有... 查看详情

UICollectionView 自定义单元格在 Swift 中填充宽度

】UICollectionView自定义单元格在Swift中填充宽度【英文标题】:UICollectionViewCustomCelltofillwidthInSwift【发布时间】:2015-05-0111:54:51【问题描述】:我一直在试图弄清楚如何使单元格填充宽度,正如您在图片中看到的单元格之间的宽度... 查看详情

UICollectionView 隐藏/防止单元格在 Sticky Header 后面滚动

】UICollectionView隐藏/防止单元格在StickyHeader后面滚动【英文标题】:UICollectionViewhide/preventcellscrollingbehindStickyHeader【发布时间】:2017-08-1606:46:18【问题描述】:我有一个带有粘性标题的集合视图flowLayout.sectionHeadersPinToVisibleBounds=tru... 查看详情

UICollectionView 单元格在swift中使用约束固定宽度和动态高度

】UICollectionView单元格在swift中使用约束固定宽度和动态高度【英文标题】:UICollectionViewcellfixedwidthanddynamicheightusingconstraintsinswift【发布时间】:2019-09-1205:32:20【问题描述】:我有一个集合视图和一个单元格,里面有一个基于其内... 查看详情

为啥我的 UICollectionView 单元格在我的 swift ios 应用程序中不可点击?

】为啥我的UICollectionView单元格在我的swiftios应用程序中不可点击?【英文标题】:WhyismyUICollectionViewcellnotclickableinmyswiftiosapp?为什么我的UICollectionView单元格在我的swiftios应用程序中不可点击?【发布时间】:2016-04-0721:20:41【问题... 查看详情

UICollectionView 中的大单元格在仍显示的情况下被删除

】UICollectionView中的大单元格在仍显示的情况下被删除【英文标题】:LargecellsinaUICollectionViewgettingremovedwhilethecellisstilldisplayed【发布时间】:2012-10-2217:09:23【问题描述】:我有一个UICollectionView,其中包含一些大的UICollectionViewCells... 查看详情

UICollectionView:ScrollToItem 到中心单元格在水平集合视图上不起作用

】UICollectionView:ScrollToItem到中心单元格在水平集合视图上不起作用【英文标题】:UICollectionView:ScrollToItemtocentercelldoesnotworkonhorizontalcollectionview【发布时间】:2018-05-0811:00:19【问题描述】:我有一个带有内容偏移的水平UICollectionVi... 查看详情

UICollectionView 单元格在几秒钟后消失或在点击屏幕时消失

】UICollectionView单元格在几秒钟后消失或在点击屏幕时消失【英文标题】:UICollectionViewcelldisappearingaftersecondsorwhentapingscreen【发布时间】:2014-04-0210:22:32【问题描述】:我正在iOS7.0上使用Xcode5.1开发我的第一个iPad应用程序,我正在... 查看详情

UICollectionView 对齐单元格

】UICollectionView对齐单元格【英文标题】:UICollectionViewalignmentofcells【发布时间】:2013-06-0517:16:27【问题描述】:我有一个带有2种不同类型的UICollectionViewCells的UICollectionView。有一个选项卡提示显示每种类型的单元格,一次只能看... 查看详情

UICollectionView 中重叠的单元格

】UICollectionView中重叠的单元格【英文标题】:CellsoverlappinginUICollectionView【发布时间】:2018-03-0918:46:28【问题描述】:我正在使用动态大小的单元格在UICollectionView中向自定义API显示Web请求的结果。但是,当我在获取数据后调用rel... 查看详情

UICollectionView 在旋转时重新排列单元格

】UICollectionView在旋转时重新排列单元格【英文标题】:UICollectionViewrearrangecellsonrotation【发布时间】:2013-04-2913:49:21【问题描述】:我想在我的设备旋转期间重新排列UICollectionView单元格,这与在注释的evernoteiPadsapp中完成的方式... 查看详情

UICollectionView 椭圆形自定义单元格

】UICollectionView椭圆形自定义单元格【英文标题】:UICollectionViewovalshapedcustomcell【发布时间】:2016-08-2607:09:28【问题描述】:如何使用自定义单元格在UICollectionView中生成椭圆形单元格。下面是我想要实现的图像。不知道如何实现... 查看详情

集合视图,具有自定义布局,单元格在滚动时行为不端

...布时间】:2013-06-0314:00:32【问题描述】:我正在尝试使用UICollectionView创建自定义平铺布局。一旦我运行我的应用程序,它就可以在模拟器中完美呈现。但是当我滚动视图并将其恢复时,所有单元格的框架都发生了变化,并且单... 查看详情

UICollectionView - 一次一个单元格的水平分页

】UICollectionView-一次一个单元格的水平分页【英文标题】:UICollectionView-HorizontalpagingwithoneCellatatime【发布时间】:2016-08-1111:15:00【问题描述】:我正在尝试使用collectionView实现类似轮播的效果。我实现了UICollectionView并将其设置为... 查看详情

UICollectionView 项目间距不是恒定的

】UICollectionView项目间距不是恒定的【英文标题】:UICollectionViewitemsspacingisnotconstant【发布时间】:2021-02-1008:58:33【问题描述】:我正在尝试显示一个集合视图,其中每个单元格在边框内显示一个字符串。我已将方向设置为VERTICAL... 查看详情

在 UICollectionView 中选择时将单元格扩展到全屏

】在UICollectionView中选择时将单元格扩展到全屏【英文标题】:ExpandacelltofullscreenwhenselectedinsideUICollectionView【发布时间】:2017-06-2917:14:06【问题描述】:在didSelectItemAt中选择时,我无法让UICollectionViewCell扩展到全屏宽度和高度。第... 查看详情

如何检查 UICollectionView 有图像

】如何检查UICollectionView有图像【英文标题】:HowtocheckUICollectionViewhasimage【发布时间】:2019-03-1004:52:08【问题描述】:我有4个UICollectionViewCell,我想让前2个单元格在其中强制包含图像。示例代码如下。下面是一个用例:如果我单... 查看详情