我正在为 UISegmentedControl
的正常/选定状态使用自定义图像。
当我点击已经选择的片段时,它的外观变为突出显示。
我尝试为高亮+选择状态设置图像,但它被忽略了:
[segmentedControl setBackgroundImage:appearance.selectedBackground
forState:UIControlStateSelected | UIControlStateHighlighted
barMetrics:UIBarMetricsDefault];
是否有任何方法(包括非破坏性私有(private)方法)在再次点击时使选定段处于选定状态?
最佳答案
我知道已经晚了,但对于那些有同样问题的人: 你必须为每个状态设置所有的 dividerImages
// Set background images
UIImage *normalBackgroundImage = [UIImage imageNamed:@"segmented-background-unselected"];
UIImage *selectedBackgroundImage = [UIImage imageNamed:@"segmented-background-selected"];
[self setBackgroundImage:normalBackgroundImage
forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[self setBackgroundImage:selectedBackgroundImage
forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[self setBackgroundImage:normalBackgroundImage
forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
[self setBackgroundImage:selectedBackgroundImage
forState:UIControlStateSelected | UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
// Set divider images
UIImage *buttonImageLeftSelected = [UIImage imageNamed:@"segmented-left-selected"];
UIImage *buttonImageNoneSelected = [UIImage imageNamed:@"segmented-none-selected"];
UIImage *buttonImageRightSelected = [UIImage imageNamed:@"segmented-right-selected"];
[self setDividerImage:buttonImageNoneSelected
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[self setDividerImage:buttonImageLeftSelected
forLeftSegmentState:UIControlStateSelected
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[self setDividerImage:buttonImageLeftSelected
forLeftSegmentState:UIControlStateSelected | UIControlStateHighlighted
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[self setDividerImage:buttonImageLeftSelected
forLeftSegmentState:UIControlStateSelected
rightSegmentState:UIControlStateHighlighted
barMetrics:UIBarMetricsDefault];
[self setDividerImage:buttonImageRightSelected
forLeftSegmentState:UIControlStateHighlighted
rightSegmentState:UIControlStateSelected
barMetrics:UIBarMetricsDefault];
[self setDividerImage:buttonImageRightSelected
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateSelected | UIControlStateHighlighted
barMetrics:UIBarMetricsDefault];
[self setDividerImage:buttonImageRightSelected
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateSelected
barMetrics:UIBarMetricsDefault];
关于ios - UISegmentedControl:如何在使用自定义图像时不突出显示已选择的片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24361284/