2013-01-02 33 views
6

Mã dưới đây hoạt động hoàn hảo tốt iOS 5, nhưng không chạy trên iOS 6 trở lên. Điều tôi muốn cho trang soạn thảo Email là điều hướngBar image sẽ khác với các lớp UINavigationBar khác. Tôi không thể hiểu rằng con trỏ gỡ lỗi đang phản hồi phương thức xuất hiện nhưng trên thiết bị, nó hiển thị navigationBar image là "bgNavigationBar.png"; dự kiến ​​là "bgNavigationBar_2.png".Hỗ trợ UIAppearence cho iOS 6 - kết quả bất ngờ

hãy hướng dẫn cho tôi .......

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

Lỗi iOS 6. Mở Radar - http://www.openradar.me/radar?id=2984402 – Daniel

Trả lời

7

điều này không làm việc trong iOS6.

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

Chỉ cần bạn đặt thuộc tính này trong Lớp xử lý thư của bạn.

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

và sau đó đặt lại hình ảnh khác cho tất cả hình nền của trình điều khiển điều hướng khác.

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

Hy vọng điều này sẽ phù hợp với bạn.

Các vấn đề liên quan