2015-07-14 7 views
-1

Я новичок в быстрой анимации и нуждаюсь в некоторой помощи в понимании этого.Пытается анимировать формирование круга с помощью Swift

Так сказать, у меня есть следующий код, который создает круг на основе предоставленного ввода.

func drawCircle(percentage:CGFloat){ 
//Some circle drawing code and the circle is drawn using the percentage % provided. 

} 

я вызвать эту функцию с

drawCircle(0.5) 

я получу это. enter image description here я называю использованием

drawCircle(0.75) 

я получу это. enter image description here Таким образом, исходя из процентного соотношения, я создаю круг/полукруг/кольцо. Надеюсь, я понимаю.

Теперь только часть, которую я хочу оживить, - это формирование круга. Так сказать, когда я звоню drawCircle(0.5), он должен анимировать плавно от 0.0% до 0.5% В настоящее время, если я вызываю свой метод с таймером и передаю параметры последовательно (0.00, 0.1, 0.2 и т. Д. До 0.5), он может работать. Пример: enter image description here

Но я не думаю, что это правильный путь. Итак, что нужно искать, если есть лучший способ сделать это, используя анимацию в swift, где переход от 0.0 до 0.5 является гладким.

[Я не хочу менять существующие коды для создания круга. Его уже существующая база кода, сделанная кем-то, с кем я работаю, и у нее есть некоторый фактор времени и риск изменить что-либо прямо сейчас на существующий код. Ищете что-то, где функция «drawCircle (%)» может использоваться для достижения желаемого результата. Предложения всегда приветствуются.]

ТИА>

+0

Try пройти небольшое значение с короткими интервалами в вашем бывшем таймере: 0,016 –

+0

Мм Я просто хотел бы добавить, что ваш текущий способ анимировать его не очень эффективен, и если вы делаете свои интервалы очень маленькими, это займет так много времени, вам понадобится индикатор выполнения для вашего индикатора прогресса :) –

+0

Вы можете подключить каждый кадр цикла рисования, используя 'CADisplayLink'. –

ответ

2

Посмотрите, как сделать анимацию с UIBezierPath и CAShapeLayer. В принципе, вам нужно создать UIBezierPath с уравнением для круга. Затем используйте свойство strokeEnd, чтобы определить, какая часть круга должна быть анимирована. Вот ответ для справки, хотя и в Objective-C

Draw circle with UIBezierPath

+0

Спасибо. Это единственный способ. Изменили мой базовый код и отлично работали. Спасибо за вашу помощь. –