我有一个TableView,它有一个可变长度的列,有时文本可能很长。我通过执行建议的步骤修复了这个问题,例如将标签行放到0并在ViewLoad中包含这两行代码
<?php
for ($y=0; $y<=98 ; $y++) {
for ($x=0; $x<=163; $x++) {
echo "Value of x = " . $x . " & y = " . $y . "<br>";
}
}
修复了这个问题,但是现在我的边框颜色已经不合适了,因为例如现在它的外观[下图]我在上面添加了2行新代码时发生了这种行为。我的猜测可能是因为单元格是自动调整大小取决于传入的数据,边框不会自动调整大小并且它们变得不合适。关于如何解决这个问题有什么建议吗?这是我显示边框的代码 我有2张图片用于比较和对比
TableSource.rowHeight = UITableViewAutomaticDimension
TableSource.estimatedRowHeight = 150.0
如果我基本上删除了2个新行的自动调整大小代码,那么TableCells就像这样。正如您所看到的那样,边框现在可以正常工作,但如果消息太长则会被截断。
答案 0 :(得分:2)
您需要将自己的代码绘制到自定义单元格layoutSubviews()
方法中,因为自定义单元格具有正确的计算宽度和高度,这是我的代码
这是一张如何看的图片
import UIKit
class AutoResizedCellTableViewCell: UITableViewCell {
@IBOutlet weak var lblText: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func setupWithText(text:String)
{
self.lblText.text = text
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
override func layoutSubviews() {
super.layoutSubviews()
let border = CALayer()
let width = CGFloat(7.0)
border.borderColor = UIColor.red.cgColor
border.frame = self.bounds
border.borderWidth = width
self.layer.addSublayer(border)
self.layer.masksToBounds = true
}
}
这是我的viewController代码
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
let arrayOfText = ["asdasddasdadasd asdasd asd asdasdasdasdasdasdasdassdasdasdasdasdasdasdasdasdasdasdasdasd asdasdasdasdasdasdadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdadsdasdasdasd asdasdasd asdasdasd asdasdadasd asdasdasdasdas dasdasdasd asdas dasdas dasdas dasda sdasd asdas dasdas v ad as v v v v asd as d as s asdasdasdasdada","asdasd","asdasddasdadasd asdasd asd asdasdasdasdasdasdasdassdasdasdasdasdasdasdasdasdasdasdasdasd asdasdasdasdasdasdadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdadsdasdasdasd asdasdasd asdasdasd asdasdadasd asdasdasdasdas dasdasdasd asdas dasdas dasdas dasda sdasd asdas dasdas v ad as v v v v asd as d as s asdasdasdasdada asdasddasdadasd asdasd asd asdasdasdasdasdasdasdassdasdasdasdasdasdasdasdasdasdasdasdasd asdasdasdasdasdasdadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdadsdasdasdasd asdasdasd asdasdasd asdasdadasd asdasdasdasdas dasdasdasd asdas dasdas dasdas dasda sdasd asdas dasdas v ad as v v v v asd as d as s asdasdasdasdada","asdasddasdadasd asdasd asd asdasdasdasdasdasdasdassdasdasdasdasdasdasdasdasdasdasdasdasd asdasdasdasdasdasdadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdadsdasdasdasd asdasdasd asdasdasd asdasdadasd asdasdasdasdas dasdasdasd asdas dasdas dasdas dasda sdasd asdas dasdas v ad as v v v v asd as d as s asdasdasdasdada","asdasdasdasasdas asdasdasd","asdasddasdadasd asdasd asd asdasdasdasdasdasdasdassdasdasdasdasdasdasdasdasdasdasdasdasd asdasdasdasdasdasdadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdadsdasdasdasd asdasdasd asdasdasd asdasdadasd asdasdasdasdas dasdasdasd asdas dasdas dasdas dasda sdasd asdas dasdas v ad as v v v v asd as d as s asdasdasdasdada","asdasdadas"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 150.0
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension ViewController : UITableViewDelegate,UITableViewDataSource{
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.arrayOfText.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "AutoResizedCellTableViewCell") as! AutoResizedCellTableViewCell
cell.setupWithText(text: self.arrayOfText[indexPath.row])
return cell
}
}
我希望这可以帮到你,