max*_*ax_ 6 objective-c uitableview uilabel ios
我有一个自定义(子类)UITableViewCell,它包含一些UILabel,一个UIButton和一个NSBlock作为属性.调用此子类ExploreCell.属性中有两个是UILabels和命名waitLabel,并lastUpdateLabel分别.
当内容lastUpdateLabel为nil或is为空时,即@""我需要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];
Run Code Online (Sandbox Code Playgroud)
但是,此代码间歇性地工作,并且试图调用-setNeedsLayout,仍然不起作用.通过间歇性地,我的意思是在滚动几次后,一个或两个符合条件的单元格将单元格的原点向下移动10个像素,实际上它们waitLabel的框架已经改变了.
请问您能告诉我为什么会这样,以及如何解决这个问题.
rde*_*mar 12
这看起来像是自动布局的问题.如果你没有明确地将其关闭,那么它就开启了.您应该在单元格的顶部(或底部)创建约束出口,并在代码中更改该约束的常量,而不是设置框架.根据WWDC 2012视频,如果您使用自动布局,则代码中不应包含任何setFrame:消息.
| 归档时间: |
|
| 查看次数: |
2822 次 |
| 最近记录: |