左右移动UIButton

问题描述:

我试着在菜单中上下移动UIButton。 我使用以下解决方案的问题是计时器不准确。有时Button会向上移动122px,有时只会移至120px。我如何解决这个问题?左右移动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]; 
} 

为什么不使用UIView动画块?

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

在动画块(其中的注释是)所做的更改,将commitAnimations后进行动画处理。

查看课程方法以获得更多选项:http://tinyurl.com/34y8j5o

+0

谢谢您的完美工作! – 2010-05-04 19:51:10