Swift 无法更改Xcode 6动态表中的行高度
我有一个UItableViewController,希望行高度适应UITextView中的文本。如果在viewDidLoad中使用此代码,则会使行的高度太小,无法容纳文本:Swift 无法更改Xcode 6动态表中的行高度,swift,uitableview,xcode6,Swift,Uitableview,Xcode6,我有一个UItableViewController,希望行高度适应UITextView中的文本。如果在viewDidLoad中使用此代码,则会使行的高度太小,无法容纳文本: self.tableView.rowHeight = UITableViewAutomaticDimension self.tableView.estimatedRowHeight = 50 我能找到的唯一调整大小的方法是更改序列图像板中的表视图行高度。这会更改表视图中的每个单元格,这不是我想要的 有人对我遗漏的
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 50
我能找到的唯一调整大小的方法是更改序列图像板中的表视图行高度。这会更改表视图中的每个单元格,这不是我想要的
有人对我遗漏的内容有什么建议吗?您可以尝试使用:
func tableView(tableView: UITableView,
heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100 //Whatever fits your need for that cell
}
您可以使用tableView.CellForRowatineXpathIndexPath获取单元格,并根据需要设置其高度。您可以尝试使用:
func tableView(tableView: UITableView,
heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100 //Whatever fits your need for that cell
}
您可以使用tableView.cellForRowAtIndexPathindexPath获取单元格,并根据需要设置高度。有一种覆盖方法可以更改每行的高度
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 50
}
如果要使其变大或变小,还可以创建和If-Else条件。只需返回一个数字有一种覆盖方法可以更改每行的高度
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 50
}
如果要使其变大或变小,还可以创建和If-Else条件。如果您想让数字适应您内容的大小,只需返回一个数字即可 获取当前的tableView框架,然后调整高度 取决于内容的高度
var frame = CGRect(origin: tableView.frame.origin, size: tableView.frame.size)
frame.size.height = tableView.contentSize.height
tableView.frame = frame
如果你想让它适应你内容的大小 获取当前的tableView框架,然后调整高度 取决于内容的高度
var frame = CGRect(origin: tableView.frame.origin, size: tableView.frame.size)
frame.size.height = tableView.contentSize.height
tableView.frame = frame
这是我的工作代码:
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
}
}
这是我的工作代码:
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
}
}
如果UITableViewAutomaticDimension无法正常工作,则意味着单元格约束未完全满足,因此无法按照您的要求呈现。据我所知,我的约束是正确的。我已将textview的顶部和底部固定到单元格的边缘。同一单元格中的开关仅固定在顶部。如果UITableViewAutomaticDimension工作不正常,则意味着单元格约束未完全满足,因此无法按您所需的方式呈现。据我所知,我的约束是正确的。我已将textview的顶部和底部固定到单元格的边缘。同一单元格中的开关仅固定在顶部。这将更改整个视图的高度,OP希望更改表行的高度。这将更改整个视图的高度,OP希望更改表行的高度。我不想计算每个单元格的大小。除此之外,我的应用程序是通用的,所以它变得非常复杂。如果不是在所有设备上都一样的话,电池的高度很可能非常相似。一个简单的修复方法是,由于约束不允许它自动调整大小,只需使高度略大于textView高度。只需返回单元格的textView.height+10或您希望填充的任何内容。如果我已将边固定在单元格上,textView高度不是单元格高度的函数吗?是的。试着不要钉住边缘,只使用自动布局告诉你要使用的任何东西。只有当textView根据内部文本调整大小时,AutomaticDimension才会更改。在模拟器上运行时,您也可以通过按Debug View Hierarchy来检查高度。这不对吗?我不想计算每个单元格的大小。除此之外,我的应用程序是通用的,所以它变得非常复杂。如果不是在所有设备上都一样的话,电池的高度很可能非常相似。一个简单的修复方法是,由于约束不允许它自动调整大小,只需使高度略大于textView高度。只需返回单元格的textView.height+10或您希望填充的任何内容。如果我已将边固定在单元格上,textView高度不是单元格高度的函数吗?是的。试着不要钉住边缘,只使用自动布局告诉你要使用的任何东西。只有当textView根据内部文本调整大小时,AutomaticDimension才会更改。在模拟器上运行时,您也可以通过按Debug View Hierarchy来检查高度。这是错误的吗?根据惠瑞斯里奥和@caleb的建议,我已经设法使牢房高度大致正确。我会在我的答案中包含代码。按照wherisleo和@caleb的建议,我已经设法使单元格高度大致正确。我会把代码写进我的答案中。