2012-10-02 13 views
5

Witam używam tego kodu, aby ustawić obraz cień mojego paska nawigacyjnego:Appearance proxy - setShadowImage alternatywa dla iOS 5?

if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)]) { 

    [[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"nav-bar-shadow"]]; 

    [[UIToolbar appearance] setShadowImage:[UIImage imageNamed:@"tool-bar-shadow"] forToolbarPosition:UIToolbarPositionAny]; 
} 

Jednak wydaje się to tylko iOS 6 (choć nie mogę powiedzieć na pewno - nie mogę znaleźć dokumentację to gdziekolwiek). To nie działa na iOS 5.

Czy istnieje jakaś alternatywa - globalnie ustawienie obrazu pod pasku nawigacyjnym? Pomyślałem o niestandardowym UIView, ale jak to zrobić na całym świecie?

Odpowiedz

1

Można:

  1. Dodaj podrzędny zawierający obraz cienia do viewController.view
  2. Dodaj podrzędny zawierający obraz cienia do [[UIApplication sharedApplication] keyWindow], który doda obraz globalnie na okna. Jednak może to być trochę brzydkie, np. podczas wyświetlania kontrolera widoku modalnego.
  3. Można podklasy UINavigationBar, zrobić kilka Magic z subviews tam i następnie zainicjować navigationController poprzez [[UINavigationController alloc] initWithNavigationBarClass:[YourNavBarSubclass class] toolbarClass:[UIToolbar class]]
0

ShadowImage jest iOS6 tylko:

@property(nonatomic,retain) UIImage *shadowImage NS_AVAILABLE_IOS(6_0) UI_APPEARANCE_SELECTOR;