Ios UITableViewCell中的UIImageView使用不同的约束刷新

Ios UITableViewCell中的UIImageView使用不同的约束刷新,ios,uitableview,uiimageview,autolayout,Ios,Uitableview,Uiimageview,Autolayout,这个问题已经困扰了我一段时间了,我一辈子都不明白为什么会发生 我有一个带有自定义单元格的tableView。单元格左上角有一个imageView,然后是从plist中查找的各种信息。我使用的是自动布局,可以设置所有元素的位置。我已刷新了所有约束,因此它们都已更新。见下文: 当我向下滚动视图,单元格脱离屏幕时,就会出现问题。我正在给它们脱毛,这样每次它们都会焕然一新 BSettingsCell * cell = [tableView_ dequeueReusableCellWithIdentif

这个问题已经困扰了我一段时间了,我一辈子都不明白为什么会发生

我有一个带有自定义单元格的tableView。单元格左上角有一个imageView,然后是从plist中查找的各种信息。我使用的是自动布局,可以设置所有元素的位置。我已刷新了所有约束,因此它们都已更新。见下文:

当我向下滚动视图,单元格脱离屏幕时,就会出现问题。我正在给它们脱毛,这样每次它们都会焕然一新

BSettingsCell * cell = [tableView_ dequeueReusableCellWithIdentifier:bSettingsCellIdentifier];
当它们刷新时,虽然它们所绑定的约束现在不起作用。imageview为60x60像素,图像为120x120像素,并命名为fruitMainImage@2x.png将视网膜屏幕考虑在内

我在图片周围加了一个红色边框,以便更容易看到正在发生的事情。正如您所见,图像在刷新后由于某种原因向下移动

我试着切换到框架布局,将其固定到位,但这不起作用

我发现stackoverflow问题似乎提出了同样的问题,但它只是作为一个问题提出,而不是帮助解决问题

任何帮助都将不胜感激,因为我不想用keeplayout重写我所有的代码,如果有一个简单的方法来修复它的话

编辑:

以下是我的CellForRowatinex方法:

- (UITableViewCell *)tableView:(UITableView *)tableView_ cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    BSettingsCell * cell = [tableView_ dequeueReusableCellWithIdentifier:bSettingsCellIdentifier];

    NSDictionary * dict = [_settingsData objectForKey:_settingsPacks[indexPath.row]];

    cell.nameLabel.text = [dict objectForKey:bSettingsName];
    cell.byLabel.text = [dict objectForKey:bArtist];
    cell.stickerImageView.image = [UIImage imageNamed:[dict objectForKey:bImage]];

    // To make it obvious that the view is changing position
    cell.stickerImageView.layer.borderColor = [UIColor redColor].CGColor;
    cell.stickerImageView.layer.borderWidth = 2;

    cell.descriptionView.text = [dict objectForKey:bDescription];

    [cell.linkButton setTitle: [dict objectForKey:bLink] forState: UIControlStateNormal];
    cell.linkButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    return cell;
}
以及XIB文件中的自动布局约束快照:(注意,尽管屏幕快照中未包含名称和按标签,但名称和按标签与约束保持一致)

您尝试过使用

BSettingsCell * cell = [tableView_ dequeueReusableCellWithIdentifier:bSettingsCellIdentifier forIndexPath: indexPath];

相反?

虽然这个解决方案很普通,但它确实帮助了我,所以我将在这里发布它

基本上,解决办法是删除我所做的事情,并将其添加到每个步骤中。虽然最后它看起来完全一样,但它起了作用。我认为有时候会有一些bug潜入Xcode并导致问题。通常,只需重新设置工作就可以解决这些问题

当试图解决这个问题时,我假设错误在我的代码中的某个地方,我可能花了太长时间试图找到错误。最后,花几分钟重做a)通常可以让您看到错误,因为您可以看到错误的步骤b)它可以重置由Xcode引起的任何错误


希望这能帮助以后遇到类似问题的人

图像视图顶部空间和指向其superview的前导空间是什么?那么,你是说图像视图的属性名称不是imageView(这是你提供的链接中提到的问题)?是的,指向superview的顶部空间是8,指向superview的前导空间是6。这两个和宽度和高度等于60的是四个constraints@property(非原子,弱)iBuiImageView*贴纸ImageView;我在你的帖子中没有看到任何可能导致此问题的内容。也许把你的整个手机贴到Rowatindexpath方法上。这似乎没什么区别