【问题标题】:UISegmentedControl image highlighting bug in iOS6iOS6 中的 UISegmentedControl 图像突出显示错误
【发布时间】:2013-01-26 10:58:42
【问题描述】:

目前我有一个带有 3 个独立段的小型分段控件。

我想要做的是,如果选中,将该特定片段的图像更改为不同的图像。

到目前为止,我已经设法使它与我想要的非常相似,并且在选择时会显示一个新图像,但是新图像的一小部分被蓝色突出显示(如下所示)覆盖,无论如何我尝试了什么,我无法摆脱它:

由于某种原因,突出显示覆盖了图像的一部分。

我想知道如何在选中时完全禁用分段控件的任何突出显示/更改,或任何其他可以解决我的问题的选项。

到目前为止我已经尝试过:

我的代码(如您所见,只为任何选定的按钮测试一张图片):

-(IBAction)languageChanged:(UISegmentedControl *)sender {
    UISegmentedControl *segmentControl = [[UISegmentedControl alloc] init];
    [segmentControl addTarget:self action:@selector(segmentedControlValueChanged:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:segmentControl];

    [sender setImage:[UIImage imageNamed:@"rsz_langue-francais-on.png"] forSegmentAtIndex:sender.selectedSegmentIndex];     
}

【问题讨论】:

    标签: ios objective-c cocoa-touch uisegmentedcontrol


    【解决方案1】:

    最后,我能够解决问题的唯一方法(也许避免会是一个更好的词)是将uisegmentedcontrol 的样式从“Plain”更改为“Bar',它删除了段之间的蓝色突出显示间距,就像上面 Patrick 建议的那样。我听说这是一个已知的 iOS6 错误,希望它很快得到修复。

    【讨论】:

      【解决方案2】:

      我不能 100% 确定这是否可行,但分段颜色由 tintColor 确定。

      所以你可以简单地将tintColor 设置为[UIColor clearColor];

      编辑:

      我了解到这是 iOS6 及更高版本的问题。要解决此问题,请为每个单独的部分设置宽度,而不是为整个分段控件设置宽度。

      以下是宽度为 180 的 UISegmentedControl 的一些示例(未经测试)代码:

      float version = [[[UIDevice currentDevice] systemVersion] floatValue];
      if (version >= 6.0) {
          [[UISegmentedControl appearance] setWidth:90 forSegmentAtIndex:0];
          [[UISegmentedControl appearance] setWidth:90 forSegmentAtIndex:1];
      }
      else{
          segmentedControl.frame = CGRectMake(0, 0, 180, 30);
      }
      

      编辑 2:

      我只能在样式设置为“条形”而不是“纯色”时更改分段控件的色调颜色。一旦我的应用程序中颜色的一致性受到影响,我真的很快就会改变这种情况。

      临时和肮脏的修复可能是检查瞬时状态为“是”。这会使它只显示一秒钟的蓝色,而您的自定义图像仍将使它看起来被选中。

      【讨论】:

      • 遗憾的是这不起作用,我试图设置 mySegment.tintColor = [UIColor clearColor];多次,并使用界面生成器设置默认色调,但它仍然是亮蓝色:/ 谢谢
      • 啊,当然。当样式设置为“条形”而不是“纯色”时,我只能更改分段控件的色调颜色。临时和肮脏的修复可能是检查momentary state 为YES。这会使它只显示一秒钟的蓝色,而您的自定义图像仍将使它看起来被选中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 2011-10-29
      • 1970-01-01
      • 2016-03-19
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多