【问题标题】:iPhone -> dynamic cell heightiPhone -> 动态单元格高度
【发布时间】:2011-02-01 16:34:46
【问题描述】:

我有一个 UITableView 和一个使用 Interface Builder 设计的 Cell。 我在那里有两个标签。 问题是,其中一个标签是可以是 500 字或 10 字的文本。

所以我需要一个动态的单元格高度。我该如何处理,否则我有空白空间或单元格高度不够。

也许有人知道如何做到这一点?

最好的问候。

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    要知道你的文本的大小,你可以使用这个方法:

    - (CGFloat)measureTextHeight:(NSString*)text fontName:(NSString*)fontName fontSize:(CGFloat)fontSize constrainedToSize:(CGSize)constrainedToSize {
    CGSize mTempSize = [text sizeWithFont:[UIFont fontWithName:fontName size:fontSize] constrainedToSize:constrainedToSize lineBreakMode:UILineBreakModeWordWrap];
    return mTempSize.height; }
    

    然后你可以设置你的尺寸单元格:

    -(CGFloat)tableView:(UITableVIew*)tableView heightForRowAtIndexPath(NSIndexPath *)indexPath;
    

    【讨论】:

    • 嗯,难道不能从 UILabel 字段中读取所有值吗?因为如果我改变尺寸,我也必须在这里改变它,constrainedToSize是什么?
    • constrainedToSize 是你的屏幕宽度(或者你的 UILabel,如果它不适合屏幕宽度)。
    • 啊,好吧,它似乎工作,但我可以在哪里以及如何调整 UILabel 的大小?
    • 你只需要改变你的 UILabel 框架。像这样: label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, constrainedToSize.width, [self measureTextHeight:label.text fontName:fontName fontSize:fontSize constrainedToSize:constrainedToSize]);
    【解决方案2】:
    -(CGFloat)tableView:(UITableVIew*) tableView heightForRowAtIndexPath(NSIndexPath *) indexPath
    {
       //here u can check the row number and ur labels and return ur custom height.
    }
    

    【讨论】:

    • 是的,这很清楚,但是如何检查标签的这些高度?因为我在 IB 中用 40px 定义它,所以这是一个固定大小。所以如果我要求标签高度,我总是会得到 40px。
    • 好问题...我没有任何好主意...只有丑陋的一个,你可以计算字符并根据你的字体猜测它的高度:S
    猜你喜欢
    • 2011-06-05
    • 2017-11-14
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多