我正在尝试更改自定义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,并且在条件为真时我已经验证它会被执行,但是,我的自定义单元格中标签的位置和大小不会改变。
我在这里做错了什么?
答案 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一样使用它。