2012-07-16 10 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

私は右のボタンを保持し、nilにnavigationItemの右ボタンを設定willBeginで

documentInteractionControllerWillBeginPreview、documentInteractionControllerDidEndPreview

を実装することになりました。私はそうしているので、ビューが既に表示されているので、外観をリセットすることはその追加まで有効になりません。

- (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の処理方法を誰かが分かっていれば、あなたの答えを代わりに受け入れます。

関連する問題