Tom*_*ear 5 iphone objective-c uinavigationbar uikit uiappearance
在我的application:didFinishLauchginWithOptions:设置我的控件的默认外观.
UIImage *transparentImage = [UIImage imageNamed:@"transparent.png"];
[[UIBarButtonItem appearance]setBackgroundImage:transparentImage
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)
这对我很有用,因为它为普通的UIBarButtonItem提供了透明的平面外观.然而,UIDocumentInteractionController当你按下没有正确外观的"快速查看"时,会出现一个按钮.

我相信这是我所拥有的唯一一个只是一个图像的barbuttonitem.有没有办法我可以修改这个按钮给它一些对比,所以它看起来不那么难看?甚至原始背景在我的naviagationbar背景下看起来还不错.
我最终实现了
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;
}
Run Code Online (Sandbox Code Playgroud)
它并不完美,但比以前好多了。如果有人能弄清楚如何处理呈现控制器,rightBarButtonItem我会接受你的答案。