我的问题围绕着UINavigationBar上的UISegmentedController与UIToolbar的区别。如果我将一个UISegmentedControl放入导航栏,如下所示:
navigationBar.barStyle = UIBarStyleBlackTranslucent;
平安无事。UISegmentedControl用稍暗的黑色标识所选的选项。但是,如果我将UISegmentedControl放到UIToolbar上,它不会从工具栏中拾取颜色或半透明效果。如果我手动设置tintColor,UISegmentedControl将不再区分选中和未选中。
诚然,必须先将UISegmentedControl包装在UIBarButtonItem中,然后才能放到UIToolbar上。我想知道这是不是UISegmentedControl看起来不正确(半透明黑色背景上的蓝色)的部分原因。
toolbar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
NSArray *toolbarItems = [[NSArray alloc] initWithObjects:item,nil];
toolbar.items = toolbarItems;
诚然,我的代码并不完全像写的那样,因为我使用的是内部导航和控制器工具栏,但一般逻辑是相同的。我不确定如何使UIToolbar上的UISegmentedControl具有黑色的半透明样式--保持选中和未选中的片段之间的明显区别。
发布于 2010-01-03 10:04:45
看起来:segmentedController.tintColor = [UIColor darkGrayColor];
解决了你的问题。
要移除“依赖项”,可以子类化UISegmentedControl并在构造函数中设置色调。
CustomSegmentedControl.m
- (id)initWithItems:(NSArray*)items {
if( self = [super initWithItems:items] ) {
self.tintColor = [UIColor darkGrayColor];
}
return self;
}
https://stackoverflow.com/questions/1989624
复制