Создание анимированного индикатора выполнения в iOS - PullRequest
1 голос
/ 29 сентября 2011

Я пытаюсь создать собственную анимированную гистограмму для приложения для iPad (то есть высота полосы увеличивается до заданного уровня при активации). Я довольно новичок в разработке для iOS, и я просто хочу получить отзывы о том, как решить эту задачу.

Я пытаюсь поэкспериментировать с ответом в этой записи, и я хочу знать, правильно ли, что я начинаю с этого момента.

Ответы [ 2 ]

3 голосов
/ 29 сентября 2011

Если вам просто нужна сплошная полоса, вы можете создать UIView нужного вам размера и размещения, установить его цвет фона и добавить его в свой вид. Это неплохое кодирование, не стыдно использовать UIView для рисования сплошных прямоугольников. :]

Для более сложной графики вам может потребоваться создать собственный подкласс UIView и переопределить его сообщение drawRect, чтобы выполнить какой-либо пользовательский рисунок. Например:

- (void)drawRect:(CGRect)rect
{
  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextSetLineWidth(context, 4.0);
  CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0, 1.0); // opaque yellow
  CGContextMoveToPoint(context, x1, y1); // for suitable definition of x1,y1, etc
  CGContextAddLineToPoint(context, x2, y2);
  CGContextStrokePath(context);
}

или любой другой тип рисунка CGContext *, который вам может понадобиться (например, круговые диаграммы, линейные диаграммы и т. Д.).

Чтобы анимировать полосу, которую вы создаете, добавляя UIView с цветом фона, добавляйте следующее при запуске анимации:

timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES];
self.startTime = [NSDate date];

, а затем добавьте следующее сообщение (примечание: полоса будет расти вверх).

- (void) onTimer:(NSTimer*)firedTimer
{
  float time = [self.startTime timeIntervalSinceNow] * -1;
  if (time>kMaxTime)
  {
    [timer invalidate];
    timer = nil;
    time = kMaxTime;
  }
  int size = time * kPixelsPerSecond;
  myBar.frame = CGRectMake(x, y - size, width, size);
}
0 голосов
/ 29 сентября 2011

просмотрите эту ссылку, но вы можете сгенерировать их отсюда http://preloaders.net/, что должно послужить хорошей основой для создания вашей собственной

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...