swift tableview里的cell怎么根据文字内容自动撑开高度
时间: 2024-02-18 08:58:58 浏览: 197
要在Swift的UITableView中根据文字内容自动撑开UITableViewCell的高度,可以按照以下步骤操作:
1. 首先,在UITableViewCell中添加一个UILabel,并设置好约束。
2. 在UITableView的代理方法中,实现heightForRowAt方法。该方法返回值为该行的高度。在该方法中,计算UILabel的高度,并返回该高度。代码如下:
```swift
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let text = dataArray[indexPath.row]
let width = UIScreen.main.bounds.size.width - 20
let font = UIFont.systemFont(ofSize: 17)
let size = CGSize(width: width, height: CGFloat(MAXFLOAT))
let paragraph = NSMutableParagraphStyle()
paragraph.lineBreakMode = .byWordWrapping
let attributes = [NSAttributedString.Key.font: font, NSAttributedString.Key.paragraphStyle: paragraph]
let rect = text.boundingRect(with: size, options: [.usesLineFragmentOrigin, .usesFontLeading], attributes: attributes, context: nil)
return rect.height + 20
}
```
其中,dataArray是存储文字内容的数组。
3. 在UITableViewCell中,设置UILabel的numberOfLines为0,并设置好约束。
4. 在UITableView的代理方法中,实现cellForRowAt方法。在该方法中,设置UILabel的text属性。代码如下:
```swift
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let label = cell.viewWithTag(100) as! UILabel
label.text = dataArray[indexPath.row]
return cell
}
```
这样,就可以根据文字内容自动撑开UITableViewCell的高度了。其中,dataArray是存储文字内容的数组。
阅读全文