用百分比变化填充UIView背景颜色

时间:2015-11-24 18:32:07

标签: ios objective-c uiview uiviewcontroller uicolor

我有UIView。

我的JSON对象每次返回百分比计数如45%或68%等。

我的查询是,当我收到成功的json结果时,我想以编程方式填充背景视图颜色。

假设我收到32%。从左到右35%填充红色,剩余65%白色。

怎么可能?

你能给我一些示例代码吗?

2 个答案:

答案 0 :(得分:3)

在故事板中使用 UIView 并将其子类设为 UIProgressView ,或者也可以使用代码制作它。

UIProgressView * progressView = [[UIProgressView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];

然后您可以使用代码

25%填充红色和剩余白色的示例

progressView.progress = .25;
progressView.trackTintColor = [UIColor whiteColor];
progressView.progressTintColor = [UIColor redColor];

输出

enter image description here

您甚至可以通过在某些计时器方法中更改progressView的进度来为填充设置动画 对于标签,只需抓住UILabel并将其作为子视图添加到progressView。

答案 1 :(得分:0)

如何使用UIView这样的自定义UIBezierPath

#define PERCENTAGE      0.3f
#define PROGRESS_COLOR  [UIColor redColor]
#define FILL_COLOR      [UIColor whiteColor]
#define LBL_TEXT        @"Some text goes here..."

- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];

    UIBezierPath *fillPath = [UIBezierPath bezierPathWithRect:rect];
    [FILL_COLOR setFill];
    [fillPath fill];

    CGRect progressRect = rect;
    progressRect.size.width = progressRect.size.width * PERCENTAGE;

    UIBezierPath *percentagePath = [UIBezierPath bezierPathWithRect:progressRect];
    [PROGRESS_COLOR setFill];
    [percentagePath fill];

    [LBL_TEXT drawInRect:rect withAttributes:@{
                                               NSFontAttributeName : [UIFont systemFontOfSize:20],
                                               NSForegroundColorAttributeName : [UIColor blackColor]
                                               }
     ];
}

enter image description here