我基本上试图找到设计UITableViewCell的正确方法,其中包含两个UITextViews和三个UILabel。两个UITextView具有动态内容,并且直到运行时才能确定它们的大小。
我已经尝试了各种方法根据运行时加载的内容重新计算我的UITextViews的高度,尽管非常费力和无聊,我已经让它工作了,但是他们然后流失了位于的UILabels他们下面的xib。
在计算UITextViews的新大小后,我是否真的必须重新计算每个UILabel的y坐标?有没有办法简单地让xib中的元素“推”下面的元素根据它们的新尺寸?
使用多个动态文本视图配置UITableViewCell的正确方法是什么,以便我的整个应用程序不包含计算高度和坐标的代码?
或者我不应该在同一个UITableViewCell中放置多个动态UITextView?
答案 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/