Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Alex2301
-21 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 33
1

Анимация UIView

19.03.2014, 19:54. Просмотров 993. Ответов 4
Метки нет (Все метки)

Есть 3 view, которые лежат друг на друге вот так:

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

UIBezierPath vs UIView
Всем доброго времени суток! Мне нужен ваш совет по поводу отрисовки в UIVIew. ...

UIView с PageController
Здравствуйте! Может кто подсказать в чем проблема, хочу сделать UIView с...

Рекурсивное создание UIView
Здравствуйте! Подскажите как сделать рекурсивное создание 15 UIView, каждая...

Прижать UIView к низу
Подскажите как в коде прижать UIView к низу родительской вьюшки?

Constraints и размер UIView
У меня, допустим, есть UIView добавленная на родительскую View и к ней...

4
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
19.03.2014, 22:12 2
Alex2301, используйте UISwipeGestureRecognizer.
Когда он отработает, запустите анимацию вращения для той UIView, для который был свайп.
Дополнительно, можете запустить другую анимацию для subviews той UIView, для которой был свайп.
1
Alex2301
-21 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 33
21.03.2014, 14:32  [ТС] 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 независимо от того по какой сделал свайп?
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
21.03.2014, 15:59 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, соответственно.
0
Alex2301
-21 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 33
21.03.2014, 18:56  [ТС] 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.....
0
21.03.2014, 18:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2014, 18:56

Изменить содержимое UIView сдвигом
Добрый день. Проблема в следующем: в методе viewDidLoad основного...

Вращение UIView по типу часовой стрелки
Всем доброго времени суток, собственно есть задача иммитировать часы,...

Size Classes и свойства frame/bounds у UIView
Всем привет! Решил в своем pet-проекте заюзать по-полной size classes, и...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru