ios - UISegmentedControl:如何在使用自定义图像时不突出显示已选择的片段

标签 ios iphone objective-c uikit uisegmentedcontrol

我正在为 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/

相关文章:

ios - Meteor Cordova 启动时间慢得离谱?

iphone - 一次仅选择一个按钮

iphone - 错误 : Method 'methodName' not defined in Plugin 'plugin' - Phonegap 3. 0 iOS

iphone - 有条件地包含用于不同 iOS SDK 版本的库?

ios - 在 Swift 中的 tableviewcell 之间添加空间

ios - 是否可以下载应用程序商店中不再存在的应用程序的 ipa?

iOS 7 popViewController 动画向上移动整个 View

ios - 如何在结构定义中定义CGPoints数组?

ios - 将图像上传到服务器需要很长时间

ios - 无法使用 NSJSONSerialization 解析 JSON