Ios UIScrollView-将视图向前移动,但在滚动指示器下方
我正在使用从UIScrollView继承的自定义视图。我遇到的问题是添加一个UILabel,它应该显示在“顶部”,在其他视图前面。它可以工作,但不幸的是它也掩盖了滚动指示器 如您所见,滚动指示器被遮挡。我不想禁用滚动指示器 我将视图直接添加到UIScrollView:Ios UIScrollView-将视图向前移动,但在滚动指示器下方,ios,objective-c,uiscrollview,Ios,Objective C,Uiscrollview,我正在使用从UIScrollView继承的自定义视图。我遇到的问题是添加一个UILabel,它应该显示在“顶部”,在其他视图前面。它可以工作,但不幸的是它也掩盖了滚动指示器 如您所见,滚动指示器被遮挡。我不想禁用滚动指示器 我将视图直接添加到UIScrollView: UILabel *subsection = [[UILabel alloc] initWithFrame:CGRectMake(0, y * h, [self totalContentWidth], [tableVie
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];
}
}
我对这种行为感到困惑。如果我看一下所有UIScrollView子视图的UIView.layer.zPosition
,它们都是相同的
如果我调整将subsectionstofront
方法改为将标签移动到包含网格线的视图前面,则行为是相同的
查看一些行为正常的内部视图类,它们似乎是通过以下方式添加到滚动视图中的:[self-insertSubview:cell-atIndex:0]代码>
我错过了什么
解决方案:
维雷克说,如果我真的愿意,我可以找到酒吧。所以我在一个合适的点上迭代了子视图列表,果然,它们就在那里。对象的顺序如下:
CustomCell
...
UIImageView
UIImageView
CustomBorderView
UILabel
UILabel
假设这是z排序,难怪我的标签总是在顶部
解决方案变得简单;在自定义单元格后添加UILabel。此解决方案之所以有效,是因为自定义表在索引0处添加了CustomCells,我相信这会使滚动指示器显示在CustomCells之后。如果这个假设成立,我可以相对于CustomCells对其他视图进行重新排序,从而达到我想要的分层效果。最简单的方法是使用中间UIView,称之为“contentView”,其子视图是您想要引入的视图
如果该contentView是scrollView中的内容,则它将停留在滚动指示器的“下方”,无论您将哪个contentView子对象带到前面
另一种选择是扫描scrollView以查找滚动指示器(你会找到它们!),但这是一种兼容性风险,因为你永远不知道苹果是否/何时会根据一些新的(更平坦的…)设计范式决定移除/重塑/重新定位它们