我正在构建一个表视图场景,我已经为原型单元定义了一个自定义高度。我为自定义单元格创建了一个文件,并通过该文件中的IBOutlets添加了一个图像和两个标签。我已连接表视图,表正在调用信息,但高度未应用。这是我的单元格类和cellForRow方法的语法。
TableView文章对象:
import Foundation
import UIKit
class FeedItem {
var feedItemTitle: String
var feedItemImage: UIImage
var feedItemExcerpt: String = "Lorem ipsum dolor amet flexitarian art party skateboard, ethical pop-up drinking vinegar readymade humblebrag hot chicken. Retro kogi quinoa..."
var feedItemLike: UIImage
var feedItemComment: UIImage
init(feedItemTitle: String, feedItemImage: UIImage, feedItemLike: UIImage, feedItemComment: UIImage) {
self.feedItemTitle = feedItemTitle
self.feedItemImage = feedItemImage
self.feedItemLike = feedItemLike
self.feedItemComment = feedItemComment
}
}
TableView Cell:
import UIKit
class FeedTableViewCell: UITableViewCell {
@IBOutlet weak var articleImageView: UIImageView!
@IBOutlet weak var articleTitleLabel: UILabel!
@IBOutlet weak var articleExcerptLabel: UILabel!
}
TableView扩展:
extension NewFeedViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return articlesArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Article Cell", for: indexPath) as! FeedTableViewCell
cell.articleImageView.image = articlesArray[indexPath.row].feedItemImage
cell.articleTitleLabel.text = articlesArray[indexPath.row].feedItemTitle
cell.articleExcerptLabel.text = articlesArray[indexPath.row].feedItemExcerpt
return cell
}
}
以下是应用程序运行时表视图的截图:
以下是Xcode中Prototype单元格和Size Inspector的屏幕截图:
答案 0 :(得分:3)
使用此属性
self.table.estimatedRowHeight = 44.0
self.table.rowHeight = UITableViewAutomaticDimension
甚至你也可以使用代表
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return 44
}
答案 1 :(得分:2)
您必须在委托方法中明确指定行高。像这样:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
return 100.0;//Choose your custom row height
}
答案 2 :(得分:1)
在viewDidLoad()
中使用
tableView.rowHeight = 400
希望它有所帮助!
答案 3 :(得分:1)
1-在viewDidLoad
中使用动态tableView tableView.estimatedRowHeight = 400;
tableView.rowHeight = UITableViewAutomaticDimension;
2-不实现hightforCellAtIndexpath
3-从上到下在单元格xib中正确调整约束
关于collectionview,imageView和reply部分初始给出它们所有的高度约束为零,然后将每个on的高度约束挂钩为IBOulet,并根据 cellForRowAtIndexpath 更改它的常量值。当前项通过更改约束的相应常量值来管理隐藏/显示 返回单元格之前5-执行此操作
cell.layoutSubviews()
cell.layoutIfNeeded()
return cell
因此可以传递单元格以反映其子视图约束的变化
答案 4 :(得分:0)
对Delegate
heightForRowAt
- {/ p>使用UITableView
方法
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
return 130.0;
}