|
Июл
30
|
Сегодня мы рассмотрим небольшой проект с NSTimers, а именно — создание приложения, иллюстрирующего лошадиные бега. Нам предстоит создать представление с шестью небольшими синими квадратами “UIView“. Расположив их внизу экрана, мы с помощью таймера выведем один из квадратов вперед на произвольное расстояние. Приступаем!

Источник
Исходный код можно найти здесь.
Шаг 1
В xCode создайте приложение на основе представления и присвойте ему любое имя.
Шаг 2
В заголовочный файл класса контроллера представления добавьте следующий код:
1 | NSTimer *myTimer; |
Шаг 3
В классе контроллера представления откомментируйте метод “viewDidLoad” и внесите туда представленный ниже код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | - (void)viewDidLoad { [super viewDidLoad]; CGRect workingFrame; workingFrame.origin.x = 15; workingFrame.origin.y = 400; workingFrame.size.width = 40; workingFrame.size.height = 40; for(int i = 0; i < 6; i++) { UIView *myView = [[UIView alloc] initWithFrame:workingFrame]; [myView setTag:i]; [myView setBackgroundColor:[UIColor blueColor]]; workingFrame.origin.x = workingFrame.origin.x + workingFrame.size.width + 10; [self.view addSubview:myView]; } myTimer = [NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(moveACar) userInfo:nil repeats:YES]; } |
Шаг 4
В классе контроллера представления добавьте следующий метод:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | -(void)moveACar { int r = rand() % 6; NSLog(@"My number is %d", r); for(UIView *aView in [self.view subviews]) { if([aView tag] == r) { int movement = rand() % 100; CGRect workingFrame = aView.frame; workingFrame.origin.y = workingFrame.origin.y - movement; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:.2]; [aView setFrame:workingFrame]; [UIView commitAnimations]; if(workingFrame.origin.y < 0) { [myTimer invalidate]; } } } } |
Заключение
Вот, собственно, и все. Таймеры — действительно отличная штука, удобная для решения разноплановых мелких проблем в проекте. Удачи в программировании!’

(2 голосов, средний: 4.50 из 5)
Март 6th, 2010 at 23:46
очень круто )))) спасибо ))))