gpt4 book ai didi

iphone - 无法缩进 UITableViewCell 子类

转载 作者:行者123 更新时间:2023-12-03 18:34:06 24 4
gpt4 key购买 nike

我对 UITableViewCell 进行了子类化,以创建一个带有按钮和 2 个标签的自定义单元格。使用 Dave Mark 的 Beginning iPhone Development 中概述的模式从 xib 加载单元格定义。这是基本代码:

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MarketItemCustomCell" owner:self options:nil];

for (id oneObject in nib)
{
if ([oneObject isKindOfClass:[MarketItemCustomCell class]])
{
cell = (MarketItemCustomCell *)oneObject;
break;
}
}

标签和按钮按预期显示,但不考虑缩进级别。我已经实现了 indentationLevelForRowAtIndexPath 如下所示,但单元格仍然一直向左对齐。

- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath
{
<snip/>
return 5;
}

请注意,当我不使用自定义单元格时,缩进级别可以正常工作。

有什么提示吗?

最佳答案

iOS 8 更新:以下代码由于某种原因不再有效

针对 iOS 8 的替代建议:

考虑创建一个自动布局约束来表示缩进左边距

在运行时,修改此约束以更改缩进级别

如果您有自定义 UITableViewCell 子类,则该子类可以将 IBOutlet 映射到约束。 (不幸的是Apple没有提供findConstraintByTag/Id函数)

具有讽刺意味的是,可以修改 NSLayoutConstraint 的“常量”属性来更改缩进级别。

对于 iOS 7,此方法有效(但不应再推荐)

根据 vodkhang 的建议,我在 UITableViewCell 子类中实现了以下解决方案。不确定这是否是最好的解决方案,但它似乎工作正常。

- (void)layoutSubviews
{
[super layoutSubviews];

float indentPoints = self.indentationLevel * self.indentationWidth;

self.contentView.frame = CGRectMake(indentPoints,
self.contentView.frame.origin.y,
self.contentView.frame.size.width - indentPoints,
self.contentView.frame.size.height);
}

关于iphone - 无法缩进 UITableViewCell 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3714006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com