UIView анимация изменить размер кнопки - PullRequest
4 голосов
/ 04 августа 2011

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

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];

sender.autoresizesSubviews = NO;
sender.clipsToBounds = NO;
sender.frame = CGRectMake(63,326,200,37);

[UIView commitAnimations];

, который просто заставляет кнопку увеличиваться в размере, он вообще не анимируется. Я сделал что-то не так или кто-то еще реализовал такое поведение кнопок?

EDIT:

- (IBAction) buyButtonAction: (UIButton *) sender {

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationDelay:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];

sender.clipsToBounds = NO;

sender.frame = CGRectMake( CGRectGetMinX( sender.frame) - 30, CGRectGetMinY(sender.frame), 200, 37);
[sender setTitle:@"Touched Touched Touched" forState:UIControlStateNormal];


[UIView commitAnimations];
}

1 Ответ

7 голосов
/ 04 августа 2011

Вы ориентируетесь на iOS, которая не поддерживает блоки?

Я реализовал «кнопку анимации при прикосновении», используя следующий тошнотворно простой код.

[UIView animateWithDuration:0.5 animations:^{
    self.navigationItem.rightBarButtonItem.title = @"Quoting...";
}];

В качестве альтернативы этот код, кажется, также работает для анимации кнопки при касании, если вы не можете поддерживать блоки (он также включает закомментированные блоки, если вы идете по этому пути):

-(IBAction) clicked:(UIButton*)sender{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationDelay:0];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    //[UIView animateWithDuration:2.5 animations:^{

    sender.autoresizesSubviews = NO;
    sender.clipsToBounds = NO;
    sender.frame = CGRectMake(63,326,200,37);

    //sender.frame = CGRectMake( CGRectGetMinX( self.theButton.frame) - 100, CGRectGetMinY(self.theButton.frame), 300, 40);
    //[sender setTitle:@"Touched Touched Touched" forState:UIControlStateNormal];
//}];
...