【问题标题】:How to configure dynamic height for UILabel in swift 5?如何在 swift 5 中为 UILabel 配置动态高度?
【发布时间】:2020-05-26 14:13:39
【问题描述】:

我正在尝试在具有动态高度的视图控制器中设置 UILabel,以便它适合文本。

我尝试了各种有关堆栈溢出的示例,但效果不佳。

Swift 5 有没有其他具体方法可以让 UILabel 高度动态化?

UI Constraints

View Controller

【问题讨论】:

  • 使用自动布局jayeshkawli.ghost.io/…
  • @jamil 我已经试过了,但是没用
  • 你设置 label.numofLines = 0 了吗?
  • 请分享您到目前为止尝试过的内容。
  • @CZ54 是的,我确实在情节提要中将行数设置为 0

标签: ios swift uilabel height


【解决方案1】:

1) 将标签的 top/leading/trailing 约束设置为 superview/Safe Area。 2) 在故事板标签的属性检查器中设置 numberOfLines = 0。

【讨论】:

  • 还是不行,我试过了,现在什么都没有显示
  • 您能否在属性检查器窗格打开的情况下添加情节提要的屏幕截图。
【解决方案2】:

只需从情节提要中删除标签的 HeightConstraint 并添加 0 行数,您的标签将获取文本并根据内容进行设置。

【讨论】:

  • 还是不行,我试过了,现在什么都没有显示
【解决方案3】:

在您的 UIConstraints 我可以看到高度约束 = 134,删除高度约束以动态调整标签的高度。

您可以通过下面的代码实现这一点

let myLabel = UILabel()
        self.view.addSubview(myLabel)
        myLabel.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([myLabel.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 100),
        myLabel.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 30),
        myLabel.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -30)])
        myLabel.numberOfLines = 0
        myLabel.backgroundColor = .yellow
        myLabel.text = "Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. "

【讨论】:

  • 还是不行,我试过了,现在什么都没有显示
  • 通过将垂直内容拥抱优先级设置为 250 并将垂直压缩阻力设置为 751 来检查。
  • 但现在仍在工作,我也开始使用新的布局,但仍然是同样的问题,我删除了所有其他元素但没有成功,我不明白为什么 Xcode 有时会表现得如此愚蠢,相应地遵循所有指导方针,但仍然发生同样的愚蠢,我在过去 3 天里试图解决这个问题,我知道这是一件简单的事情,但没有成功
  • @Ramneek 您可以通过在 ViewDidLoad 方法中添加上述代码来进行检查。我已经编辑了我的答案。
  • 当然,让我检查一下
【解决方案4】:

给出UILabelleadingtrailingtop 约束。不要给bottom 约束。如果你必须给bottom约束,不要给top约束。

另外,设置numberOfLines = 0

class ViewController: UIViewController {

    @IBOutlet weak var yourLabel : UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        yourLabel.numberOfLines = 0
        // Do any additional setup after loading the view.
    }
}

【讨论】:

  • 这不起作用,在我删除了底部约束之后,现在它甚至不显示它
  • 有没有给top约束?
  • @Ramneek 分享您的 UI 和约束。编辑您的问题
  • 我再次分享了UI约束,请检查
  • @Ramneek 移除高度限制
【解决方案5】:

指定 numberOfLines = 0 并在标签高度约束中指定大于或等于零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2011-11-02
    • 2016-07-30
    • 2017-04-18
    • 2017-10-26
    相关资源
    最近更新 更多