无法在UITableViewCell中更新UI对象的框架

Ben*_*enB 5 iphone objective-c uitableview

我有一个子类UITableViewCell.

我需要动态更改UILabel的框架.

这就是我所做的:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"messageCell";
    MessageCell *cell = (MessageCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    cell.Content.Text = @"Content!";
    [cell.Content setFrame:CGRectMake(0, 0, 10, 10)];
}
Run Code Online (Sandbox Code Playgroud)

UILabel的文本确实发生了变化,因此这不是IBOutlet问题.然而,框架保持与IB中定义的相同.

我以前做过这样的事情,所以我不确定这里出了什么问题......

谢谢你的帮助.

编辑:

我用

[self.tableView registerNib:[UINib nibWithNibName:@"MessageCell" bundle:nil]
     forCellReuseIdentifier:@"MessageCell"]; 
Run Code Online (Sandbox Code Playgroud)

在viewDidLoad中

Ben*_*enB 5

在发布赏金后几天我找到了答案,我希望有一天能帮到某人...

我不是百分百肯定为什么,但我试图做的事情根本无法完成:

如果通过Interface Builder放置它,则无法更改对象的框架.

为了进行我想做的更改,我只是在我的子类中以"initWithCoder"编程方式创建了这些对象.

content = [[UILabel alloc] initWithFrame:CGRectMake(120, 100, 200, 50)];
content.opaque = NO;
content.numberOfLines = 0;
[self.contentView addSubview:content];
Run Code Online (Sandbox Code Playgroud)

然后我能够改变" - (void)layoutSubviews"中的帧(但基本上我想要的任何地方)

- (void)layoutSubviews
{
    [super layoutSubviews];
    [cell.Content setFrame:CGRectMake(0, 0, 10, 10)];

    ...
Run Code Online (Sandbox Code Playgroud)