2012-07-16 51 views
5

在我的application:didFinishLauchginWithOptions:中,我设置了我的控件的默认外观。UIBarButtonItem外观我需要一个例外

UIImage *transparentImage = [UIImage imageNamed:@"transparent.png"]; 

[[UIBarButtonItem appearance]setBackgroundImage:transparentImage 
             forState:UIControlStateNormal 
            barMetrics:UIBarMetricsDefault]; 

这对我的作品伟大的,因为它给正常UIBarButtonItems透明的平面外观。然而,当您按下“快速查看”并没有合适的外观时,我会从UIDocumentInteractionController中看到一个按钮I.

enter image description here

我相信这是唯一的barbuttonitem我有一个只是一个形象。有没有办法我可以修改这个按钮来给它一些对比,所以它看起来不那么难看?即使原始背景在我的naviagationbar背景上看起来也不错。

回答

0

我最终实现

documentInteractionControllerWillBeginPreview,documentInteractionControllerDidEndPreview

在willBegin我留住合适的按钮,并设置navigationItem的右键为零。我这样做是因为在didEnd视图已经显示,所以重置外观不会生效,直到其添加回来。

- (void)documentInteractionControllerWillBeginPreview:(UIDocumentInteractionController *)controller 
{ 
    [[UIBarButtonItem appearance] setBackgroundImage:nil forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:nil forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:nil forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 

    self.rightButton = self.navigationItem.rightBarButtonItem; 
    self.navigationItem.rightBarButtonItem = nil; 
} 

- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller 
{ 
    UIImage *transparentImage = [UIImage imageNamed:@"transparent.png"]; 
    [[UIBarButtonItem appearance] setBackgroundImage:transparentImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:transparentImage forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:transparentImage forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 

    self.navigationItem.rightBarButtonItem = self.rightButton; 
} 

它不完美,但它比它更好。如果任何人都能弄清楚如何处理呈现控制器的rightBarButtonItem,我会接受你的回答。