2013-07-24 3 views
0

У меня есть UIButton в UIViewController, который у меня в настоящее время «исчезает» для просмотра при открытии приложения. Хотелось бы получить UIButton, чтобы скользить слева направо, а.UIButton slide in, вместо fade in

Я не могу понять, как заставить его перемещаться слева направо, и мои попытки потерпели неудачу, хотя у меня получилось твердое «затухание».

Любая помощь, которую вы могли бы мне дать? Благодаря! Я могу добавить больше кода, как needed-

ViewController.h

@property (weak, nonatomic) IBOutlet UIButton *buttonOne; 

ViewController.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
     NSTimer *timermovebutton = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(movebutton) userInfo:nil repeats:NO]; 
    [timermovebutton fire]; 
} 

-(void) movebuttontwo 
{ 
    buttonTwo.alpha = 0; 
    [UIView beginAnimations:Nil context:Nil]; 
    [UIView setAnimationDelay:0.5]; 
    [UIView setAnimationCurve:UIViewAnimationTransitionCurlUp]; 

    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDuration:1.0]; 
    buttonTwo.alpha = 1.0; 

    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; 
    [UIView commitAnimations]; 
} 

ответ

2

Вы должны анимировать кнопки кадр, а не использовать кривая анимации.

С прошивкой 4, мы имели UIView анимации блоков:

// first set the UIButton frame to be outside of your view: 
// we are only concerned about it's location on the X-axis so let's keep all properties the same 
[buttonTwo setFrame:CGRectMake(CGRectGetMaxX(self.view.frame), CGRectGetMinY(buttonTwo.frame), CGRectGetWidth(buttonTwo.frame), CGRectGetHeight(buttonTwo.frame))]; 
[UIView animateWithDuration:0.5 
         delay:0 
        options:UIViewAnimationCurveEaseOut 
       animations:^{ 
        // set the new frame 
        [buttonTwo setFrame:CGRectMake(0, CGRectGetMinY(buttonTwo.frame), CGRectGetWidth(buttonTwo.frame), CGRectGetHeight(buttonTwo.frame))]; 
       } 
       completion:^(BOOL finished){ 
        NSLog(@"Done!"); 
       } 
]; 

Там в good tutorial over at Ray Wenderlich вы можете проверить, чтобы узнать больше.

+0

Спасибо, что вернулись ко мне! Он работал, сдвинув его, но быстрый вопрос также, моя кнопкаTwo W280xH60 и сосредоточена, так как я могу заставить его двигаться в эту область ViewController, вместо того, чтобы прямо сейчас он перемещается мимо центра и висит в левой части экрана ? – Realinstomp

+0

Только что изменил 'setFrame: CGRrectMake (0' to' setFrame: CGRrectMake (20' и получил его на работу!) Последний вопрос: мне хотелось, чтобы анимация перемещалась влево-вправо, но в настоящее время она перемещается вправо, что значение будет я измените для этого? – Realinstomp

+0

Измените координату X для вашего CGRectMake (первое значение). Вы должны изменить прямоугольник перед настройкой анимации на что-то вроде '-CGRectGetWidth (buttonTwo.frame)', что означает, что кнопка начнется справа из кадра с его полной шириной из кадра. – runmad

1
//Set your button off the screen to the left 
yourButton.frame = CGRectMake(-yourButton.frame.size.width, yourButton.frame.origin.y, CGRectGetWidth(yourButton.frame), CGRectGetHeight(yourButton.frame)); 

//Create the ending frame or where you want it to end up on screen 
CGRect newFrm = yourButton.frame; 
newFrm.origin.x = 100; 

//Animate it in 
[UIView animateWithDuration:2.0f animations:^{ 
    yourButton.frame = newFrm; 
}]; 
+0

Большое спасибо за ответ! Он работал, сдвинув его, но быстро вопрос, моя кнопкаTwo W280xH60 и сосредоточена, так как я могу заставить его перейти в эту область ViewController, вместо того, чтобы прямо сейчас он остается в правой половине экрана? – Realinstomp

+0

Просто измените 'newFrm.origin.x = 20;'? – Realinstomp

+0

Просто вычислите, где x должно быть, чтобы оно было центрировано на экране. Таким образом, ваша кнопкаX = (viewWidth/2) - (buttonWidth/2) – random