5

在我application:didFinishLauchginWithOptions:的设置中,我为我的控件设置了默认外观。

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

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

这对我很有用,因为它为普通 UIBarButtonItems 提供了透明的平面外观。但是,当您按下“快速查看”时,会出现一个按钮 I,但UIDocumentInteractionController外观不正确。

在此处输入图像描述

我相信这是我拥有的唯一一个只是图像的 barbuttonitem。有没有办法我可以修改这个按钮来给它一些对比,让它看起来不那么难看?即使是原始背景在我的导航栏背景下看起来也不错。

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 回答