我跟着以下教程改变分段控制的颜色: http://goddess-gate.com/dc2/index.php/post/454如何更改viewDidLoad上选定片段索引的色调? (在基于教程)
然而,我在努力理解代码和加载与所选段的图。换句话说,我已经设法将我的分段控件的颜色更改为黑色,但只有当我选择一个段而不是加载视图时才会发生这种情况。当我加载视图时,它只显示为灰色。另外,如果我想重置为原始灰色或改变分段控制的颜色,将会出现,我该如何消除黑色并返回灰色且未选中的所有内容?
有人能指出我究竟是什么,为什么需要添加到viewDidLoad或viewWillAppear方法?
这里也是代码:
NSInteger static compareViewsByOrigin(id sp1, id sp2, void *context)
{
// UISegmentedControl segments use UISegment objects (private API). Then we can safely
// cast them to UIView objects.
float v1 = ((UIView *)sp1).frame.origin.x;
float v2 = ((UIView *)sp2).frame.origin.x;
if (v1 < v2)
return NSOrderedAscending;
else if (v1 > v2)
return NSOrderedDescending;
else
return NSOrderedSame;
}
和动作方法
-(IBAction)seleccionarSegmented:(id)sender {
int numSegments = [miSegmentedControl.subviews count];
for(int i = 0; i < numSegments; i++) {
[[miSegmentedControl.subviews objectAtIndex:i] setTintColor:nil];
[[miSegmentedControl.subviews objectAtIndex:i] setTintColor:[UIColor colorWithRed:200/255.0 green:200/255.0 blue:200/255.0 alpha:1]];
}
NSArray *sortedViews = [miSegmentedControl.subviews sortedArrayUsingFunction:compareViewsByOrigin context:NULL];
[[sortedViews objectAtIndex:miSegmentedControl.selectedSegmentIndex] setTintColor: [UIColor blackColor]];
for (id view in miSegmentedControl.subviews) {
[view removeFromSuperview];
}
for (id view in sortedViews) {
[miSegmentedControl addSubview:view];
}
}