如何使用约束在表格视图单元格之间创建空间?

Posted

技术标签:

【中文标题】如何使用约束在表格视图单元格之间创建空间?【英文标题】:How can I create space between table view cells using constraints? 【发布时间】:2017-08-27 14:28:57 【问题描述】:

正如您在屏幕截图中看到的那样,顶部图像和屏幕顶部之间没有空间。另外,我所有的图像大小都不一样。如何在这些单元格之间创建空间并使所有图像大小相同。

【问题讨论】:

请查看***.com/questions/28598830/… 【参考方案1】:

您可以在UIImageView 上创建高度限制。然后创建一个纵横比约束并将其设置为 16:9 之类的东西。然后将UIImageViewcontentMode属性设置为AspectFill并开启Clip To Bounds

然后将UIImageView 的顶部约束到单元格的顶部,底部到底部,尾部到尾部,每个常量都为 15(或其他)。

UILabelUIImageView 之间创建一个Centre-Y(垂直居中)和一个水平间距约束。

要阻止标签剪裁,请在标签和单元格之间创建一个尾随约束,并将值设置为 >= 15 或其他值。然后将 Number Of Lines 属性设置为 2(如果名称在 iPhone 4/4s/5 上运行时间过长,则将其设置为 0 可能会导致单元格顶部和底部出现剪裁)。

【讨论】:

【参考方案2】:

我建议您使用 collection views 您可以轻松管理单元格间距-:

1) 在故事板上添加collection view

2) 以类似的方式将其DataSourceDelegate 添加到表格视图。(选择集合视图,然后拖放到黄色图标)。

3) 在单元格上添加imageView

4) 相应调整cell 的大小。

5) 还可以在图片下方提供单元格间距检查。

6) 调整行的最小间距,它将提供您想要的。

控制器类-:

import UIKit

//controller class with 3 needed protocols
class UnderlineViewController: UIViewController,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout 

    //viewDidLoad
    override func viewDidLoad() 
        super.viewDidLoad()

        
    //didReceiveMemoryWarning
    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

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


    //dequeueReusableCell
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
        return cell
    

    //numberOfSections

    func numberOfSections(in collectionView: UICollectionView) -> Int
        return 1
    

    // sizeForItemAt for each row
    public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
        return CGSize(width: view.frame.width, height: 200)
    


输出-:

同时取消选中scrollViewInsets

1) 点击控制器的黄色图标并选择Attribute Inspector

2) 查找 Adjust Scroll View Insets 并取消选中它。

【讨论】:

以上是关于如何使用约束在表格视图单元格之间创建空间?的主要内容,如果未能解决你的问题,请参考以下文章

表格视图单元格中的标签和文本字段之间的空间相等。

如何在情节提要失败的情况下使用大量表格视图单元格和自动布局约束来布局复杂视图

如何在iOS中的表视图底部创建固定单元格?

iOS:自定义表格视图单元格中的约束

如何在自动布局中滑动表格视图单元格?

TVos 中表格视图单元格之间的空间