UIBarButtonItem 如何知道 UIToolBar 使用哪个 UIBarStyle?

Posted

技术标签:

【中文标题】UIBarButtonItem 如何知道 UIToolBar 使用哪个 UIBarStyle?【英文标题】:How does UIBarButtonItem know which UIBarStyle the UIToolBar uses? 【发布时间】:2012-04-26 03:41:39 【问题描述】:

在 Xcode ui builder 中,当设置 UIToolBar 的 UIBarStyle(例如 BlackTranslucent)时,UIToolBarItem 会匹配背景图像。 UIToolBarItem 如何知道它应该使用哪种样式?

我正在尝试将自定义彩色图像放在常规背景图块的顶部(以编程方式将给定图像合并到背景图像顶部)。我希望代码足够通用,以便能够处理所有 UIBarStyles。这意味着我想知道 UIToolBarItem 何时决定使用哪个背景并截取它,以便我可以即时合成按钮图像。

【问题讨论】:

【参考方案1】:

由于无法看到苹果的 UIBarbuttonItem 实现,我假设他们确实,实际上,知道他们的 UIToolbar 的样式是什么。如果您仔细观察,它们具有与工具栏相同的 alpha 和相同的叠加层(表示子视图)。因此,作为子视图添加到此突出显示层下方的任何图像都应符合 UIToolbar 的样式。如果您想使用多个图像(每个 barStyle 一个),您可以使用self.myToolbar.barStyle 确定它并在 -viewDidLoad 时间进行适当的计划。至于真正的图像绘制,继承 UIToolbar 并覆盖 -drawRect: 并使用 [UIImage drawInRect:rect];

【讨论】:

我不确定您所说的叠加层是什么。你的意思是玻璃般的外观?我不确定当您添加为子视图时,它会如何自动适应 UIBarStyle?据我所知,有两个图像,未按下时和按下时。 子视图自动采用其父视图的基本外观方面(alpha,它们上方的任何 z 顺序层)。整个两个图像意味着你想要一个 UIButton。

以上是关于UIBarButtonItem 如何知道 UIToolBar 使用哪个 UIBarStyle?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 iOS 在 UIBarButtonItem 图像上设置渐变?

如何在 UINavigationController 中为所有视图控制器添加 UiBarButtonItem

更改 UIBarButtonItem 颜色

从左侧滑动 UIBarButtonItem

更改 UIBarButtonItem 文本字体大小和颜色

在没有 UINavigationController 的情况下将 UIBarButtonItem 添加到 UINavigation 栏