2010-07-17 3 views
1

Я хочу, чтобы изображение с некоторым размером говорило 25 на 25, чтобы двигаться линейным движением слева направо, а затем направо влево непрерывно.перемещение изображения на экране

Скажем, изображение начинает двигаться слева, а затем, когда оно достигает, направо, оно должно начать движение назад влево, то это должно повториться.

У меня есть этот код, который позволяет смотреть вниз, но я не могу перемещать его назад и вперед. Это для UIView.

[UIView beginAnimations:@"MyAnimation" context:nil]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDuration:45.0]; // 5 seconds 
frame = movingView.frame; 
//int j = frame.origin.y; 
int i; 
for (i= 0; i<=100; i++) { 
    frame.origin.y += i;//100.0; // Move view down 100 pixels 
    movingView.frame = frame; 
} 

Как мне это сделать?

С уважением

ответ

1

Вам не нужно, чтобы оживить вещи самостоятельно при использовании UIView анимации.

frame = movingView.frame; 
frame.origin.x = 0; 
movingView.frame = frame; // starting point 

[UIView beginAnimations:@"MyAnimation" context:nil]; 
[UIView setAnimationDuration:5]; 

frame.origin.x = 320-25; 
movingView.frame = frame; // endpoint 

[UIView commitAnimations]; 

для перемещения слева направо. Чтобы дождаться конца, используйте setAnimationDidStopSelector, чтобы вызвать метод, который выполняет обратную анимацию.

Посмотрите на flipping uiview continuously на материал делегата для анимации.

+0

Thanks mvds i knw setAnimationDidStopSelector называется так. \t [UIView setAnimationDelegate: self]; Но где это сделать, я не получаю обратную анимацию приветствует – iscavengers

+0

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

+0

добавил ссылку на вид того же вопрос, который я ответил вчера. – mvds

3

Кажется, вы можете сделать это более сложным, чем это должно быть. Анимировать вид Центр, а не его рама.

[UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationRepeatAutoreverses:YES]; 
    [UIView setAnimationRepeatCount:HUGE_VAL]; 
    [UIView setAnimationDuration:5.0]; 
    // Animate to right side of the containing view 
    [movingView setCenter:CGPointMake([[self view] bounds].size.width - 
        [movingView bounds].size.width/2.0, 
        [movingView center].y)]; 
    [UIView commitAnimations]; 

Это анимирует центр обзора в правой части отображаемого вида и автоматически возвращается в исходное положение. Обратите внимание: я вычитаю половину ширины перемещения movingView, так как мы хотим анимировать с правой стороны, но мы перемещаем центр вида. не его происхождение.

Установка автоматического обратного повтора на YES приведет к тому, что анимация вернется туда, где она началась, а затем повторить подсчет, чтобы она повторялась навсегда.

Кроме того, нет никаких причин для перемещения изображения вниз по одному пикселю за раз. Просто установите конечную позицию, которую вы хотите видеть, и укажите подходящую продолжительность, которую нужно выполнить, чтобы добраться туда. Core Animation устраняет необходимость создания ваших собственных циклов анимации, таймеров или потоков.