В настоящее время у меня есть таймер, ниже которого анимируется круговая линия - линия обратного отсчета. Это оживляет в соответствии с количеством секунд, которое я перехожу на _percent.Пользовательская анимация таймера с использованием UIBezierPath
Я хотел бы иметь еще одно круговое колесо, которое отображает секунды. Однако я изо всех сил стараюсь, чтобы анимация продолжалась 1 секунда за каждую секунду, оставшуюся в _percent. например если процент равен 100, мне нужен круг, чтобы оживить цикл 100 раз, продолжающийся 1 секунду. (а также для достижения эффекта анимации, показанного ниже.
Вот чертеж для ясности :) Первая строка из 3 показывает, что это такое в настоящее время, а нижняя строка 3 показывает эффект, который я желаю ...
Вот как я выпалить таймер на мой взгляд класса контроллера:
-(void)viewDidLoad
{
CPCircleCountdownView *m_testView;
m_testView.percent = 100;
}
- (IBAction)StartTimerButtonPressed:(id)sender
{
// Kick off a timer to count it down
m_timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(decrementSpin) userInfo:nil repeats:YES];
}
- (void)decrementSpin
{
// If we can decrement our percentage, do so, and redraw the view
if (m_testView.percent > 0) {
m_testView.percent = m_testView.percent - 1;
[m_testView setNeedsDisplay];
}
else {
[m_timer invalidate];
m_timer = nil;
}
}
и вот мой CPCountdownView, где я хочу, чтобы добавить новую круговую анимацию продолжительностью в одну секунду для каждой второй слева. Обе теории в теории должны заканчиваться одновременно.
#import "CPCircleCountdownView.h"
@interface CPCircleCountdownView()
{
CGFloat startAngle;
CGFloat endAngle;
}
@end
@implementation CPCircleCountdownView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
self.backgroundColor = [UIColor clearColor];
//get start and end angles
startAngle = M_PI * 1.5;
endAngle = startAngle + (M_PI * 2);
}
return self;
}
- (void)drawRect:(CGRect)rect
{
//Display arc percent
//NSString *textContent = [NSString stringWithFormat:@"%d", self.percent]; //TODO: Pass total number of seconds int
//-------------------------
UIBezierPath* bezierPath = [UIBezierPath bezierPath];
// Create our arc, with the correct angles
[bezierPath addArcWithCenter:CGPointMake(rect.size.width/2, rect.size.height/2)
radius:130
startAngle:startAngle
endAngle:(endAngle - startAngle) * (_percent/_overallScore) + startAngle
clockwise:YES];
// Set the display for the path, and stroke it
bezierPath.lineWidth = 2;
[[UIColor colorWithRed:122.0/255.0 green:197.0/255.0 blue:205.0/255.0 alpha:1.0] setStroke];
[bezierPath stroke];
//-------------------------
}
Любая помощь будет здорово я относительно новый, так что если вы могли бы дать мне примеры, которые бы здорово :) Спасибо
Проблема в том, что cabasicanimation удаляется, когда приложение закрывается и открывается снова. Усваивается больше анимации. – Ryan
Достаточно просто, чтобы добавлять уведомления и воссоздавать анимацию, где последний остановился. – MDB983