使用 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
中以编程方式移动元素?
有两种方法可以做到这一点:
您需要保留对每个子视图的前导约束的引用,并在您的单元格处于缩进状态时调整它们的 constant
值。如果单元格被重复使用或变得未缩进,请记住将它们设置回默认值。
使用 tableView:indentationLevelForRowAtIndexPath:
为您完成大部分繁重的工作。
我有一个文件夹的表格视图,当用户点击一个文件夹时,它会显示子文件夹,名称移动 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
中以编程方式移动元素?
有两种方法可以做到这一点:
您需要保留对每个子视图的前导约束的引用,并在您的单元格处于缩进状态时调整它们的
constant
值。如果单元格被重复使用或变得未缩进,请记住将它们设置回默认值。使用
tableView:indentationLevelForRowAtIndexPath:
为您完成大部分繁重的工作。