iOS动画弧变化

时间:2014-06-19 07:40:49

标签: ios objective-c

我创建了一个循环加载器(用于学习目的),以百分比显示完成了多少工作。这比实际使用更多的是学习经验(我知道git上的一些lib已经做了这件事)。但是现在我想动画百分比的变化,而不是立刻做这个,这就是我目前的做法。

这是我的代码:

- (instancetype)initWithFrame:(CGRect)frame
    {
        if (self == [super initWithFrame:frame]) {
            _percent = 0.0f;
        }
        return self;
    }

    - (void)drawRect:(CGRect)rect
    {
        [self drawLoaderWithFrame:rect percent:_percent];
    }

    - (void) setPercent:(CGFloat)percent {
        _percent = percent / 100.f;
        [self setNeedsDisplay];
    }

    - (void)drawLoaderWithFrame:(CGRect)frame percent:(CGFloat)percent;
    {
        //// Color Declarations
        UIColor* front = [UIColor colorWithRed: 1 green: 1 blue: 1 alpha: 1];

        //// Variable Declarations
        CGFloat angle = -360 * percent;

        if (_percent != 0.f) {
            CGRect oval2Rect = CGRectMake(CGRectGetMinX(frame) + floor(CGRectGetWidth(frame) * 0.11000 + 0.5), CGRectGetMinY(frame) + floor((CGRectGetHeight(frame) - 78) * 0.50000 + 0.5), floor(CGRectGetWidth(frame) * 0.89000 + 0.5) - floor(CGRectGetWidth(frame) * 0.11000 + 0.5), 78);
            UIBezierPath* oval2Path = UIBezierPath.bezierPath;
            [oval2Path addArcWithCenter: CGPointMake(CGRectGetMidX(oval2Rect), CGRectGetMidY(oval2Rect)) radius: CGRectGetWidth(oval2Rect) / 2 startAngle: 270 * M_PI/180 endAngle: -(angle + 90) * M_PI/180 clockwise: YES];
            [oval2Path addLineToPoint: CGPointMake(CGRectGetMidX(oval2Rect), CGRectGetMidY(oval2Rect))];
            [oval2Path closePath];

            [front setFill];
            [oval2Path fill];
        }
    }

我尝试使用延迟的while循环,但没有运气它仍然立即执行。

0 个答案:

没有答案