调整UILabel的高度以适合文本

Pet*_*Pik 6 iphone uilabel ios swift

我在我的Cell Subclass中有UILabel,假设有一个标题.标题的大小可以是各种长度,因此我需要调整UILabel的大小以适应文本,并防止文本不长,我还需要能够设置maxHeight.宽度应该相同.如何在tableViewCell子类中的swift中创建这样的代码?

到目前为止,我在awakeFromNib中有这个

theTitleLabel?.font = UIFont(name: "HelveticaNeue", size: 13)
theTitleLabel?.textColor = UIColor(rgba: "#4F4E4F")
theTitleLabel?.numberOfLines = 0
theTitleLabel?.lineBreakMode = NSLineBreakMode.ByTruncatingTail
Run Code Online (Sandbox Code Playgroud)

Zig*_*rth 6

    CGSize maximumLabelSize = CGSizeMake(MAX_WIDTH, MAX_HEIGHT);
    CGSize expectedSize = [lbl sizeThatFits:maximumLabelSize];

    CGSize s = CGSizeMake(STATIC_WIDTH, expectedSize.height);
    yourLabel.frame = CGRectMake(yourLabel.frame.origin.x, nameLbl.frame.origin.y, s.width, s.height);
Run Code Online (Sandbox Code Playgroud)


Sul*_*han 4

最简单的方法是使用自动布局约束。您正在使用awakeFromNib,所以我假设您在 Interface Builder(xib 或 Storyboard 文件)中的某个位置有该单元。

如果可以避免的话,永远不要在代码中设置视图。在 Interface Builder 中做到这一点要容易得多。

  1. 在界面生成器中找到您的标签并设置其属性(字体、颜色、换行模式等)。

  2. 添加宽度约束(或对左右边距的约束,具体取决于您想要的)。

  3. 添加高度约束,将其关系从 更改= (equals)< (less than)

您已完成,无需任何代码。