2013-12-09 1 views
0

Так что я хочу, когда пользователь нажимает на кнопку sideNav две отдельные анимации. Текущее представление выйдет из контроллера, и появится новое представление. Я установил две разные точки анимации для просмотров, но по какой-то причине, когда пользователь нажимает на кнопку sideNav, представления перемещаются так, как будто они подключены , Что я делаю не так?Проблемы с анимацией двух просмотров

- (IBAction)sideNav:(id)sender { 

    if (draw1 == 0) { 
     draw1 = 1; 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.4]; 
     [UIView setAnimationDelay:0.0]; 
     [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 

     navView.frame = CGRectMake(0, 0, 320, 568); 
     newsView.frame = CGRectMake(320, 0, 320, 568); 

     [UIView commitAnimations]; 
    } else { 
     draw1 = 0; 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.4]; 
     [UIView setAnimationDelay:0.0]; 
     [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 

     navView.frame = CGRectMake(-320, 0, 320, 568); 
     newsView.frame = CGRectMake(0, 0, 320, 568); 

     [UIView commitAnimations]; 

    } 

} 
+0

Добавить контрольную точку, чтобы увидеть, сколько раз вызывается 'sideNav :'. Если он случайно вызван дважды, вы получите одновременно обе анимации, потому что вы сразу устанавливаете флаг 'draw1'. –

+0

Вы хотите, чтобы первый вид перемещался с экрана, и как только вы закончили, вы хотите, чтобы второй вид скользил? Или вы хотите сделать обе анимации в одно и то же время? – Greg

+0

Спасибо, Трэвис! Я попробую. Я хочу, чтобы они оба оживили в одно и то же время. Я хочу, чтобы NewsView соскользнул с экрана, а navView - на слайд. Но navView слайд с экрана с newsView, как будто он связан с ним. Но я хочу, чтобы они были двумя отдельными анимациями. – user2605157

ответ

2

Один шаг к ответу на ваш вопрос заключается в том, чтобы упростить ваш код. Во-первых, если он не используется в другом месте как целое число, draw1 должен быть BOOL со значениями YES и NO. Во-вторых, нет необходимости во всех идентичных повторяющихся кодах. Гораздо проще понять что-то вроде:

- (IBAction)sideNav:(id)sender { 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.4]; 
    [UIView setAnimationDelay:0.0]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 

    navView.frame = draw1 ? CGRectMake(-320, 0, 320, 568) : CGRectMake(0, 0, 320, 568); 
    newsView.frame = draw1 ? CGRectMake(0, 0, 320, 568) : CGRectMake(320, 0, 320, 568); 

    [UIView commitAnimations]; 

    draw1 = !draw1; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^