ios - 将 UILabel 高度调整为文本

标签 ios swift height uilabel frame

我有一些标签,我想根据文本调整它们的高度,这是我现在为此编写的代码

func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{
    let label:UILabel = UILabel(frame: CGRectMake(0, 0, width, CGFloat.max))
    label.numberOfLines = 0
    label.lineBreakMode = NSLineBreakMode.ByWordWrapping
    label.font = font
    label.text = text

    label.sizeToFit()
    return label.frame.height
}

编辑:

问题不在这段代码中,所以我的解决办法是问题本身。它可能对其他人仍然有用!

最佳答案

我刚把它放在 Playground 上,它对我有用。

针对 Swift 4.0 进行了更新

import UIKit

 func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{
    let label:UILabel = UILabel(frame: CGRectMake(0, 0, width, CGFloat.greatestFiniteMagnitude))
    label.numberOfLines = 0
    label.lineBreakMode = NSLineBreakMode.byWordWrapping
    label.font = font
    label.text = text

    label.sizeToFit()
    return label.frame.height
}

let font = UIFont(name: "Helvetica", size: 20.0)

var height = heightForView("This is just a load of text", font: font, width: 100.0)

swift 3:

func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{
    let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude))
    label.numberOfLines = 0
    label.lineBreakMode = NSLineBreakMode.byWordWrapping
    label.font = font
    label.text = text
    label.sizeToFit()

    return label.frame.height
}

enter image description here

关于ios - 将 UILabel 高度调整为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25180443/

相关文章:

ios - 在 SwiftUI 中重新创建 twitter 的复制到剪贴板动画

css - 将 div 高度强制设置为其内部的大字体大小

具有动态高度的 CSS 和 DIV

objective-c - 需要对最后的空白进行子串化

自 SDK 8 更新以来,iOS 8 UIApplicationMain 崩溃

ios - 在特征上设置通知会导致无效句柄错误

触摸时未检测到 Swift/Spritekit SKNode

swift - 如何从来自 NSKeyedUnarchiver 的 Dictionary 获取多种类型的数据

swift - 如何在 Swift 上将 Realm 数据转换为 Json? Realm 版本 10.11.0

iphone - UIWebview 调整高度以适应内容