如何自定义UISegmentedControl字体颜色和UIToolbar渐变?

时间:2011-09-28 19:00:07

标签: objective-c uikit uitoolbar uisegmentedcontrol

似乎Apple UIToolbar以及您可以放置​​的一些控件(例如UISegmentedControl)允许非常有限的自定义。例如,我们希望我们的工具栏看起来像这样的模拟:

toolbar screenshot

但是,UIToolbar只有一个tintColor和3个可以应用的内置barStyle值,因此我们无法获得我们追求的渐变。有没有办法像许多其他控件一样设置背景图像?

更糟糕的是,UISegmentedControl不允许您指定字体或字体颜色。它似乎用一个投影强制白色11pt Helvetica,而我们正在使用的光tintColor几乎无法读取白色。

我不想重写UISegmentedControl只是为了改变文字颜色。但是唯一的solution I've seen是非常hacky - 它深入研究了子视图的子视图并改变了那些属性 - 似乎只要Apple改变或不允许它就会停止工作。

Apple真的反对我们改变我们分段控件上的文字颜色,还是我在这里缺少一些东西?

更新:Apple最终添加了在iOS 5中自定义外观的功能。请参阅jfortmann's answer

1 个答案:

答案 0 :(得分:1)

您想使用setBackgroundImage:forState:barMetrics:方法(可能在您的外观代理上)来设置背景图像。可以使用setTitleTextAttributes:forState:修改文本。最后,您需要使用setDividerImage更改可能状态的分隔符:...

关于图像的外观,文档非常有用。