2013-01-02 15 views
6

Poniższy kod działa doskonale w porządku iOS 5, ale nie w systemie iOS 6 lub nowszym. Co chcę, aby dla arkusza kompozytora e-mail obraz paska nawigacyjnego będzie inny niż inne klasy UINavigationBar. Nie mogę zrozumieć, że wskaźnik debugowania odpowiada metodzie wyglądu, ale na urządzeniu pokazuje obraz paska nawigacyjnego jako "bgNavigationBar.png"; oczekiwane jest "bgNavigationBar_2.png".Obsługa UIAppearence dla IOS 6 - nieoczekiwane wyniki

proszę kierować do mnie .......

if ([[UINavigationBar class]respondsToSelector:@selector(appearance)]) { 
    UIImage *logoImage44 = [[UIImage imageNamed:@"bgNavigationBar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
    [[UINavigationBar appearance] setBackgroundImage:logoImage44 forBarMetrics:UIBarMetricsDefault]; 

    UIImage *ImagePlain = [[UIImage imageNamed:@"bgNavigationBar_2.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
    [[UINavigationBar appearanceWhenContainedIn:[MFMailComposeViewController class], nil] setBackgroundImage:ImagePlain forBarMetrics:UIBarMetricsDefault]; 
} 
+0

Błąd iOS 6. Otwórz radar - http://www.openradar.me/radar?id=2984402 – Daniel

Odpowiedz

7

To coś nie działa w iOS6.

[[UINavigationBar appearanceWhenContainedIn:[MFMessageComposeViewController class], nil] setBackgroundImage:[UIImage imageNamed:@"bgNavigationBar_2.png"] forBarMetrics:UIBarMetricsDefault]; 

Wystarczy ustawić tę właściwość w klasie obsługi poczty.

if (![[UINavigationBar class]respondsToSelector:@selector(appearance)]) 
{ 
    UIView *backgroundView = [[[UIView alloc] initWithFrame:CGRectMake(0,0,320,44)]autorelease]; 

    [backgroundView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"bgNavigationBar_2.png"]]]; 
    controller.topViewController.navigationItem.titleView = backgroundView ; 
} 
else 
{ 
    UIImage *gradientImagePlain = [[UIImage imageNamed:@"bgNavigationBar_2.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
    [[UINavigationBar appearance] setBackgroundImage:gradientImagePlain forBarMetrics:UIBarMetricsDefault]; 
} 

a następnie zresetować inny obraz dla wszystkich obrazów tła innych kontrolerów nawigacyjnych.

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result 
{ 
    [self.parentController dismissModalViewControllerAnimated:YES]; 
    UIImage *gradientImagePlain = [[UIImage imageNamed:@"bgNavigationBar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
    [[UINavigationBar appearance] setBackgroundImage:gradientImagePlain forBarMetrics:UIBarMetricsDefault]; 
} 

Mam nadzieję, że to zadziała.

Powiązane problemy