как получить индикатор хода пирога - PullRequest
4 голосов
/ 09 февраля 2012

Мне нравится небольшая индикаторная полоска, как в Xcode, при поиске строки в проекте (Shift-Command-F), см. Рисунок.

Как это можно вызвать в iOS?Я хотел бы иметь его для очереди загрузки.

Заранее спасибо.

Screenshot of Xcode searching for a string in a projekt

Ответы [ 5 ]

6 голосов
/ 09 февраля 2012

На складе нет кругового детерминированного представления прогресса. Вот пример drawRect:, который вы можете использовать для реализации такой вещи.

- (void)drawRect:(CGRect)rect
{
    CGFloat circleRadius = (self.bounds.size.width / 2) - (self.strokeWidth * 2);
    CGPoint circleCenter = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect));
    CGRect circleRect = CGRectMake(circleCenter.x - circleRadius, circleCenter.y - circleRadius, 2 * circleRadius, 2 * circleRadius);

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);

    // Draw stroked circle to delineate circle shape.

    CGContextSetStrokeColorWithColor(context, self.fillColor.CGColor);
    CGContextSetLineWidth(context, self.strokeWidth);
    CGContextAddEllipseInRect(context, circleRect);
    CGContextStrokePath(context);

    // Draw filled wedge (clockwise from 12 o'clock) to indicate progress

    self.progress = MIN(MAX(0.0, self.progress), 1.0);

    CGFloat startAngle = -M_PI_2;
    CGFloat endAngle = startAngle + (progress * 2 * M_PI);

    CGContextSetFillColorWithColor(context, self.fillColor.CGColor);
    CGContextMoveToPoint(context, circleCenter.x, circleCenter.x);
    CGContextAddLineToPoint(context, CGRectGetMidX(circleRect), CGRectGetMinY(circleRect));
    CGContextAddArc(context, circleCenter.x, circleCenter.y, circleRadius, startAngle, endAngle, NO);
    CGContextClosePath(context);
    CGContextFillPath(context);

    CGContextRestoreGState(context);
}

Вам потребуется создать свойства strokeWidth и fillColor, чтобы использовать этот код напрямую, но это должно быть началом. Вот пример проекта с парой примеров.

3 голосов
/ 09 февраля 2012

Я не верю, что они выпустили UIProgressView как это на iOS, но вы можете создать его самостоятельно. Чтобы поместить элементы в правую часть текстового представления, используйте свойство rightView (не забудьте также установить rightViewMode).

Вы можете создать пользовательский UIView для этого (я сомневаюсь, что стоило бы попытаться создать подкласс UIProgressView). Я, вероятно, нарисовал бы это вручную с drawRect вместо того, чтобы пытаться использовать изображения или что-то подобное. Должно быть намного проще заполнить правильный процент таким образом.

3 голосов
/ 09 февраля 2012

Может быть, вы можете использовать код из MBProgressHUD есть такой пирог в каком-то большем размере.

2 голосов
/ 09 февраля 2012

Может быть, вы можете использовать SSPieProgressView

1 голос
/ 13 июня 2014

Попробуйте: LSPieProgressView

Это категория UIView, может отображать круговой прогресс наложения любого UIView.

Пример кода:

#import "UIView+LSPieProgress.h"

- (void)updateProgress
{
    [self.button setProgress:self.progress];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...