Uitableview iOS 12.x和iOS 13.x之间呈现附件/泄漏指示器的差异不正确

Uitableview iOS 12.x和iOS 13.x之间呈现附件/泄漏指示器的差异不正确,uitableview,ios13,ios12,accessoryview,Uitableview,Ios13,Ios12,Accessoryview,在我在app Store开发和销售的应用程序中,从iOS 13开始运行时,应用程序自定义表格单元格中使用的披露附件的背景区域是不透明的,覆盖了单元格其余部分的内容,截断了图像的右侧,在某些情况下截断了下部描述区域中的文本。通过在Xcode中加载v12.4模拟器并使用该模拟器构建应用程序,我已经“证明”了公开附件呈现方式的这种变化是从iOS 12.x到iOS 13.x的。在12.4模拟器上运行应用程序时,披露附件会正确显示,因为它从开发此应用程序开始就出现了 下面是显示披露区域在13.x之前的显示

在我在app Store开发和销售的应用程序中,从iOS 13开始运行时,应用程序自定义表格单元格中使用的披露附件的背景区域是不透明的,覆盖了单元格其余部分的内容,截断了图像的右侧,在某些情况下截断了下部描述区域中的文本。通过在Xcode中加载v12.4模拟器并使用该模拟器构建应用程序,我已经“证明”了公开附件呈现方式的这种变化是从iOS 12.x到iOS 13.x的。在12.4模拟器上运行应用程序时,披露附件会正确显示,因为它从开发此应用程序开始就出现了

下面是显示披露区域在13.x之前的显示方式(第一个屏幕显示方式)和在13.x之前的显示方式(第二个屏幕显示方式)的屏幕显示方式的屏幕显示方式:

我能找到的最近的SO帖子没有帮助我解决这个问题:

我在设置此自定义单元格时尝试添加以下内容,但没有达到预期效果: cell.accessoryView.backgroundColor=[UIColor clearColor]

感谢您提供有关如何解决此问题的指导


根据论坛最初的建议,编辑以下内容


注意我已经很多年没有接触过这个代码了,所以我不知道为什么图像和标签会发生变化。在任何情况下,我都尝试编辑图像视图和标签,以与xib中单元格配置的边框对齐。还尝试调整图像视图和标签的大小,使其不覆盖公开区域,但不改变应用程序渲染。已尝试查看调试器,但所有选项均灰显。对不起,我以前没有处理过这个问题

(问题:披露图标右侧的灰色竖条表示什么?)

.xib的屏幕帽加载到视图控制器单元中,图像视图和标签句柄如下所示:

视图控制器设置表格单元格的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CloudIndexCell";
    
    CloudIndexCell *cell = (CloudIndexCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        
        if (cell == nil) {
            
            NSArray *topLevelObjects = [[NSBundle mainBundle]
                                        loadNibNamed:@"CloudIndexCell"
                                        owner:nil options:nil];
            for (id currentObject in topLevelObjects){
                if ([currentObject isKindOfClass:[UITableViewCell class]]) {
                    cell = (CloudIndexCell *) currentObject;
                    break;
                }
            }
        }
    }
    
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        
        if (cell == nil) {
            
            NSArray *topLevelObjects = [[NSBundle mainBundle]
                                        loadNibNamed:@"CloudIndexCell~iPad"
                                        owner:nil options:nil];
            for (id currentObject in topLevelObjects){
                if ([currentObject isKindOfClass:[UITableViewCell class]]) {
                    cell = (CloudIndexCell *) currentObject;
                    break;
                }
            }
        }
    }
    
    if (cell == nil) {
        cell = [[CloudIndexCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
        
    }
    
    NSDictionary *sectionDict = [cloudsArray objectAtIndex:[indexPath section]];
    NSArray *rows = [sectionDict objectForKey:cloudsIndexViewControllerRowsKey];
    NSDictionary *rowDict = [rows objectAtIndex:[indexPath row]];
    
    NSString *cloudName = [rowDict objectForKey:cloudsIndexViewControllerCloudNameKey];
    NSString *cloudIndexDesc = [rowDict objectForKey:cloudsIndexViewControllerCloudIndexDescriptionKey];
    
    cell.cloudName.text = cloudName;
    cell.cloudDescText.text = cloudIndexDesc;
    
    if ([indexPath section] == 0) {
        cell.cloudDescBackground.backgroundColor = UIColorFromRGB(0x03AC03);
        
    }
    if ([indexPath section] == 1) {
        cell.cloudDescBackground.backgroundColor = UIColorFromRGB(0x7C4DD6);
    }
    if ([indexPath section] == 2) {
        cell.cloudDescBackground.backgroundColor = UIColorFromRGB(0xD79A00);
        
    }
    if ([indexPath section] == 3) {
        cell.cloudDescBackground.backgroundColor = UIColorFromRGB(0x666666); //[UIColor darkGrayColor];
    }
    
    cell.cloudImage.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@_Index.png", cloudName]];
    
    return cell;
}


内容视图现在从公开指示器处收缩。图像视图和其他视图位于内容视图中。所以他们的右边缘向左移动了

一个选择是:不要使用披露指标!只需将您自己的类似指示器的符号放在内容视图的右中心即可。然后内容视图将填充单元格


或者,使用云和其他可视材质作为单元格背景。您可以组合由包含图像、描述文本和描述背景的普通UIView组成的背景,并将
backgroundImage
设置为该视图。

本发明附件没有问题。它是透明的。这是因为牢房的布局已经改变了。图像的边缘已移动。使用视图调试器,您将看到!显示您构建单元格的代码,我们可以尝试提供帮助。请查看对原始帖子的编辑。谢谢。所以看起来图像视图至少固定在
contentView
的边界上。但是当有披露附件时,
contentView
确实会收缩。所以发生的事情是意料之中的。我建议您将图像视图设置为单元格的
背景视图
。这样,它将覆盖整个背景,这就是你想要的。这在一定程度上有帮助。我实现了cell.backgroundView=cell.cloudImage;就在返回单元之前;在文章中包含的代码的底部。这扩展了整个细胞的图像显示,同时仍然显示披露图标,这是伟大的。但细胞是文本;图像下方的cell.cloudDescBackground赋值(其标签也被扩展,正如xib中的图像完全跨单元格一样)仍然被截断到与之前相同的程度。如果希望它们在整个单元格中延伸,它们也需要位于
backgroundImage
中。您需要组合一个由包含图像、描述文本和描述背景的普通UIView组成的背景图像,并将
backgroundImage
设置为该视图。