我有一个UItableViewController,并希望行高适应UITextView中的文本。如果我在viewDidLoad中使用此代码,则会使行的高度太小而无法容纳文本:
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 50
我可以找到调整大小的唯一方法是更改StoryBoard中的表视图行高。这会更改表格视图中的每个单元格,这不是我想要的。
有没有人对我遗失的内容有任何建议?
答案 0 :(得分:4)
这是我的工作代码:
override func tableView(tableView: UITableView,
heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
var text:String
if indexPath.section > 0 {
text = switchNameArray [indexPath.row]
} else {
text = viewDescription
}
return calculateHeight(text)
}
func calculateHeight (text:String) -> CGFloat {
if UIDevice.currentDevice().userInterfaceIdiom == .Pad
{
return CGFloat(count(text)+50) // iPad
} else {
return CGFloat(count(text)+30) // iPhone
}
}
答案 1 :(得分:3)
有一种覆盖方法可以更改每行的高度。
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 50
}
如果你想让它更大或更小,你也可以创建和If-Else条件。只需返回一个数字
答案 2 :(得分:1)
您可以尝试使用:
func tableView(tableView: UITableView,
heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100 //Whatever fits your need for that cell
}
您可以使用tableView.cellForRowAtIndexPath(indexPath)获取单元格,并根据需要设置高度。
答案 3 :(得分:0)
如果您希望它适应您的内容的大小 获取当前tableView框架然后调整高度 取决于内容的高度。
bool find_something(std::string s, char something)
{
for (ch : s)
if (ch == something) return true;
return false;
}