0

我在表格视图的自定义单元格中有一个标签。我想在用户点击一个单元格后更改单元格高度和标签高度(起初我只显示 2 行,我想显示更多文本),

我可以根据单元格内容更改单元格高度,但不幸的是我无法更改标签高度,:((我已经阅读了大量的 stackoverflow 答案,但仍然没有。

相信这会奏效:

CGSize labelSize = [@"Hello World!" sizeWithFont:[UIFont systemFontOfSize:17] constrainedToSize:CGSizeMake(label.frame.size.width,MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];

但这在 iOS 7 中已被弃用;有人可以帮我调整单元格中的标签大小吗?

4

3 回答 3

1

如果您希望标签的高度相对于单元格的高度并使用 Storyboard,则应确定标签的大小,并具有与单元格的 ContentView 相关的约束。只需设置标签到 ContentView 的顶部和底部距离,标签没有额外的高度。

如果您不知道如何设置 Storyboard 和约束,这可能会有所帮助:https ://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AutoLayoutbyExample/AutoLayoutbyExample.html

于 2014-01-25T11:20:39.973 回答
0

UITableViewCell列出它的内容-layoutSubviews。因此,如果您想简单地拥有自定义布局逻辑,则需要子类UITableViewCell化并覆盖该-layoutSubviews方法。super不过,在应用您的逻辑之前调用它是个好主意。

于 2014-01-24T23:20:40.160 回答
0

你可以使用这样的东西来获取 UIlabel 大小

-(CGFloat)getLabelSize:(UILabel *)label fontSize:(NSInteger)fontSize
{


    NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                      [UIFont systemFontOfSize:fontSize], NSFontAttributeName,
                                      nil];

    CGRect frame = [label.text boundingRectWithSize:CGSizeMake(270, 2000.0)
                                        options:NSStringDrawingUsesLineFragmentOrigin
                                     attributes:attributesDictionary
                                        context:nil];

    CGSize size = frame.size;

    return size.height;
}
于 2014-01-25T11:23:25.223 回答