Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITableView单元格未使用标签文本自动调整大小_Ios_Swift_Uitableview_Tableview - Fatal编程技术网

Ios UITableView单元格未使用标签文本自动调整大小

Ios UITableView单元格未使用标签文本自动调整大小,ios,swift,uitableview,tableview,Ios,Swift,Uitableview,Tableview,编辑:我在一个新项目中从头开始。每个故事板出口都是相同的,就像VC代码一样。有趣的是,它是有效的 编辑:大家好,我放弃了。每个答案都开始成为一个主题的变体,而这个主题并没有解决这个问题。谢谢你的尝试 在ViewDidLoad中,我设置了: tableView.estimatedRowHeight=85.0,tableView.rowHeight=UITableViewAutomaticDimension 在故事板中,我还设置了:内容视图的自动调整大小约束 要换行的标签,以及0的标签线 然而,标签

编辑:我在一个新项目中从头开始。每个故事板出口都是相同的,就像VC代码一样。有趣的是,它是有效的

编辑:大家好,我放弃了。每个答案都开始成为一个主题的变体,而这个主题并没有解决这个问题。谢谢你的尝试

ViewDidLoad
中,我设置了:
tableView.estimatedRowHeight=85.0
tableView.rowHeight=UITableViewAutomaticDimension

在故事板中,我还设置了:内容视图的自动调整大小约束

要换行的标签,以及0的标签线

然而,标签文本仍在其单元格中溢出。 完整的字符串是:“喂?如果我写一个长句会怎么样?”

有什么建议吗

以下是整个视图控制器: 以下是已选择标签的故事板:

在推荐的功能之后: 结果是:

尝试向内容视图中的标签添加约束

例如: 左-8分 前8名 右-8分 底部-8分


现在它应该留在牢房里

尝试向内容视图中的标签添加约束

例如: 左-8分 前8名 右-8分 底部-8分


现在它应该留在牢房里

您需要添加
heightforrowatinexpath
以自动调整单元格高度以适应其内容

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

您需要添加
heightforrowtaindexpath
以自动调整单元格高度以适应其内容

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

请看我输出的屏幕截图。对于标签,您应该提供所有四个约束(顶部:5,底部:5,左侧:5,右侧:5),并且必须将标签优先级的高度更改为750,并将拥抱和阻力优先级设置为1000。然后,您必须将情节提要中的行数更改为0

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

        return UITableViewAutomaticDimension
    }

    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {

        return 250

    }

查看我的输出的屏幕截图。对于标签,您应该提供所有四个约束(顶部:5,底部:5,左侧:5,右侧:5),并且必须将标签优先级的高度更改为750,并将拥抱和阻力优先级设置为1000。然后,您必须将情节提要中的行数更改为0

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

        return UITableViewAutomaticDimension
    }

    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {

        return 250

    }

您没有在XPath中设置行的高度。。 为此,您应该首先获得文本的大小 在我的情况下,我通过了尺寸

func rectForText(text: String, font: UIFont, maxSize: CGSize) -> CGSize
{
    let attrString = NSAttributedString.init(string: text, attributes: [NSAttributedStringKey.font:font])
    let rect = attrString.boundingRect(with: maxSize, options: NSStringDrawingOptions.usesLineFragmentOrigin, context: nil)
    let size = CGSize(width: rect.size.width, height: rect.size.height)//(, )
    return size
}
并根据您的文本设置单元格高度,在我的案例中

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
    var totalHeight : CGFloat = 0
    let str = yourString
    let size : CGSize = rectForText(text: str, font:UIFont.boldSystemFont(ofSize: 15.0) , maxSize : CGSize(width: 200 * (SCREEN_WIDTH / 320), height: 20000) )
    totalHeight = size.height
    return CGFloat(totalHeight)
}

可能对您有用

您没有设置行的高度。。 为此,您应该首先获得文本的大小 在我的情况下,我通过了尺寸

func rectForText(text: String, font: UIFont, maxSize: CGSize) -> CGSize
{
    let attrString = NSAttributedString.init(string: text, attributes: [NSAttributedStringKey.font:font])
    let rect = attrString.boundingRect(with: maxSize, options: NSStringDrawingOptions.usesLineFragmentOrigin, context: nil)
    let size = CGSize(width: rect.size.width, height: rect.size.height)//(, )
    return size
}
并根据您的文本设置单元格高度,在我的案例中

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
    var totalHeight : CGFloat = 0
    let str = yourString
    let size : CGSize = rectForText(text: str, font:UIFont.boldSystemFont(ofSize: 15.0) , maxSize : CGSize(width: 200 * (SCREEN_WIDTH / 320), height: 20000) )
    totalHeight = size.height
    return CGFloat(totalHeight)
}


可能适合您

您是否在内容视图中为标签提供了顶部、左侧、右侧和底部约束?还有行到0和换行到换行??是的。如果查看第一幅图像,您将在内容视图中看到标签的约束。在下面,我相信我还声明了标签换行,并且行设置为0。在您的计算中添加此委托-->func tableView(uu tableView:UITableView,heightForRowAt indexath:indexPath)->CGFloat{return UITableView automaticdimension}让我知道它是否对你有效,其他人会建议其他的solution@blue_shoes你想干什么?是否要将所有文本固定到单元格或将自动调整大小的单元格固定到内容?是否在内容视图中为标签提供了顶部、左侧、右侧和底部约束?还有行到0和换行到换行??是的。如果查看第一幅图像,您将在内容视图中看到标签的约束。在下面,我相信我还声明了标签换行,并且行设置为0。在您的计算中添加此委托-->func tableView(uu tableView:UITableView,heightForRowAt indexath:indexPath)->CGFloat{return UITableView automaticdimension}让我知道它是否对你有效,其他人会建议其他的solution@blue_shoes你想干什么?您想将所有文本固定到单元格还是将自动调整大小的单元格固定到内容?不幸的是,问题是多个单词(可能会交叉成一行)正在被截断。我已经编辑了我的帖子以包含原始字符串。不幸的是,问题是多个单词——它们会交叉成一行——正在被删除。我已经编辑了我的帖子,以包含原始字符串。Hi-Sid,Ishika建议在上面添加此函数,但当我在类中其他委托函数旁边添加此函数时,它仍然不起作用。Hi-Sid,Ishika建议在上面添加此函数,但当我在类中其他委托函数旁边添加此函数时,它仍然不起作用。Hi,感谢您的仔细回复-我已经实现了这一点,其功能与其他代理tableView功能相邻-但没有任何更改。您是否更改了优先级?是的,我将拥抱和阻力优先级设置为1000,并为设置为750的标签添加了>=10的高度限制。我保留了顶部/底部/尾随/前导的其他4个约束,全部10个,行为0。我被难住了。我会用添加的函数再次发布。@blue_shoes:嗨,我面临着同样的问题。这从你这边解决了吗?嗨,谢谢你的回复-我已经实现了这个,函数与其他代理tableView函数相邻-但没有任何改变。你改变了优先级吗?是的,我将拥抱和阻力优先级设置为1000,并为标签添加了>=10的高度限制,我将标签设置为750。我保留了顶部/底部/尾随/前导的其他4个约束,全部10个,行为0。我很困惑。我会用添加的功能再次发布。@blue_shoes:嗨,我面临着同样的问题。这从你那边解决了吗?