在自定义UITableViewCell中更改UILabel的位置和大小

时间:2014-02-24 16:12:15

标签: ios objective-c uitableview

我正在尝试更改自定义UILabel内的UITableViewCell的位置和大小,具体取决于某个条件是否为真。在我的自定义UITableViewCell标头文件中,我声明了UILabel

@property (strong, nonatomic) IBOutlet UILabel *stepText;

我想根据条件将位置更改为UILabel的大小。在持有UITableView的视图中,我执行了检查:

if(step.picture == nil){
    CGRect frame = cell.stepText.frame;
    frame = CGRectMake(0, 0, 100, 100);
    cell.stepText.frame = frame;
}

我在检查中使用了一个NSLog,并且在条件为真时我已经验证它会被执行,但是,我的自定义单元格中标签的位置和大小不会改变。

我在这里做错了什么?

3 个答案:

答案 0 :(得分:2)

更改任何内容后,您可以尝试-setNeedsLayout。使用上面代码的简化版本执行此操作会产生:

if (step.picture == nil) {
    cell.stepText.frame = CGRectMake(0, 0, 100, 100);
    [cell setNeedsLayout];
}

更好的是,您可以将您的重新调整代码放在-layoutSubviews中,并在任何更改时调用[cell setNeedsLayout]。关于这两种方法的关系,赋予this SO answer或许多其他来源。

答案 1 :(得分:0)

确保将自定义UILabel添加到cell.contentView。

如果您想使用自定义标签:
- 在文件.h

@property (nonatomic, retain) IBOutlet UILabel *ttitle;

-in file .m

self.ttitle = [[UILabel alloc] initWithFrame:CGRectMake(74,16,190,16)];
self.ttitle.textAlignment = NSTextAlignmentLeft;
[self.ttitle setText: [NSString  stringWithFormat: @"yourtext"]];
[cell.contentView addSubview:self.ttitle];

希望这有帮助。

答案 2 :(得分:0)

最好使用create uitableviewcell及其控制器插座来控制它,并像自定义tableview一样使用它。