标签显示超出我的自定义 TableViewCell 范围并通过 swift 设置自动布局

Posted

技术标签:

【中文标题】标签显示超出我的自定义 TableViewCell 范围并通过 swift 设置自动布局【英文标题】:Label show out of my range of Customized TableViewCell and set auto-layout by swift 【发布时间】:2017-07-15 06:42:32 【问题描述】:

我使用 xib 创建聊天气泡 tableViewCell,但我使用自动布局来设置约束。 它显示我输入的文本超出范围。 而且我也不想缩小文本。

我还添加了 textLabel 左约束,它可以生成我想要的不同类型。 我不想像上一张图​​片那样显示聊天气泡的空白区域。 这种情况我该怎么办?

更新:

class ChatMyTextTableViewCell: UITableViewCell 

@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myTextLabel: PaddingLabel!
@IBOutlet weak var myDateLabel: UILabel!
@IBOutlet weak var labelWidthConstraint: NSLayoutConstraint!

override func awakeFromNib() 
    super.awakeFromNib()
    // Initialization code
    self.backgroundColor = defaultBackgroundColor

    myImageView.layer.masksToBounds = true 
    myImageView.layer.cornerRadius = defaultIconRadius

    myTextLabel.backgroundColor = defaultChatGreenBubbleColor
    myTextLabel.layer.masksToBounds = true
    myTextLabel.layer.cornerRadius = defaultButtonRadius

    myDateLabel.textColor = defaultChatTimeColor


override func setSelected(_ selected: Bool, animated: Bool) 
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state


func loadMessage(_ message:Message) 

    labelWidthConstraint.constant = UIScreen.main.bounds.size.width - 120
    myTextLabel.text = message.content
    myTextLabel.autoresizingMask = [.flexibleWidth,.flexibleHeight]

    myDateLabel.text = convertToChatDate(date: message.datetime)


【问题讨论】:

【参考方案1】:

您创建标签宽度约束 IBOutlet

Objectvice-C:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *msgWidthConst;

然后在 CellForRowAtIndexPath 中:

 cell.msgWidthConst.constant=[UIScreen mainScreen].bounds.size.width-80;
 cell.msg.text="text";
 cell.msg.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

Swift3:

  @IBOutlet var labelWidthConstraint: NSLayoutConstraint!

然后在 cellForRowAt:

 cell.labelWidthConstraint.constant = UIScreen.main.bounds.size.width-80
 cell.msg.text = "text";
 cell.msg.autoresizingMask = [.flexibleWidth, .flexibleHeight]

【讨论】:

你好,我使用你的建议,它对我不起作用。我更新了我的手机密码。谢谢。 @tolerate_Me_Thx 这是有效的。查看此演示 github.com/vikashkumar2804/tableViewDemo.git

以上是关于标签显示超出我的自定义 TableViewCell 范围并通过 swift 设置自动布局的主要内容,如果未能解决你的问题,请参考以下文章

自定义 TableViewCell 中的标签始终返回其初始化值

Swift 中带有自定义 TableViewCell 的核心数据图像

将自定义 UIView 添加到 TableViewCell

在 TableViewCell 中自动布局两个标签?

iOS - 表格视图单元格未正确呈现

自定义 tableviewcell 和自动布局