5

application:didFinishLauchginWithOptions:の場合、コントロールのデフォルトの外観を設定しました。

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

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

これは、通常のUIBarButtonItemsに透明なフラットな外観を与えるので、私にとってはうまく機能します。ただし、UIDocumentInteractionController「クイックルック」を押すと表示されないボタンIがあります。

ここに画像の説明を入力してください

私が持っている唯一のbarbuttonitemは、単なる画像だと思います。このボタンを変更してコントラストを付け、醜く見えないようにする方法はありますか?元の背景でさえ、私のnaviagationbarの背景に対しては問題ないように見えます。

4

1 に答える 1

0

私は結局実装しました

documentInteractionControllerWillBeginPreview、documentInteractionControllerDidEndPreview

willBegin では、右ボタンを保持し、navigationItem の右ボタンを nil に設定します。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、代わりにあなたの答えを受け入れます。

于 2012-07-19T21:49:25.760 に答える