UITableViewCell 缩进时髦
UITableViewCell indentation funkiness
目前没有任何问题能够完全了解我的应用程序中发生的事情。
我的 UITableViewCell 子类中的缩进级别偶尔为 1 或 0。单元格中的文本将缩进或紧靠左边距(看似随机),因为单元格是入队和出队的。我在 cellForRow:
中设置级别,我在子类的 configure:
方法中设置级别,我实现 indentationLevelForRow:
。 None 其中效果显着。
我可以重现的一件事是当我触摸一个单元格时缩进折叠(级别 <- 0)。再次触摸不会切换它。我在这里写 'touch' 是因为即使 willSelect:
returns nil
也会发生这种情况;在这些触摸后滚动偶尔会将级别重置为 1。
可能存在的问题是内容视图包含第 3 方 UILabel 子类的单个实例 TTTAttributedLabel
。我不太了解这段代码,但有方法 setText:afterInheritingLabelAttributesAndConfiguringWithBlock:
实现了块 completion/callback 并且可能会影响事情。但事实并非如此,因为取消回调并没有带来明显的改善。
文档并没有明确说明,但我不认为 tableView:indentationLevelForRowAtIndexPath:
适用于自定义子视图,例如您的 TTTAttributedLabel
。也就是说,我假设它只会影响单元格的标准子视图(textLabel
、imageView
等)。
如果您需要自定义子视图的自定义缩进级别,我希望您需要自己实现。您当然可以继续实施该委托方法以集中逻辑,但您可能需要在布置单元格时使用该方法的结果。
我最终在 Storyboard 中重新实现了整个视图,并且在使用 AutoLayout 进行了大量试验和错误之后,设法让整个事情顺利进行。
目前没有任何问题能够完全了解我的应用程序中发生的事情。
我的 UITableViewCell 子类中的缩进级别偶尔为 1 或 0。单元格中的文本将缩进或紧靠左边距(看似随机),因为单元格是入队和出队的。我在 cellForRow:
中设置级别,我在子类的 configure:
方法中设置级别,我实现 indentationLevelForRow:
。 None 其中效果显着。
我可以重现的一件事是当我触摸一个单元格时缩进折叠(级别 <- 0)。再次触摸不会切换它。我在这里写 'touch' 是因为即使 willSelect:
returns nil
也会发生这种情况;在这些触摸后滚动偶尔会将级别重置为 1。
可能存在的问题是内容视图包含第 3 方 UILabel 子类的单个实例 TTTAttributedLabel
。我不太了解这段代码,但有方法 setText:afterInheritingLabelAttributesAndConfiguringWithBlock:
实现了块 completion/callback 并且可能会影响事情。但事实并非如此,因为取消回调并没有带来明显的改善。
文档并没有明确说明,但我不认为 tableView:indentationLevelForRowAtIndexPath:
适用于自定义子视图,例如您的 TTTAttributedLabel
。也就是说,我假设它只会影响单元格的标准子视图(textLabel
、imageView
等)。
如果您需要自定义子视图的自定义缩进级别,我希望您需要自己实现。您当然可以继续实施该委托方法以集中逻辑,但您可能需要在布置单元格时使用该方法的结果。
我最终在 Storyboard 中重新实现了整个视图,并且在使用 AutoLayout 进行了大量试验和错误之后,设法让整个事情顺利进行。