删除两个自定义单元格之间的间距

时间:2017-05-16 09:40:53

标签: ios swift uitableview

我在mainStoryboard上有一个带有两个自定义单元格的tableView。我想减少两个单元格之间的间距。 我试图找到答案,但找不到任何答案。我在下面添加了图片和代码。

enter image description here

class HomeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, MFMailComposeViewControllerDelegate {

    @IBOutlet var tblStoryList: UITableView!

    var array = PLIST.shared.mainArray



    override func viewDidLoad() {
        super.viewDidLoad()


    //spacing between header and cell
        self.tblStoryList.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0)

      //delete separator of UITableView
    tblStoryList.separatorStyle = .none

    }
   func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.array.count + 1
    }



     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if indexPath.row == 0 {
            let cell  = tableView.dequeueReusableCell(withIdentifier: "HeaderCell", for: indexPath) as! HeaderCell
            cell.headerTitle.text = "First Stage"
            return cell
        }

        let cell = tableView.dequeueReusableCell(withIdentifier: "StoryTableviewCell", for: indexPath) as! StoryTableviewCell


        //making plist file
        let dict = self.array[indexPath.row - 1]
        let title = dict["title"] as! String
        let imageName = dict["image"] as! String
        let temp = dict["phrases"] as! [String:Any]
        let arr = temp["array"] as! [[String:Any]]
        let detail = "progress \(arr.count)/\(arr.count)"

        //property to plist file
        cell.imgIcon.image = UIImage.init(named: imageName)
        cell.lblTitle.text = title
        cell.lblSubtitle.text = detail

        cell.selectionStyle = UITableViewCellSelectionStyle.none


        return cell
    }

标题单元格

 import UIKit

class HeaderCell: UITableViewCell {
    @IBOutlet weak var headerTitle: UILabel!

    override func layoutSubviews() {
        super.layoutSubviews()
        headerTitle.layer.cornerRadius = 25
        headerTitle.layer.masksToBounds = true


    }



}

4 个答案:

答案 0 :(得分:2)

我认为您已在heightForRowAt indexPath方法中为单元格设置了一些静态高度,将其设置为UITableViewAutomaticDimension。并estimatedHeightForRowAt indexPath将其设置为静态值以获得更好的性能。

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    return 40 //expected minimum height of the cell
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

不要忘记你需要设置"正确的约束"通过此方法获得所需的结果。需要约束来让表格单元知道它的高度。

答案 1 :(得分:0)

试试这个..

self.tableView.rowHeight = 0; // in viewdidload
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; // in viewdidload

 -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0.01f;
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return <your header height>;
}

-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [[UIView alloc] initWithFrame:CGRectZero];
}

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
return <your header view>;
}

也有表seprator为none。

答案 2 :(得分:0)

您需要相应地返回每个单元格的高度。例如

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if indexPath.row == 0 {
          // return height for first row, i.e
          return 40
        }
        // return height for other cells. i.e
        return 90

    }

答案 3 :(得分:0)

您可以使用Autolayout表格视图设置每个单元格高度动态的表格将从Autolayout获取单元格高度 因为你不需要写这个2方法

删除此方法

tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> 
CGFloat 
{
}

在ViewDidload方法中写下这一行

 self.tblView?.rowHeight = UITableViewAutomaticDimension
 self.tblView?.estimatedRowHeight = 60

并设置您想要保留的Autolayout的imageview底部空间,例如10,底部布局的设置关系大于或等于设置优先级为252而不是1000

你将在我的屏幕截图中清楚地了解这一点以及如何做到这一点在所有自定义单元格中这样做你可以设置高度动态不需要计算每个单元格的高度而不需要返回

enter image description here