如何重新定位尺寸动态变化的UILabels和UIImageView?

时间:2010-10-02 13:08:46

标签: iphone layout interface-builder ios

我有一个UITableView,其中有很多行可以推送DetailViewController,具体取决于选择。此详细信息视图包含UIImageView和几个UILabels(例如书籍说明,书籍评论等)。在viewWillAppear中,我为这些商店分配了适当的内容,以便显示所选行的内容。我的问题是文本可能是一个句子,或几个段落。所以,如果我有一个用于书籍描述的插座而另一个用于书籍评论,我应该如何正确定位这些组件,以便它们的水平距离始终相同?我想创建一个UIWebView并在那里加载动态生成的HTML,但必须有一个更清洁的方法,对吧?

如果有帮助,这是一个视觉效果:)

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

2 个答案:

答案 0 :(得分:3)

在布局UITableView时,如果您使用UILabel作为描述和注释,您可以使用以下内容确定大小:

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

一旦你知道Description的高度,你可以使用CGRect等来适当地定位UIImageView。然后用这样的方式计算UITableView行的高度:

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

答案 1 :(得分:1)

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

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