我正在尝试使用自己的 XIB 创建一个自定义 UITableViewCell,其中包含两个重要的可编辑组件:
- UIL标签
- UIImage with 'end-cap insets' - 此图像位于标签后面,并随其调整大小
当我创建我的 UITableViewCell 时,我可以轻松地设置其标签的文本,但在相同的方法中,我也尝试更改 UIImage 的框架以匹配 UILabel 的框架。但是,直到我通过滚动表格视图以将其出列并将其重新显示为“重新加载”单元格时,才会发生这种情况。
我在视图控制器的 .m 中创建自定义表格视图单元格:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *UITableViewCellIdentifier = @"msgCell";
RMMessageCell *cell = [tableView dequeueReusableCellWithIdentifier:UITableViewCellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MessageCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
[cell customInit]; //This sets up the ImageView's image etc
}
[cell setMessageValue:[_messages objectAtIndex:indexPath.row]]; //SEE BELOW
return cell;
}
...在我的自定义单元格的 .m 中,我使用以下方法处理设置文本标签和调整图像大小:
- (void)setMessageValue:(NSString *)message {
_testLabel.text = message;
// Assume the text label's frame has already been set to the message's length
// (will add this in once I figure out how to change the imageView's
// frame correctly)
// Set the image view's frame to the label's
// THIS DOES NOT TAKE EFFECT UNTIL THE TABLE VIEW IS RE-SCROLLED
CGRect frame = _imageView.frame;
frame.size.width = _testLabel.frame.size.width + 8;
_imageView.frame = frame;
}