Ios 用于显示等级的标签和标签边框应部分填充特定于等级的颜色

Ios 用于显示等级的标签和标签边框应部分填充特定于等级的颜色,ios,Ios,当我这样做时,我得到以下o/p 但我需要将标签边框填充90%,假设最大评级为5,剩余红色我创建了一个从uilabel继承的类,然后创建了该标签的对象,然后调用setNeedsDisplay方法,但它仍然不起作用它没有调用在我的label类中实现的drawrect方法此方法不起作用。默认角半径设置为默认黑色 self.rating.text=@"4.5"; self.rating.adjustsFontSizeToFitWidth=YES; self.rating.textColor = [U

当我这样做时,我得到以下o/p


但我需要将标签边框填充90%,假设最大评级为5,剩余红色

我创建了一个从uilabel继承的类,然后创建了该标签的对象,然后调用setNeedsDisplay方法,但它仍然不起作用它没有调用在我的label类中实现的drawrect方法此方法不起作用。默认角半径设置为默认黑色
self.rating.text=@"4.5";

self.rating.adjustsFontSizeToFitWidth=YES;

self.rating.textColor = [UIColor blackColor];

self.rating.font = [UIFont fontWithName:@"Helvetica-Bold" size:8.0];

self.rating.layer.borderColor = [UIColor colorWithRed:.2 green:1 blue:0 alpha:1].CGColor;

self.rating.layer.borderWidth = 2.0f;

self.rating.textAlignment=NSTextAlignmentCenter;

self.rating.clipsToBounds=YES;

self.rating.layer.masksToBounds=YES;
There are lots of ways to do it, but one is to just draw two bezier paths, one for each side:

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]);

    UIBezierPath *blueHalf = [UIBezierPath bezierPath];
    [blueHalf addArcWithCenter:CGPointMake(100, 100) radius:90.0 startAngle:-M_PI_2 endAngle:M_PI_2 clockwise:YES];
    [blueHalf setLineWidth:4.0];
    [blueHalf stroke];

    CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]);

    UIBezierPath *redHalf = [UIBezierPath bezierPath];
    [redHalf addArcWithCenter:CGPointMake(100.0, 100.0) radius:90.0 startAngle:M_PI_2 endAngle:3.0 * M_PI_2 clockwise:YES];
    [redHalf setLineWidth:4.0];
    [redHalf stroke];
}