9

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

navigationBar.barStyle = UIBarStyleBlackTranslucent;

一切都很好。UISegmentedControl 用稍深的黑色标识选定的选项。但是,如果我将 UISegmentedControl 放到 UIToolbar 上,它不会从工具栏中获取颜色或半透明度。如果我手动设置 tintColor UISegmentedControl 不再区分选中和未选中。

诚然,在拖放到 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 具有黑色半透明样式 - 保持选定段和未选定段之间的明显区别。

4

1 回答 1

7

看起来像: segmentedController.tintColor = [UIColor darkGrayColor];解决你的问题。

要删除“依赖项”,请将 UISegmentedControl 子类化并在构造函数中设置色调。

CustomSegmentedControl.m

- (id)initWithItems:(NSArray*)items {
    if( self = [super initWithItems:items] ) {
         self.tintColor = [UIColor darkGrayColor];
    }
    return self;
}
于 2010-01-03T10:04:45.250 回答