要实现具有固定高度和动态高度的表格视图,可以使用UITableView,并设置单元格的高度属性。
以下是一个示例代码:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
let tableView = UITableView()
var data: [String] = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
// 设置tableView的frame,使其填充整个视图
tableView.frame = view.bounds
// 注册自定义的UITableViewCell类
tableView.register(MyTableViewCell.self, forCellReuseIdentifier: "cell")
// 设置tableView的行高为固定值
tableView.rowHeight = 50
// 设置tableView的估算行高为动态值
tableView.estimatedRowHeight = 100
// 允许自动调整行高
tableView.rowHeight = UITableView.automaticDimension
// 将tableView添加到视图中
view.addSubview(tableView)
}
// UITableViewDataSource方法,返回行数
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
// UITableViewDataSource方法,返回每行的单元格
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyTableViewCell
cell.textLabel?.text = data[indexPath.row]
return cell
}
}
class MyTableViewCell: UITableViewCell {
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
// 设置单元格的布局和外观
setupCell()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCell() {
// 添加自定义的子视图和约束
// 这里可以根据需求添加内容,比如添加图片、标签等
}
}
在上述代码中,我们创建了一个UIViewController,并在其中创建了一个UITableView。我们设置了UITableView的dataSource和delegate为ViewController本身,并注册了自定义的UITableViewCell类。
在viewDidLoad方法中,我们设置了UITableView的行高属性为固定值,并设置了估算行高为动态值。我们还允许自动调整行高。
在tableView(_:cellForRowAt:)方法中,我们创建了自定义的UITableViewCell,并将数据赋值给单元格的textLabel。
通过这样的设置,UITableView中的单元格将具有固定高度和动态高度。如果内容超过了固定高度,单元格的高度将自动调整以适应内容。