在我的自定义表格视图单元子类中,文本标签之一的位置取决于 ivar (NSString) 的内容。(即:如果 NSString 为空字符串,则 textlabel 的框架位置不同)。
位置如果更新如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
customOverlayCell *myCell = [self.tableView dequeueReusableCellWithIdentifier:@"CustomOverlayCell"];
if ([buildingFName isEqual:@""])
{
CGRect titleLabelFrame = myCell.titleLabel.frame;
titleLabelFrame.origin.y = 45;
[myCell.titleLabel setFrame:titleLabelFrame];
}
return myCell;
}
我已经删除了部分不相关的代码。
结果是屏幕上出现的第一个单元格的布局被正确更新,但向下滚动后出现的视图的布局没有更新。
我没有正确使用 dequeueReusableCellWithIdentifier 吗?或者还有什么问题吗?
编辑:
EJV 的解决方案:
CGRect titleLabelFrame = myCell.titleLabel.frame;
if ([buildingFName isEqual:@""])
{
titleLabelFrame.origin.y = 45;
} else {
titleLabelFrame.origin.y = 37;
}
[myCell.titleLabel setFrame:titleLabelFrame];