2013-01-02 11 views
6

कोड नीचे बिल्कुल ठीक iOS 5 काम कर रहा है, लेकिन IOS 6 पर या ऊपर नहीं। मैं क्या चाहता हूँ कि ईमेल संगीतकार शीट के लिए navigationBar छवि तो अन्य UINavigationBar कक्षाएं अलग होगा। मैं नहीं समझ सकता है कि डिबग सूचक उपस्थिति विधि जवाब है, लेकिन डिवाइस पर यह "bgNavigationBar.png" navigationBar छवि दिखाता; उम्मीद है "bgNavigationBar_2.png"।UIAppearence समर्थन - अप्रत्याशित परिणाम

कृपया मुझे मार्गदर्शन .......

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

IOS 6 बग। ओपन रडार - http://www.openradar.me/radar?id=2984402 – Daniel

उत्तर

7

इस बात iOS6 में काम नहीं कर रहा है।

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

बस आपको इस संपत्ति को अपने मेल हैंडलर क्लास में सेट करने की आवश्यकता है।

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]; 
} 

और फिर अन्य सभी नेविगेशन नियंत्रक की पृष्ठभूमि छवि के लिए एक और छवि रीसेट करें।

- (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]; 
} 

आशा है कि यह आपके लिए काम करेगा।

संबंधित मुद्दे