5

我为 iOS6 开发了一个应用程序。我在情节提要中初始化了动态单元格,其中包含一些UILabels和一些UIImageViews. 他们的高度可能会即时改变。我的问题是当我cellForRowAtIndexPath像这样更改框架时:

contentText = (UILabel *)[cell viewWithTag:TAG_TOPIC_CONTENT_TEXT];

CGFloat height = [[self.contentHeights objectAtIndex:[indexPath row]] floatValue];

contentText.frame = CGRectMake(CELL_TOPIC_CONTENT_X, CELL_TOPIC_CONTENT_Y, CELL_CONTENT_WIDTH, height);

屏幕上显示的 contentText 的高度UILabel仍然与我在 Storyboard 中初始化的高度相同。看来修改不起作用。如果我刷新我UITableView的 contentText 的高度会变得正确,如何解决这个问题?提前致谢!

4

3 回答 3

0

如果您需要修改任何单元格的框架,那么您应该创建一个 UITableViewCell 的子类并实现 layoutSubviews 方法:

- (void)layoutSubviews {
  [super layoutSubviews];

  // modify frames here
}
于 2013-03-31T14:34:01.240 回答
0

尝试在tableView:willDisplayCell:forRowAtIndexPath:方法中执行此操作。这是通常用于 UI 自定义的方法。希望这可以帮助!

于 2013-03-31T11:04:48.653 回答
0

我知道这令人沮丧,但我也没有找到解决方案。相反,我发现自己是一种解决方法,可以按照我期望的方式完成工作。

删除了“自动布局”(情节提要中的复选框)

然后:

[self.label setText:@"Labeltext"];
[self.label setBackgroundColor:[UIColor orangeColor]];// just to make the frame visible
[self.label setNumberOfLines:0];
[self.label sizeToFit];

像魅力一样工作,但也:

self.label.frame = CGRectMake(0, 0, 50, 50);

因此,如果您不需要 AutoLayout(对我来说这是我取消选中的第一件事),请摆脱它。

于 2013-04-25T08:28:08.043 回答