iOS - Swift - heightForRowAtIndexPath"橡皮筋"问题

时间:2014-06-23 02:55:51

标签: ios uitableview swift

我有一个UITableView,其可变单元格高度是根据文本大小计算的。

在heightForRowAtIndexPath函数中,如果我返回一个简单的数字,例如72.0,表视图看起来很好,但显然文本会被截断。

但是,如果我有任何类型的计算,例如下面的简单计算,当您向上或向下滚动太远时通常会看到的橡皮筋效果完全消失,并且表格视图“快照”到它应该结束的位置起来。

return CGFloat(arc4random() % UInt32(100))

上面的代码仅用于显示任何类型的简单计算都会导致此错误,但这是我正在尝试的实际代码:

override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat {
    var article = articles.objectAtIndex(indexPath.row) as NewsArticle

    var attributes: NSDictionary = NSDictionary(objectsAndKeys: theme.newsHomeArticleTitleFont, NSFontAttributeName)
    var titleText = article.title as NSString
    var titleRect = titleText.boundingRectWithSize(CGSizeMake(self.view.frame.size.width - 64, 128), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: attributes, context: nil)

    return titleRect.height + 52.0
}

我还应该指出,如果一个或多个单元格在滚动时从视图中消失,则橡皮筋只会消失,因为我相信只有在需要绘制新单元格时才会出现此问题。

有人可以帮忙吗?

编辑:奇怪的新开发,如果我将字体大小从17更改为15,橡皮带再次起作用,尽管字体大小的减少不会改变行数或类似的东西。 / p>

1 个答案:

答案 0 :(得分:0)

我遇到了类似你的问题。我点击了故事板中的tableview,然后单击侧栏上的属性检查器。然后我取消勾选启用分页选项。 我希望它可以提供帮助!