UIBarButtonItem 外观我需要一个例外
Posted
技术标签:
【中文标题】UIBarButtonItem 外观我需要一个例外【英文标题】:UIBarButtonItem appearance I need an exception 【发布时间】:2012-07-16 17:25:14 【问题描述】:在我的application:didFinishLauchginWithOptions:
中,我为我的控件设置了默认外观。
UIImage *transparentImage = [UIImage imageNamed:@"transparent.png"];
[[UIBarButtonItem appearance]setBackgroundImage:transparentImage
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
这对我来说非常有用,因为它为普通 UIBarButtonItems 提供了透明的平面外观。但是,当您按下“快速查看”时,UIDocumentInteractionController
会显示一个按钮 I,但外观不正确。
我相信这是我拥有的唯一一个只是图像的 barbuttonitem。有没有办法我可以修改这个按钮来给它一些对比,让它看起来不那么难看?即使是原始背景在我的导航栏背景下看起来也不错。
【问题讨论】:
【参考方案1】:我最终实现了
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
,我会接受你的回答。
【讨论】:
以上是关于UIBarButtonItem 外观我需要一个例外的主要内容,如果未能解决你的问题,请参考以下文章
UIBarButtonItem 外观 setTitleTextAttributes 不影响 UIControlStateDisabled 状态
通过外观为 UIBarButtonItem 设置背景图像不适用于其他 UIControlStates
使用多个导航栏视图自定义 UIBarButtonItem 外观