我假设您的意思是您的 nib 包含 aUITableViewCell
作为顶级对象,并且表格视图单元格具有UILabel
子视图。
该viewDidLoad
方法在 上定义UIViewController
,并且UITableViewCell
不继承自UIViewController
。
UITableViewCell
是 的子类UIView
。视图调整其子视图框架的适当位置是在其layoutSubviews
方法中。您需要创建 的子类UITableViewCell
,并将其设置为 nib 中单元格的自定义类。然后,在您的子类中,定义此方法:
- (void)layoutSubviews {
[self.label sizeToFit];
}
在表格视图数据源的tableView:cellForRowAtIndexPath:
方法中,您可能希望setNeedsLayout
在设置标签文本后发送到单元格。layoutSubviews
如果单元被重用,这将确保单元再次接收。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyCell *cell = ...;
cell.customLabel.text = [self labelTextForIndexPath:indexPath];
[cell setNeedsLayout];
return cell;
}
或者,您可以创建一个UILabel
子类,如下所示:
@implementation MyLabel
- (void)layoutSubviews {
[self sizeToFit];
}
- (void)setText:(NSString *)text {
[super setText:text];
[self setNeedsLayout];
}
@end
然后MyLabel
在您的笔尖中设置为标签的自定义类。但是让视图设置自己的框架layoutSubviews
对我来说似乎有点可疑,所以我通常会避免它。