我似乎对UISegmented控件在最后一个片段上破坏其颜色有问题。这是一个例子
我使用UIStoryboard来设置我的分段控件,但是对于颜色更改和边框半径,这就是我正在使用的
_segmentedControl.layer.masksToBounds = YES;
_segmentedControl.layer.cornerRadius = 20;
_segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor;
[_segmentedControl setSelectedSegmentIndex:UISegmentedControlNoSegment];
[_segmentedControl setBackgroundImage:[Painter imageWithColor:[UIColor clearColor]] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[_segmentedControl setBackgroundImage:[Painter imageWithColor:_segmentedControl.tintColor] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
有关此imageWithColor在做什么的其他信息,请参见
+(UIImage*)imageWithColor:(UIColor*)color{
CGRect rect = CGRectMake(0, 0, 2.0, 2.0);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, rect);
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
答案 0 :(得分:0)
我使用了相同的代码,结果如下:
没有白色边框。
我正在将XCode 9.2与iOS11 iPhoneX模拟器一起使用。
您可以尝试更改代码
_segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor;
收件人:
_segmentedControl.layer.borderColor = [UIColor clearColor].CGColor;
如果问题仍然存在,您可以尝试使用相同的地雷配置,如果问题仍然存在,我们可以尝试找到解决方案。
编辑:
好的,我尝试过使用您的宽度,我可以重现该问题,但只有在设置了比例宽度后才能重现该问题。
这是因为比例宽度可以用十进制数字设置宽度大小,所以我们看到的是大小的小数部分。
好消息是,这似乎只是模拟器问题,我已经将该项目部署在iPhone中,并且无法复制。
您可以在IB的大小检查器中尝试更改比例宽度,直到在“视图宽度”中看到不带小数的整数。