2012-07-16 83 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,我會接受你的回答。