在iOS 7中更改tableview中的标签高度

时间:2014-01-24 23:13:17

标签: ios uitableview ios7 label cgsize

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

我可以根据细胞含量更改细胞高度,但遗憾的是我无法更改标签高度,:(( 我已经阅读了大量的stackoverflow答案,但仍然没有。

据信这可行:

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

但在iOS 7中已弃用;任何人都可以帮助我在单元格中调整我的标签大小吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

UITableViewCell-layoutSubviews中列出了它的内容。因此,如果您只想拥有自定义布局逻辑,则需要继承UITableViewCell并覆盖-layoutSubviews方法。不过,最好在应用逻辑之前调用super

答案 2 :(得分: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;
}