我正在使用从 UIScrollView 继承的自定义视图。我遇到的问题是添加一个 UILabel,它应该显示在“顶部”,在其他视图的前面。它有效,但不幸的是它也掩盖了滚动指示器。
如您所见,滚动指示器被遮挡。我不想禁用滚动指示器。
我将视图直接添加到 UIScrollView:
UILabel *subsection = [[UILabel alloc] initWithFrame:CGRectMake(0, y * h,
[self totalContentWidth], [tableViewDelegate rowHeight])];
[subsection setText:subsectionName];
[subsection setTextAlignment:NSTextAlignmentCenter];
[subSectionRows setValue:subsection forKey:key];
[self addSubview:subsection];
然后把他们带到前面,
- (void) bringSubsectionsToFront {
for (UIView* row in [self.subSectionRows allValues]) {
[self bringSubviewToFront:row];
}
}
这种行为让我很困惑。如果我查看UIView.layer.zPosition
所有 UIScrollView 的子视图,它们都是一样的。
如果我调整bringSubsectionsToFront
方法以将标签移动到包含网格线的视图前面,则行为是相同的。
查看一些行为有效的内部视图类,看起来好像它们被添加到滚动视图中:[self insertSubview:cell atIndex:0];
我在这里想念什么?
解决方案: verec 表示,如果我真的想的话,我可以找到这些酒吧。所以我在一个合适的点迭代了子视图列表,果然,它们就在那里。对象的顺序如下:
CustomCell
...
UIImageView
UIImageView
CustomBorderView
UILabel
UILabel
假设这是 z 顺序,难怪我的标签总是在最前面。
解决方案变得简单;在 CustomCells 之后添加 UILabel。此解决方案仅有效,因为自定义表在索引 0 处添加了 CustomCells,我相信这会使滚动指示器出现在 CustomCells 之后。如果这个假设成立,我可以相对于 CustomCells 对其他视图重新排序,从而实现我想要的分层效果。