我使用自我大小的单元格(UITableView
)处理UITableViewAutomaticDimension
新闻内容。这样可以正常工作:)
现在我来到了一个部分,我必须在新闻单元的中间添加一个单元格,其高度应该与设备屏幕的大小相同。
我尝试从UITableView
类添加此高度方法:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let item = feed[indexPath.row]
if item is News {
return UITableViewAutomaticDimension
} else if item is ConfigurationBit {
return view.bounds.size.height
}
return 0.0
}
但这并没有给出正确的结果。你有什么建议吗?
更新 以下代码是正确的。问题出在其他地方,与此案无关。
答案 0 :(得分:0)
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let item = feed[indexPath.row]
if item is News {
let cell = self.tableView(tableObject, cellForRowAt indexPath: indexPath)
return cell.frame.size.height
} else if item is ConfigurationBit {
return view.bounds.size.height
}
return 0.0
}
答案 1 :(得分:0)
我认为你错过了为rowHeight
设置estimatedRowHeight
和var arrayOfCellData = [Any]()
override func viewDidLoad() {
super.viewDidLoad()
arrayOfCellData = [cellData(cell : 1, text : "asdadas", image : #imageLiteral(resourceName: "mark")),
cellconfigData(cell : 2, text : "dasdadad", image : #imageLiteral(resourceName: "mark")),
cellData(cell : 3, text : "asraerqsadas", image : #imageLiteral(resourceName: "mark")),
cellconfigData(cell : 4, text : "asraerqsadas", image : #imageLiteral(resourceName: "mark")),
cellData(cell : 5, text : "asraerqsadas", image : #imageLiteral(resourceName: "mark")),
cellconfigData(cell : 6, text : "asraerqsadas", image : #imageLiteral(resourceName: "mark"))]
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 245
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrayOfCellData.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let item = arrayOfCellData[indexPath.row]
if item is cellData{
let cell = Bundle.main.loadNibNamed("OwnTableViewCell", owner: self, options: nil)?.first as! OwnTableViewCell
cell.mainImageView.image = (arrayOfCellData[indexPath.row] as! cellData).image
cell.mainLabel.text = (arrayOfCellData[indexPath.row] as! cellData).text
return cell
}
else
{
let cell = Bundle.main.loadNibNamed("NewTableViewCell", owner: self, options: nil)?.first as! NewTableViewCell
cell.mainImageView.image = (arrayOfCellData[indexPath.row] as! cellconfigData).image
cell.mainLabel.text = (arrayOfCellData[indexPath.row] as! cellconfigData).text
return cell
}
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let item = arrayOfCellData[indexPath.row]
if item is cellData{
return UITableViewAutomaticDimension
}
else if item is cellconfigData{
return 100
}
return 0.0
}
。请找到我用过的代码
'H' -> print 01 to screen
'E' -> print A9 to screen
'L' -> print 5J to screen
'L' -> print 13 to screen
'O' -> print 3d to screen ...