Autolayout动态调整大小UILabel无法正常工作

时间:2018-04-19 08:10:13

标签: ios swift uilabel

我尝试用各种可能的方式创建动态UILabel,但它对我不起作用。

我用.xib文件创建了UITableViewCell,如下所示:

enter image description here 并使用UITableViewAutomaticDimension在选项卡表视图单元格上方的单元格上单击动态高度。 它运行良好,但我想要黄色的UIlabel应动态更新它的大小。我已经将所有自动布局设置为标签。

我已添加:

label1.lineBreakMode = .byWordWrapping
label1.numberOfLines = 0

还试过:

label1.sizeToFit()

它没有更新标签的高度 但是当我在指定的Lebel字符串末尾添加换行符时,它会自动调整标签高度,如下图所示,但仍然没有显示所有文本。

8个座位室,8个座位会议室,12个座位会议室(WProjector)

enter image description here

有没有其他方法可以动态调整UILabel的大小?

我应该使用NSLayoutConstraint来增加身高吗?

4 个答案:

答案 0 :(得分:0)

在自定义UITableViewCell中,您需要直接为此特定标签设置preferredMaxLayoutWidth。但只有当单元格已经可见并且调整大小到当前屏幕尺寸时。

例如:

class YourCustomTableViewCell: UITableViewCell {

    override func layoutSubviews() {
      label1.preferredMaxLayoutWidth = label1.frame.size.width
      super.layoutSubviews()
    }

}

答案 1 :(得分:0)

您可以尝试使用autolayout,只需添加top,bottom,leading和trailing约束标签,并将属性检查器中的label设置为0。

检查下面的图片

这可能会起作用..!

答案 2 :(得分:0)

以下解决方案的输出 -

enter image description here

试一试 -

import datetime
import commands
from datetime import datetime

def get_days(directory, file):    
    current_datetime = datetime.now()
    command = "hadoop fs -ls " + directory + file + " | tr -s ' ' | cut -d' ' -f6-7 | grep '^[0-9]' "
    (status, output) = commands.getstatusoutput(command)
        if status == 0:
            file_date = datetime.strptime(output, '%Y-%m-%d %H:%M')
            date_period = current_datetime - file_date
    return date_period.days

并正确添加约束,以供参考,请参阅附图。

对于动态标签 -

enter image description here

预订类型标签 -

enter image description here

对于其他标签 - enter image description here

enter image description here

答案 3 :(得分:0)

最后,我能够找到为什么我的Autolayout动态调整大小UILabel不起作用。

我几乎浪费了一周的时间来寻找和尝试不同的解决方案。 这是与项目中使用的UILabel扩展相关的问题。 我已经推荐了一些git hub项目来在屏幕上显示toast消息。在toast视图中,他们具有扩展功能来处理多行Toast消息。

这是使用开源代码中代码的主要缺点。 我从中学到的是在添加到项目之前我们需要了解开源代码。

注意:在添加到项目之前,请先学习并了解开源代码。开源代码可能会对项目中的某些功能产生一些不良影响。

感谢所有回复。