我一直在尝试使用新方法来调整iOS8中UITableView单元的大小,并且在某种程度上,它可以工作。我首先要确保标签贴在单元的顶部,底部,尾侧和前端的容器视图中,我被告知要在在线教程上做,但我觉得这就是问题所在。在viewDidLoad中,我然后输入以下行:
self.tableView.estimatedRowHeight = 56
self.tableView.rowHeight = UITableViewAutomaticDimension
在观看了WWDC之后,看起来这几乎就是我需要的关于单元的所有内容,所以我进入了界面构建器并设置了"线"标签的属性为0,再次按照视频中的说明进行操作。它按照我的预期调整了所有单元格的大小,但它总是使它们的行太小,以至于全文不适合。下面是它的外观截图。如果您需要更多信息或照片,请询问您是否更容易向我提供一些建议。我意识到这可能是我的一个愚蠢的错误,但有几个地方可以看,因为iOS 8是如此新鲜。非常感谢
答案 0 :(得分:1)
我遇到了同样的问题。我必须做所有3条建议才能让它发挥作用:
将标签上的行数设置为0.
在cellForRowAtIndexPath:
中,在分配所需的字符串之前,将单元格标签的文本设置为空字符串。
在[tableView reloadData]
中呼叫viewDidAppear:
。
我确实尝试过单独使用它们并不起作用。
之后我遇到了一个小问题...文本的原始布局在表重新加载之前就在视图中,并且在调整文本时会导致看起来很奇怪的文本“闪烁”。所以我创建了一个bool并将单元格标签设置为隐藏。当viewWillAppear:
被调用时,我将bool设置为true,而在cellForRowAtIndexPath:
中,如果bool为真,我取消隐藏标签。
无论如何,希望他们能够解决这个问题,因为这是一个很棒的功能。
答案 1 :(得分:0)
我还遇到了自动调整大小的格式问题,尤其是UILabel对象。最终对我有用的是修改cellForRowAtIndexPath:
并在分配实际字符串值之前首先将UILabel的文本分配给空字符串,如下所示:
cell.myLabel.text = @"";
cell.myLabel.text = @"Here is the label's actual string value";
我有一种感觉Apple仍然有一些问题需要解决自动调整大小。
答案 2 :(得分:0)
我有一些问题,我在我的代码中这样做了 首先,确保内容拥抱优先级大于另一个元素 第二,在viewDidLoad()
中调用tableView.reloadData()override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
tableView.reloadData()
}
最后,调用tableView dataSource函数使高度动态化: tableView(tableView:UITableView,estimatedHeightForRowAtIndexPath indexPath:NSIndexPath) - > CGFloat的 还有这个 tableView(tableView:UITableView,heightForRowAtIndexPath indexPath:NSIndexPath) - > CGFloat的
override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return tableView.rowHeight
}
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
也许它的作品
此致 唐尼