Sie können UINavigationController ableiten und haben dann eine Schattenebene für jede Navigation oder wenn Ihre Leiste immer sichtbar ist, fügen Sie einfach den Schatten zu UIWindow hinzu (nur eines für die gesamte Anwendung) und dann jedes Mal, wenn Sie ein hinzufügen Unteransicht.
CGColorRef darkColor = [[UIColor blackColor] colorWithAlphaComponent:.5f].CGColor;
CGColorRef lightColor = [UIColor clearColor].CGColor;
CAGradientLayer *newShadow = [[[CAGradientLayer alloc] init] autorelease];
newShadow.frame = CGRectMake(0, self.navigationBar.frame.size.height, self.navigationBar.frame.size.width, 10);
newShadow.colors = [NSArray arrayWithObjects:(id)darkColor, (id)lightColor, nil];
[self.navigationBar.layer addSublayer:newShadow];
Wenn Sie die letzteren Fall dann überschreiben die didAddSubview wählen die Schicht die vorderste zu machen:
CALayer *superlayer = self.shadowLayer.superlayer;
[self.shadowLayer removeFromSuperlayer];
[superlayer addSublayer:self.shadowLayer];
Hoffe, es hilft.
Versuchen, dies in einen View Controller zu implementieren und nichts zu sehen ... – fuzz
sicher, eine Navigationssteuerungsinstanz zu haben? Es scheint, dass Ihre navigationBar auf Null zeigt. – marcio