使用 autoLayout 在 UITableviewcell 上移动 UILabel 和 UIImageVIew

move UILabel and UIImageVIew on UITableviewcell with autoLayout

我有一个文件夹的表格视图,当用户点击一个文件夹时,它会显示子文件夹,名称移动 20 像素以获得 "child graphical effect"。现在,切换到 Autolayout,我无法使用以下代码以编程方式移动 UIView 的元素:

- (void) configureView {

    if (self.cellMode != NVCellModeSelect) {
        [self setBackgroundColor:[NVGlobals homeCellBackgroundColor]];
        //Indenting label
        CGRect r = self.titleLabel.frame;
        r.origin.x = kLabelsInitialX + self.item.level*10;
        self.titleLabel.frame = r;

        //Indenting folder
        r = self.thumbnail.frame;
        r.origin.x = kFolderInitialX + self.item.level*10;
        self.thumbnail.frame = r;

        //Indent triangle
        r = self.triangleIcon.frame;
        r.origin.x = kTriangleInitialX + self.item.level*10;
        self.triangleIcon.frame = r;
    }
} 

但是现在好像不行了。如何使用 autoLayot 在 UITableViewCell 中以编程方式移动元素?

有两种方法可以做到这一点:

  1. 您需要保留对每个子视图的前导约束的引用,并在您的单元格处于缩进状态时调整它们的 constant 值。如果单元格被重复使用或变得未缩进,请记住将它们设置回默认值。

  2. 使用 tableView:indentationLevelForRowAtIndexPath: 为您完成大部分繁重的工作。