【问题标题】:How to set row height based on its content in table?如何根据表格中的内容设置行高?
【发布时间】:2016-05-21 00:10:54
【问题描述】:

一般情况下,表格的行高是固定的,但根据我的要求,我需要根据其中的内容设置每一行的高度。

谁能给我一些解决方案?

谢谢,

米拉杰

【问题讨论】:

    标签: cocoa nstableview


    【解决方案1】:

    表格视图委托协议有一个tableView:heightOfRow,可让您设置表格视图中每一行的高度。

    【讨论】:

    • 感谢您的快速回复...您能否建议我是否有一些标准方法可以根据其内容计算行高,或者我必须操纵一些比率:基于字符串中的字符和行宽..
    • 有一次我正在收听 NSViewFrameDidChangeNotification 通知,当我的特定视图出现时,我抓住了它的帧大小。我将存储行单元格的大小并在表格上使用 noteHeightOfRowsWithIndexesChanged 方法来告诉表格根据行高变化进行更新。可能不是最好的方法,但我只需要注意我正在移动的单个 webkit 视图。您可以在github.com/dj2/Rife/blob/master/lib/application.rb 看到使用 MacRuby 而不是 Obj-C 的代码
    • Miraaj:你可以询问每一列的宽度,你可以询问一个字符串如果绘制成一个给定大小的矩形(例如,一个具有列宽的矩形)它会占用多少空间和非常大的高度)。 developer.apple.com/mac/library/documentation/Cocoa/Reference/…: 对于一张图片,你必须自己计算,使用图片大小的纵横比。
    【解决方案2】:

    感谢大家的建议和帮助。现在使用tableView:heightOfRow:中的以下代码解决了这个问题

    float colWidth = [[[tableView tableColumns] objectAtIndex:1]width];
    
    NSString *content = [[[tempArray objectAtIndex:row] objectForKey:@"tValue"] string];
    
    float textWidth = [content sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:@"Lucida Grande" size:15],NSFontAttributeName ,nil]].width;
    
    float newHeight = ceil(textWidth/colWidth);
    
    newHeight = (newHeight * 17) + 13;
    if(newHeight < 47){
        return 47;
    }   
    return newHeight;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 2016-06-03
      • 2011-02-08
      • 2021-07-04
      • 1970-01-01
      • 2012-10-06
      相关资源
      最近更新 更多