我的UISegmentedControl存在问题。它只有2个不同的段,图像具有渲染模式AlwaysTemplate。
这是我的问题:
如果我实际上用手指敲击片段,图像会正确地调整和突出显示更新。
但是,如果我尝试以编程方式更改所选片段,则突出显示将更改(图像周围的颜色),但图像色调保持相同,使其几乎不可见。只有点击细分时,细分中的图像色调才会更新。
这是我尝试设置所选索引的方法:
[self.segmentControl setSelectedSegmentIndex:1];
// Optionally tried calling this after
[self.segmentControl sendActionsForControlEvents:UIControlEventValueChanged];
我试过了:
其他信息:
更新编辑:
我删除了状态UIControlStateNormal的UISegmentedControl的背景图像,现在着色工作正常。似乎如果我为该状态设置背景图像,则会出现此问题。
注意:使用CoreGraphics绘制背景图像。
删除此行,现在着色很好,但这并不能解决问题。我需要那里的图像来造型:
[self.segmentControl setBackgroundImage:[UIImage segmentInactiveBackgroundImage] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
这是背景图像绘制方法:
UIImage *img = [UIImage imageForSize:CGSizeMake(5, BAR_BUTTON_HEIGHT) withDrawingBlock:^{
UIBezierPath *outline = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 5, BAR_BUTTON_HEIGHT)
byRoundingCorners:UIRectCornerAllCorners
cornerRadii:BAR_BUTTON_IMAGE_CORNER_RADIUS_SIZE];
[[UIColor segmentedControlInactiveBackgroundColor] setFill];
[outline fill];
}];
img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(2, 2, 2, 2)];
return img;
我还尝试了一个非常简单的背景图像,看看它是否是它的绘制方式。任何一种背景图像都会混淆图标色调。即便使用它也会让它变得混乱:
- (UIImage *)imageWithColor:(UIColor *)color {
CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
我已经启动了一个新项目,并且只需要最低限度来让它复制此错误,以确保没有其他任何因素影响它。它仍在发生。这是一个包含代码和错误的GIF。