2010-10-02 87 views
1

我有一个UITableView与许多行推动DetailViewController取决于选择。此详细信息视图包含UIImageView和几个UILabels(让我们来说说书籍描述,书籍评论等)。在viewWillAppear中,我将适当的内容分配给这些插座,以显示所选行的内容。我的问题是,文本可能是一个句子,或几个段落。所以,如果我有一个出版物用于书籍描述,另一个出版书籍评论,我应该如何正确定位这些组件,以便它们的水平距离始终相同?我想创建一个UIWebView并加载那里动态生成的HTML,但必须有一个更清洁的方式,对吗?如何重新定位尺寸会动态变化的UILabels和UIImageView?

这里是一个可视化的东西,如果帮助:)

------------------------------ 
| Description    | 
| [multiple lines go here] | 
|       | 
| [Image]     | 
|       | 
| Comments     | 
| [multiple lines go here] | 
------------------------------ 

回答

3

当你布置你的UITableView,如果你使用的描述UILabels和评论你可以计算出大小像这样的东西:

CGSize labelSize = [nameLabel.text sizeWithFont: nameLabel.font 
           constrainedToSize: CGSizeMake(actualWidth, MAXFLOAT) 
            lineBreakMode: UILineBreakModeWordWrap]; 

一旦你知道的描述让说的高度,就可以定位适当的UIImageView使用的CGRect,等等,等等。然后用像这样计算的UITableView行的高度:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
1

使用-sizeThatFits:和-sizeToFit创建自定义视图类并在-layoutSubviews中执行布局。

布局代码不属于视图控制器。