在iOS8中自动调整tableViewCells仍会截断UILabel文本

时间:2014-08-12 17:50:29

标签: ios objective-c xcode uitableview swift

我一直在尝试使用新方法来调整iOS8中UITableView单元的大小,并且在某种程度上,它可以工作。我首先要确保标签贴在单元的顶部,底部,尾侧和前端的容器视图中,我被告知要在在线教程上做,但我觉得这就是问题所在。在viewDidLoad中,我然后输入以下行:

self.tableView.estimatedRowHeight = 56
self.tableView.rowHeight = UITableViewAutomaticDimension

在观看了WWDC之后,看起来这几乎就是我需要的关于单元的所有内容,所以我进入了界面构建器并设置了"线"标签的属性为0,再次按照视频中的说明进行操作。它按照我的预期调整了所有单元格的大小,但它总是使它们的行太小,以至于全文不适合。下面是它的外观截图。如果您需要更多信息或照片,请询问您是否更容易向我提供一些建议。我意识到这可能是我的一个愚蠢的错误,但有几个地方可以看,因为iOS 8是如此新鲜。非常感谢

enter image description here

3 个答案:

答案 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
}

也许它的作品

此致 唐尼