如何在UITableView中同时调整两列自定义单元格,多行文本对齐方式

时间:2016-09-09 09:19:58

标签: ios swift uitableview

问题陈述1:无法为多行同时对齐两个自定义单元格文本,如下所示。 enter image description here

你可以在这里看到,对于多行单元格,单元格内容的起始顶行不同。

如果没有多行内容,则可以,如下所示

enter image description here

您可以看到,两个单元格内容如何在同一行上正确对齐。

问题陈述2:还有一个问题,如果单元格内容很大,它不会增加它的高度,而不是它变小的字体大小,如下所示

enter image description here 下面是我的编码内容,通过这种方式我已经管理了两个带有多行的自定义单元格。

func tableView(tableViewData: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {

        let cell = tableViewData.dequeueReusableCellWithIdentifier("cell")! as! StudentCell

        if indexPath.row < self.mMeaningArray.count
        {
            cell.lblMeaning1.text = self.mMeaningArray[indexPath.row]
        }
        else
        {
            cell.lblMeaning1.text = ""
        }
        if indexPath.row < self.hMeaningArray.count
        {
            cell.lblMeaning2.text = self.hMeaningArray[indexPath.row]
        }
        else
        {
            cell.lblMeaning2.text = ""
        }

        self.allowMultipleLines(cell)

        cell.lblMeaning1.layoutIfNeeded()
        cell.lblMeaning2.layoutIfNeeded()

        return cell
    }

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
    {

        return UITableViewAutomaticDimension
    }

    func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
    {
        return UITableViewAutomaticDimension
    }

    func allowMultipleLines(tableViewCell:UITableViewCell)
    {
        tableViewCell.textLabel?.numberOfLines = 0
        tableViewCell.textLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping
        tableViewCell.textLabel?.sizeToFit()
    }

我知道,它正在根据内容调整其字体大小,但我想要的是,它应该是一个多行的固定字体大小,同时它应该正确对齐文本。

我搜索各种网站,链接和提到堆栈溢出的多个问题,但是对于这种情况,没有找到任何解决方案。

1 个答案:

答案 0 :(得分:0)

在StoryBoard中使用AutoLayout的解决方案。

1)将行号设置为0,将文本对齐设置为左。

Image 1

2)设置高度约束。

Image 2

3)高度约束应该是关系 - 小于或等于

Image 3

4)在cellForItemAtIndexPath方法内部添加sizetofit

labelname.sizeToFit()

5)多数民众赞成。现在你将得到这样的结果。为清楚起见,我将标签backgroundcolor设置为蓝色。

Image 4