如何配置iO UITextViews和UILabel,使其高度由其内容决定

时间:2011-01-19 04:51:26

标签: iphone ios

我基本上试图找到设计UITableViewCell的正确方法,其中包含两个UITextViews和三个UILabel。两个UITextView具有动态内容,并且直到运行时才能确定它们的大小。

我已经尝试了各种方法根据运行时加载的内容重新计算我的UITextViews的高度,尽管非常费力和无聊,我已经让它工作了,但是他们然后流失了位于的UILabels他们下面的xib。

在计算UITextViews的新大小后,我是否真的必须重新计算每个UILabel的y坐标?有没有办法简单地让xib中的元素“推”下面的元素根据它们的新尺寸?

使用多个动态文本视图配置UITableViewCell的正确方法是什么,以便我的整个应用程序不包含计算高度和坐标的代码?

或者我不应该在同一个UITableViewCell中放置多个动态UITextView?

3 个答案:

答案 0 :(得分:2)

我已经使用类似这样的东西来计算单元格

的高度
tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

功能

    CGSize labelSize = [self.comments sizeWithFont:[UIFont fontWithName:@"Verdana" size:17.0] 
                                                 constrainedToSize:CGSizeMake(280.0f, MAXFLOAT) 
                                                     lineBreakMode:UILineBreakModeWordWrap];
    return labelSize.height + 20;

+20用于填充。

如果你正在使用上面提到的每个单元格,那么你可以创建一个UITableViewCell类,其中包含以下UIView元素。

答案 1 :(得分:1)

iOS似乎没有任何类型的流布局引擎 - 至少没有我能想到的。 但是,如果您的标签位于UITableViewCell的底部,您可以将UILabel的autoresizingMask掩码属性设置为UIViewAutoresizingFlexibleBottomMargin,以便UILabels将自己锚定在底部。这假设您已经调整了UITableViewCell的大小以适应整个控件。否则,我认为处理此问题的最佳方法是重新计算标签的y坐标。

答案 2 :(得分:0)

我发现将这种行为添加为UIView上的类别非常有用,因此视图可以调整其子视图之一以适应某些任意文本,并可选择调整父视图的大小以适应新放大的子视图。

http://blog.carbonfive.com/2009/07/10/resizing-uilabel-to-fit-text/