Форум программистов, компьютерный форум CyberForum.ru

Анимация UIView - Программирование iOS/iPhone

Восстановить пароль Регистрация
 
Alex2301
-21 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 33
19.03.2014, 19:54     Анимация UIView #1
Есть 3 view, которые лежат друг на друге вот так:

Objective-C
1
2
3
4
5
6
7
8
9
10
11
|------------------|
| 1                |
|  |-------------| |
|  | 2           | |
|  |  |--------| | |
|  |  | 3      | | |
|  |  |        | | |
|  |  |        | | |
|  |  |________| | |
|  |_____________| |
|__________________|
И нужно сделать свайп в верх по первой view, и тогда она и лежащие на ней 2 другие view начнут бесконечно крутиться против часовой стрелки, если сделать свайп по второй то начнет крутиться 2-я и 3-я, а первая будет на месте, и т.д. Подскажите как это сделать. Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2014, 19:54     Анимация UIView
Посмотрите здесь:

Программное управление размерами UIView Objective-C
UIBezierPath vs UIView
Рекурсивное создание UIView
UIView с PageController
Как добавить собственный UIView в нужное место?
Свой UIView - в каком методе добавить KVO ?
Вращение UIView по типу часовой стрелки
Изменить содержимое UIView сдвигом
Прижать UIView к низу
Constraints и размер UIView
Создание UIView внутри UIScrollView программно Objective-C
Size Classes и свойства frame/bounds у UIView

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
19.03.2014, 22:12     Анимация UIView #2
Alex2301, используйте UISwipeGestureRecognizer.
Когда он отработает, запустите анимацию вращения для той UIView, для который был свайп.
Дополнительно, можете запустить другую анимацию для subviews той UIView, для которой был свайп.
Alex2301
-21 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 33
21.03.2014, 14:32  [ТС]     Анимация UIView #3
Цитата Сообщение от zulkis Посмотреть сообщение
Alex2301, используйте UISwipeGestureRecognizer.
Когда он отработает, запустите анимацию вращения для той UIView, для который был свайп.
Дополнительно, можете запустить другую анимацию для subviews той UIView, для которой был свайп.
А есть какой-то стандартный метод для такой анимации, или надо писать свой?

Добавлено через 1 час 41 минуту
Сделал так: по свайпу вызываю этот метод

Objective-C
1
2
3
4
5
6
7
8
9
- (void) startAnimation:(id)sender
{
[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(rotationAnimation) userInfo:nil repeats:YES];
}
 
- (void) rotationAnimation
{
 randView.transform = CGAffineTransformRotate(randView.transform,0.1);
}
Но он крутит все вьюхи, а как сделать что бы если свайпнул по второй то крутились 2 и 3, а не все 3 независимо от того по какой сделал свайп?
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
21.03.2014, 15:59     Анимация UIView #4
Используйте
Objective-C
1
2
3
4
5
6
7
8
9
[UIView animateWithDuration:0.5
                          delay:1.0
                        options: UIViewAnimationCurveEaseOut
                     animations:^{
                         someView.frame = CGRectMake(0,0,0,0)
                     } 
                     completion:^(BOOL finished){
                         NSLog(@"Done!");
                     }];
Добавлено через 1 минуту
Цитата Сообщение от Alex2301 Посмотреть сообщение
Но он крутит все вьюхи, а как сделать что бы если свайпнул по второй то крутились 2 и 3, а не все 3 независимо от того по какой сделал свайп?
Ну используйте указатели на 2ю и 3ю UIView, соответственно.
Alex2301
-21 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 33
21.03.2014, 18:56  [ТС]     Анимация UIView #5
Цитата Сообщение от zulkis Посмотреть сообщение
Код Objective-C
[UIView animateWithDuration:0.5
* * * * * * * * * * * * * delay:1.0
* * * * * * * * * * * * options: UIViewAnimationCurveEaseOut
* * * * * * * * * * *animations:^{
* * * * * * * * * * * * *someView.frame = CGRectMake(0,0,0,0)
* * * * * * * * * * *}
* * * * * * * * * * *completion:^(BOOL finished){
* * * * * * * * * * * * *NSLog(@"Done!");
* * * * * * * * * * *}];
Это не та анимация котороя мне нужна, но я уже разобрался с анимацией


Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
- (void)rotateView
{
    
        [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
  
            [randView setTransform:CGAffineTransformRotate(randView.transform, 0.1)];
        }completion:^(BOOL finished){
            if (finished) {
                [self rotateView];
            }
        }];
   
}
А насчет указателей, как их получить? таким образом что бы по какой свайп сделал та и закрутилась.

Там как я понял нужно использовать objectAtIndex, но не понял как правильно это описать.

Добавлено через 2 часа 52 минуты
Objective-C
1
[(UIView*)viewArray[1] setTransform:CGAffineTransformRotate(randView.transform, 0.7)];

Вот пример анимации для 2-й.

Вопрос как получить индекс вьюхи по которой прошел свайп, чтобы вставить его сюда

Objective-C
1
[(UIView*)viewArray[??????] se.....
Yandex
Объявления
21.03.2014, 18:56     Анимация UIView
Ответ Создать тему
Опции темы

Текущее время: 21:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru