UIToolbar中的UISegmentedControl颜色

时间:2010-01-01 20:56:53

标签: iphone uisegmentedcontrol uitoolbar

我的问题围绕着UINavigationBar与UIToolbar上的UISegmentedController的区别。如果我将UISegmentedControl放入导航栏,如下所示:

navigationBar.barStyle = UIBarStyleBlackTranslucent;
一切都很好。 UISegmentedControl使用稍暗的黑色标识所选选项。但是,如果我将UISegmentedControl放到UIToolbar上,它就不会从工具栏中获取颜色或半透明度。如果我手动设置tintColor,则UISegmentedControl不再区分selected和unselected。

不可否认,在放入UIToolbar之前,必须将UISegmentedControl包装在UIBarButtonItem中。我想知道这是否是UISegmentedControl看起来不正确的原因(半透明的黑色背景上的蓝色)。

toolbar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:segmentedControl]; 
NSArray *toolbarItems = [[NSArray alloc] initWithObjects:item,nil];
toolbar.items = toolbarItems;

当然,由于我使用的是内部导航和控制器工具栏,但我的代码并不完整,但一般逻辑是相同的。我不确定如何使UIToolbar上的UISegmentedControl具有黑色半透明样式 - 在选定和未选定的段之间保持明显的区别。

1 个答案:

答案 0 :(得分:7)

似乎:segmentedController.tintColor = [UIColor darkGrayColor];解决了您的问题。

要删除“依赖项”,请继承UISegmentedControl并在构造函数中设置色调。

<强> CustomSegmentedControl.m

- (id)initWithItems:(NSArray*)items {
    if( self = [super initWithItems:items] ) {
         self.tintColor = [UIColor darkGrayColor];
    }
    return self;
}