UITableViewCell UI不一致的原因

时间:2015-07-17 10:51:16

标签: ios iphone swift uitableview

大多数情况下,当我的应用程序正常工作时,我的表格视图项目如下所示:

enter image description here

但是每隔一段时间(初始加载时)看起来就像这样:

enter image description here

如您所见,图像已调整大小,“已发布的”标签已调整大小。

为什么会这样?相同的代码/故事板应该以相同的方式影响所有单元格?为什么有些人没有做他们被告知的事情?

如果有帮助,当一个单元格加载错误的方式时,我所要做的就是向上滚动,然后再向下滚动,问题就解决了!

这意味着图像或文本数量显然没有问题,只是iPhone正在表现吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我认为它的细胞出列问题了。您的细胞无法计算细胞的正确高度。如果您使用的是autolayout,请尝试以下代码。希望它对你有用。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static YOUR_TABLEVIEW_CELL *sizingCell = nil;
    static NSString *CellIdentifier=@"YOUR_TABLEVIEW_CELL_IDENTIFIER";
    sizingCell =[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (sizingCell==nil)
    {
        sizingCell=[[YOUR_TABLEVIEW_CELL alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    [self configureFareIssueCell:sizingCell atIndexPath:indexPath];
    return [self calculateHeightForConfiguredSizingCell:sizingCell];
}

//assign all the lables & images here
- (void)configureFareIssueCell:(YOUR_TABLEVIEW_CELL* )cell atIndexPath:(NSIndexPath *)indexPath
{
    //e.g 
    cell.lbl.text=@"YOUR_TEXT";
    cell.imageView.image=[UIImage imageNamed:@"NAME_OF_YOUR_IMAGE"];
} 

- (CGFloat)calculateHeightForConfiguredSizingCell:(YOUR_TABLEVIEW_CELL *)sizingCell
{
    CGSize size = [sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
    return size.height + 1.0f; // Add 1.0f for the cell separator height
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier=@"YOUR_TABLEVIEW_CELL_IDENTIFIER";
    YOUR_TABLEVIEW_CELL   *cell =[tableView dequeueReusableCellWithIdentifier:@"YOUR_TABLEVIEW_CELL_IDENTIFIER"];
    if (cell==nil)
    {
        cell=[[YOUR_TABLEVIEW_CELL alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    [self configureFareIssueCell:cell atIndexPath:indexPath];

    return cell;
}

答案 1 :(得分:0)

您是否使用图层蒙版创建圆角图像?如果是,您会看到这种奇怪的行为,因为在UITableView为单元格分配正确的帧之前创建了图层蒙版,因此图层蒙版将具有不正确的帧。