我有一个自定义(子类化)UITableViewCell,其中包含一些 UILabel、一个 UIButton 和一个 NSBlock 作为属性。这个子类称为ExploreCell
. 其中两个属性是 UILabel,分别命名为waitLabel
和lastUpdateLabel
。
当内容lastUpdateLabel
为 nil 或为空白@""
时,我需要waitLabel
垂直向下(在 Y 轴上)移动 10 个像素。我通过检查一些对象来做到这一点,NSDictionary
如下面的代码所示,我在-tableView:cellForRowAtIndexPath:
方法中放入了这些对象。
CGRect frame = cell.waitLabel.frame;
if ([[venue allKeys] containsObject:@"wait_times"] && ([[venue objectForKey:@"wait_times"] count] > 0)) {
frame.origin.y = 43;
}
else {
frame.origin.y = 53;
}
[cell.waitLabel setFrame:frame];
但是,此代码间歇性地工作,并且尝试调用-setNeedsLayout
,仍然无法正常工作。间歇性地,我的意思是,在滚动几次之后,符合条件的一两个单元格将单元格的原点向下移动 10 个像素,实际上它们waitLabel
的框架发生了变化。
请您告诉我为什么会发生这种情况,以及如何解决。