2010-05-03 2 views
0

Я попытался переместить UIButton вверх и вниз в меню. Проблема, которую я получил со следующим решением, заключается в том, что таймер не является точным. Иногда Button перемещается на 122px, иногда только на 120 пикселей. Как я могу это исправить?Перемещение UIButton около

-(IBAction)marketTabClicked:(id)sender { 

    if (marketTabExtended) { 
     NSLog(@"marketTabExtended = YES"); 
     return; 
    } 
    else { 
     if (iPhoneAppsExtended) { 
      timer = [NSTimer scheduledTimerWithTimeInterval:0.005 target: self selector: @selector(animateItemApps) userInfo: nil repeats: YES]; 
     } 
     else { 
      if (homepageExtended) { 
       timer = [NSTimer scheduledTimerWithTimeInterval:0.005 target: self selector: @selector(animateItemHomepage) userInfo: nil repeats: YES]; 
      } 
      else { 
       timer = [NSTimer scheduledTimerWithTimeInterval:0.005 target: self selector: @selector(animateItemMarketing) userInfo: nil repeats: YES]; 
      } 

     } 

    } 

    [self performSelector:@selector(stopTimer) withObject:self afterDelay:0.605]; 
    iPhoneAppsExtended = NO; 
    homepageExtended = NO; 
    marketTabExtended = NO; 
    marketTabExtended = YES; 

} 



-(void)animateItemApps { 
    CGPoint movement; 
    movement = CGPointMake(0, -1); 
    homepage.center = CGPointMake(homepage.center.x, homepage.center.y + movement.y); 
} 

-(void)animateItemHomepage { 
    CGPoint movement; 
    movement = CGPointMake(0, 1); 
    homepage.center = CGPointMake(homepage.center.x, homepage.center.y + movement.y); 
    //marketTab.center = CGPointMake(marketTab.center.x, marketTab.center.y + movement.y); 
} 

-(void)animateItemMarketing { 
    CGPoint movement; 
    movement = CGPointMake(0, -1); 
    //marketTab.center = CGPointMake(marketTab.center.x, marketTab.center.y + movement.y); 
    homepage.center = CGPointMake(homepage.center.x, homepage.center.y + movement.y); 
} 

-(void)stopTimer { 
    [timer invalidate]; 
} 

ответ

1

Почему вы не используете блоки анимации UIView?

[UIView beginAnimations:nil context:nil]; 
//Change UIButton frame here 
[UIView commitAnimations]; 

Изменения, сделанные в блоке анимации (где есть комментарий), будет анимированный после commitAnimations.

Проверьте mathods класса больше вариантов: http://tinyurl.com/34y8j5o

+0

Спасибо работал отлично! –