我为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的高度将变为正确,如何解决问题?提前谢谢!
答案 0 :(得分:0)
尝试在tableView:willDisplayCell:forRowAtIndexPath:
方法中执行此操作。这是通常用于UI自定义的方法。希望这有帮助!
答案 1 :(得分:0)
如果你需要修改任何单元格的框架,那么你应该创建一个UITableViewCell的子类并实现layoutSubviews方法:
- (void)layoutSubviews {
[super layoutSubviews];
// modify frames here
}
答案 2 :(得分:0)
我知道这令人沮丧,但我也没有找到解决方案。 相反,我发现自己是一个完成工作的解决方法,因为我希望它们可以工作。
我删除了“AutoLayout”(故事板中的复选框)
然后:
[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(对我而言,这是我取消选中的第一件事)摆脱它。