我正在使用-insertRowsAtIndexPaths:withRowAnimation将一些数字插入到表中,我希望从左侧缩进行以将它们与其余单元格区分开来。 UITableViewCell的indentationLevel属性看起来就像我需要的那样,但似乎没有做任何事情。这是我用来设置缩进级别的代码(点语法没有区别):
[cell setIndentationWidth:10];
[cell setIndentationLevel:1];
缩进级别是我想要的,还是应该在其他地方寻找?
答案 0 :(得分:14)
indentationLevel和indentationWidth会影响标准项textLabel,detailTextLabel和imageView的定位。它们不会影响contentView框架的来源。
如果您没有使用textLabel等(可能是因为定位iPhone OS 2),您需要手动处理缩进,如上一个答案所示。
答案 1 :(得分:3)
如果您不使用自定义单元格,这似乎是iOS 7中的错误。
在indentationLevel
内设置indentationWidth
或tableView:cellForRowAtIndexPath:
对单元格的布局没有影响。
例如,请考虑以下代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
BOOL isIndented = indexPath.row % 2;
cell.textLabel.text = isIndented ? @"Indented" : @"Not indented";
cell.indentationLevel = isIndented;
}
我没有足够的声誉来发布截图,但结果在iOS 6和iOS 7之间有所不同。这是使用Xcode 5和iOS 7 SDK。
答案 2 :(得分:1)
你可能会在你的细胞中过度实施它。 在
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (cell == nil)
{
cell = (UITableViewCell*)[[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"cellType01"] autorelease];
[cell setIndentationLevel:indexPath.row];
[cell setIndentationWidth:10];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
// Tag the view
[[[cell subviews] objectAtIndex:0] setTag:111];
UILabel* labelView = [[UILabel alloc] initWithFrame: CGRectMake(cell.indentationLevel*cell.indentationWidth, 0, 300, 20)];
}
}
答案 3 :(得分:1)
我的应用程序遇到了类似的问题。我有UITableView
没有使用自定义单元格。我使用的是基本风格的UITableViewCell
。在我的- (UITableViewCell *)tableView: cellForRowAtIndexPath:
委托方法中,我设置了单元格indentationWidth
和indentationLevel
。他们什么也没做。我甚至尝试修改- (NSInteger)tableView: indentationLevelForRowAtIndexPath:
委托方法。什么都没有。
最终工作是什么才能进入故事板并修改表视图单元本身的属性。一旦我在那里设置了缩进宽度,我开始得到适当的缩进。 indentationLevel
属性开始起作用。即使- (NSInteger)tableView: indentationLevelForRowAtIndexPath:
也很有用。
基本上,看起来indentationWidth
属性被忽略,而有利于故事板中的“缩进宽度”。
这是针对iOS 7的Xcode 5.0.2。
答案 4 :(得分:0)
我读过的所有内容都表明你应该如何做到这一点。确保您之后没有在代码中创建具有相同指针的新单元格(在设置缩进之后,但在绘制之前)。您是否尝试将缩进设置为更大的屏幕(例如,100px而非10)?
答案 5 :(得分:0)
我知道这个问题已有4年了,但如果您已经使用UITableViewCell的自定义子类和,您已经将视图添加为子视图contentView
的{{1}}确保您未在您的单元格中覆盖layoutSubviews
。如果您是,则需要在layoutSubviews
中手动调整contentView的边界/中心或框架。