Używam niestandardowego widoku, który dziedziczy z UIScrollView. Problem, który mam, to dodanie UILabel, które powinno być wyświetlane na górze, przed innymi widokami. Działa, ale niestety obejmuje również wskaźniki przewijania.UIScrollView - Przenoszenie widoku do przodu, ale poniżej wskaźników przewijania
Jak widać, wskaźnik przewijania jest zasłonięty. Nie chcę wyłączać wskaźników przewijania.
dodaję poglądy bezpośrednio do 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];
a potem przenosząc je do przodu, który
- (void) bringSubsectionsToFront {
for (UIView* row in [self.subSectionRows allValues]) {
[self bringSubviewToFront:row];
}
}
Takie zachowanie jest mylące dla mnie. Jeśli zerknę na UIView.layer.zPosition
wszystkich widoków UIScrollView, wszystkie są takie same.
Jeśli zmienię metodę bringSubsectionsToFront
, aby przesunąć etykiety przed widokiem zawierającym linie siatki, zachowanie jest takie samo.
Patrząc na niektórych wewnętrznych klas widoków, których zachowanie dzieła, to wygląda tak, jakby są one dodawane do widoku przewijania z: [self insertSubview:cell atIndex:0];
Co ja tu brakuje?
Rozwiązanie: verec zauważył, że udało mi się znaleźć bary, gdybym naprawdę chciał. Tak więc przeszedłem iterację nad listą podrzędnych w odpowiednim momencie i na pewno tam byli. Kolejność obiektów przedstawia się następująco:
CustomCell
...
UIImageView
UIImageView
CustomBorderView
UILabel
UILabel
Zakładając ten jest zamawianie oo, nic dziwnego, moi etykiety były zawsze na wierzchu.
Rozwiązanie staje się proste; dodaj UILabel po CustomCells. To rozwiązanie działa tylko dlatego, że niestandardowa tabela dodaje CustomCells do indeksu 0, co moim zdaniem powoduje pojawienie się wskaźników przewijania po CustomCells. Jeśli to założenie zostanie spełnione, mogę zmienić kolejność innych widoków względem CustomCells, osiągając żądany efekt warstwowania.