Нарезать UIImageView в пользовательскую форму - PullRequest
1 голос
/ 03 августа 2011

У меня есть UIImageView, который содержит изображение круга. Я хотел бы иметь возможность удалить часть изображения (при сохранении прозрачности), чтобы создать эффект отсутствия фрагмента, как показано ниже. Моя конечная цель - создать что-то вроде приложения ITunes, в котором при воспроизведении предварительного просмотра песни круг медленно заполняется по часовой стрелке.

Pie Shape

Ответы [ 2 ]

5 голосов
/ 03 августа 2011

Если вам не нужно изображение круга для чего-либо, кроме отображения прогресса, вы можете пропустить UIImageView и просто использовать CoreGraphics, чтобы нарисовать индикатор прогресса.Основные шаги:

  1. Создание пути - CGContextBeginPath
  2. Добавление дуги с помощью CGContextAddArc
  3. Заполнение пути с помощью CGContextFillPath
  4. Закрыть путь - CGContextClosePath

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

2 голосов
/ 03 августа 2011

Я реализовал аналогичный круг заполнения с помощью следующего кода: (делегат предоставляет значение от 0 до 1)

- (void)drawRect:(CGRect)rect
{
CGFloat endAngle=([self.delegate giveCompletion]+0.75)*2*M_PI;

UIBezierPath *path=[UIBezierPath bezierPathWithArcCenter:self.center radius:self.bounds.size.width/(3) startAngle:0.75*2*M_PI endAngle:endAngle clockwise:YES];
[path addLineToPoint:self.center];
[path addLineToPoint:CGPointMake(self.center.x, self.center.y+self.bounds.size.width/(3)) ];
[path addClip];
[[UIColor blueColor]setFill];
UIRectFill(self.bounds);
}

Я не понял, как его динамически заполнитьпока, хотя я предполагаю, что это будет сильно зависеть от конкретного контекста, где он используется.Надеюсь, это поможет!Приветствия.

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