我有一个自定义(子类)UITableViewCell,其中包含一些 UILabel、一个 UIButton 和一个 Block 作为属性。这个子类称为ExploreCell
。其中两个属性是 UILabels 并命名为waitLabel
and lastUpdateLabel
分别。
当内容lastUpdateLabel
为零或为空,即@""
,我需要移动waitLabel
垂直向下(在 Y 轴上)10 个像素。我通过检查中的一些对象来做到这一点NSDictionary
如我放入的以下代码所示-tableView:cellForRowAtIndexPath:
method.
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
的框架发生了变化。
请您告诉我为什么会发生这种情况以及如何解决它。
这看起来像是自动布局的问题。如果您没有明确关闭它,那么它就会打开。您应该在单元格的顶部(或底部)建立一个约束的出口,并在代码中更改该约束的常量,而不是设置框架。根据 WWDC 2012 视频,如果您使用自动布局,则代码中不应有任何 setFrame: 消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)