2013-03-22 52 views
5

我正在使用從UIScrollView繼承的自定義視圖。我遇到的問題是添加一個應顯示在其他視圖前面的「頂部」的UILabel。它的工作原理,但不幸的是,它也覆蓋了滾動指標。UIScrollView - 將視圖移動到前面,但在滾動指示器之下

enter image description here

正如你所看到的,滾動指示被遮蔽。我不想禁用滾動指標。

我直接添加欣賞到的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]; 
    } 
} 

此行爲混淆了我。如果我查看所有UIScrollView子視圖的UIView.layer.zPosition,它們都是一樣的。

如果我將bringSubsectionsToFront方法改爲移動包含網格線的視圖前面的標籤,則其行爲是相同的。

縱觀一些內部視圖類,其行爲作品,它看起來好像他們正在加入到與滾動視圖:[self insertSubview:cell atIndex:0];

缺少什麼我在這裏?

解決方案: verec表示,如果我真的想找到酒吧,我可以找到酒吧。所以我在適當的位置迭代了子視圖列表,果然,他們在那裏。對象順序如下:

CustomCell 
... 
UIImageView 
UIImageView 
CustomBorderView 
UILabel 
UILabel 

假設這是z排序,難怪我的標籤總是在最上面。

解決方案變得簡單;在CustomCells之後添加UILabel。此解決方案僅適用於自定義表在索引0處添加CustomCells,我相信這會使滾動指示符出現在CustomCells之後。如果這個假設成立,我可以重新排序其他視圖相對於CustomCells,實現我想要的分層效果。

回答

4

最簡單的是使用和中間的UIView,稱之爲'contentView',其子代是你想要帶來的視圖。

如果該contentView是scrollView內部的內容,它將停留在滾動指示器的「下方」,無論您將哪個contentView孩子帶到前面。因爲你永遠不知道蘋果是否會決定根據何時刪除/重塑/重新定位它們,這是一種兼容性風險。一些新的(奉承...)設計範例...

相關問題