Swift —动态UILabel文本

在进行多个API调用并从API响应解析文本的项目中,我遇到了我收到的文本量无法预测的问题。 有些文本很容易以2–3行适合,而其他文本则需要6–7行或更多才能正确适合。 我一直使用换行符 (自动换行)调整文本标签,并更改行数以解决从API收到的文本行。 我很快就感到自己不是很聪明,这是一种更好的方法。 当然,像往常一样,您的代码应该是动态的,它应该能够适应传入的数据。 此处适用相同的规则,我的文本标签应适用于单行或多行。

解决方案:让我们建立一个简单的项目进行练习。 制作一个“单视图”应用程序,然后在情节提要中添加一个UILabel和一个UIButton。 如下图所示,为UILabel定义约束:

如下图所示设置标签属性:

将约束添加到UIButton。 确保UILabel和UIButton之间的垂直间距为100

现在将UILabel的尾随约束的优先级设置为749

现在,将UILabel的“水平内容拥抱”和“水平内容压缩”属性设置为750和748

下面是我的控制器类。 您必须将UILabel属性和Button操作从情节提要板连接到viewcontroller类。

 导入UIKit 

类ViewController:UIViewController {

@IBOutlet弱var textLabel:UILabel!
var count = 0
let items = [“杰克逊不再是这个世界”,“强尼·强尼是爸爸吃糖而不是爸爸”,“ Ab”,“尽管采取了所有措施来扭转自然”]


@IBAction func updateLabelText(sender:UIButton){
如果计数> 3 {
计数= 0
}
textLabel.text = items [count]
计数=计数+ 1
}

覆盖func viewDidLoad(){
super.viewDidLoad()
//加载视图后进行其他任何设置,通常是从笔尖进行。
//self.textLabel.sizeToFit()
//self.textLabel.preferredMaxLayoutWidth = 500
}

覆盖func didReceiveMemoryWarning(){
super.didReceiveMemoryWarning()
//处理所有可以重新创建的资源。
}


}

而已。 这将根据其内容自动调整UILabel的大小,您还可以看到UIButton也进行了相应的调整。