Анимация UIView: как сбросить позицию - PullRequest
2 голосов
/ 31 марта 2011

У меня очень простой вопрос для новичка относительно позиции UIViews, которую я оживляю.

Если я назову это

[pageShadowView setFrame:CGRectOffset([pageShadowView frame], 100, 0)];

, а затем оживить это

[pageShadowView setFrame:CGRectOffset([pageShadowView frame], -100, 0)];

Я в основном переместу свой UIView с правой стороны экрана влево. Однако, если бы я указал -150 во второй строке кода, и если бы я должен был повторить эти анимации пару раз, мой объект постепенно перемещался бы все больше и больше влево.

Боюсь, это очень фундаментальный вопрос, но есть ли способ указать фиксированные координаты X вместо определения относительных положений? То есть Предположим, я всегда хотел переместить объект с х = 200 на х = 100.

Весь мой метод выглядит так:

[pageShadowView setFrame:CGRectOffset([pageShadowView frame], 100, 0)];

[UIView beginAnimations:@"shadowMove" context:nil]; // Begin animation
    [UIView setAnimationDuration:2.5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [pageShadowView setFrame:CGRectOffset([pageShadowView frame], -100, 0)];        
    [UIView commitAnimations];

Ответы [ 2 ]

5 голосов
/ 31 марта 2011

Вы можете установить любой прямоугольник с помощью setFrame ... просто создайте его с помощью CGRectMake () с абсолютными позициями.

например.

pageShadowView.frame = CGRectMake( 
                            x, 
                            y,
                            CGRectGetWidth(pageShadowView.frame),
                            CGRectGetHeight(pageShadowView.frame)
                        );
3 голосов
/ 31 марта 2011
 [pageShadowView setFrame:CGRectMake(xStart, yStart, xWidth, yHeight)]; // x,y in superview coordinates
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...