Анимация на UIButton Нажмите в iPhone - PullRequest
0 голосов
/ 27 сентября 2011

Все .. Как настроить анимацию при нажатии кнопки?

У меня есть две кнопки, обе имеют разные рамки ..

First   CGRectMake (10 , 10 , 100 , 80 ); It has Black Image,
Second  CGRectMake (200, 10 , 210 , 80 ); It has White Image,

Когда я нажимаю на Первую кнопку тех, этодолжно быть анимировано для перемещения из одного кадра в другой кадр ..

Видно только как первая кнопка. Черное изображение перемещается во вторую позицию кнопки. Как Изображение изменяется из кнопок ..

После нажатия кнопки кадране меняется ... Должен оставаться как Первый и Второй ..

Я пытался, но не получил точное

buttonFirst.frame = buttonSecond.frame;
buttonFirst.center = buttonSecond.center; 
buttonFirst.transform = CGAffineTransformMakeTranslation( buttonSecond.frame.origin.x - buttonFirst.frame.origin.x , buttonSecond.frame.origin.y - buttonFirst.frame.origin.y);

Как оживить это?

Редактирование:

Мне нужно переместить одну шашку из одного CGRect в другой CGRect .. Итак, он хочет отображаться как движущиеся шашки, но я не хочу менять CGRect, только изображения кнопок выглядят так ...

Пожалуйста, скажите мне .. Спасибо ...

Ответы [ 5 ]

0 голосов
/ 08 ноября 2011

Наконец я получил ответ ...

Я установил две кнопки в двух разных видах. после установки одного таймера и перемещения изображения первой кнопки в положение другой кнопки. Вот пример кода для этого ..

Шаг 1: установить вид с помощью таймера

UIView *oldView = [[UIView alloc] init];  
                    oldView = [viewArray objectAtIndex:selectedIndex];
                    UIView *newView = [[UIView alloc] init];
                    newView = [viewArray objectAtIndex:[sender tag]]; 
                    oldRect = [oldView frame];                    
                    newRect = [newView frame];
                    movingTimer = [[NSTimer alloc] init];
                    movingTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(movingCheckers:) userInfo:nil repeats:YES];

                    imageViewMove = [[UIImageView alloc] init];
                    [imageViewMove setFrame:oldRect];
                    [imageViewMove setImage:[UIImage imageNamed:blackManName]];

                    [self.view bringSubviewToFront:imageViewMove];
                    [self.view addSubview:imageViewMove];

Шаг 2. Перемещение изображения во вторую позицию

CGPoint aPoint = CGPointMake(newRect.origin.x - oldRect.origin.x, oldRect.origin.y - newRect.origin.y);                    
imageViewMove.frame = CGRectMake(imageViewMove.frame.origin.x + (aPoint.x / 6) , imageViewMove.frame.origin.y - (aPoint.y / 6), imageViewMove.frame.size.width, imageViewMove.frame.size.height);
if (imageViewMove.frame.origin.x >= newRect.origin.x)
{
                [selectButton setBackgroundImage:nil forState:UIControlStateNormal]; 
                [moveButton setBackgroundImage:imageViewMove.image forState:UIControlStateNormal];
                [imageViewMove removeFromSuperview];
                [movingTimer invalidate];
}

Теперь его работа .....

0 голосов
/ 27 сентября 2011

очень простая логика

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.20f];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationBeginsFromCurrentState:YES];
[firstButton setFrame:CGRectMake(5, 50, 30, 30)];//moves to second button place 
[secondButton setFrame:CGRectMake(5, 5, 30, 30)];//moves to first button place
[UIView commitAnimations];

используйте логику в соответствии с вашим использованием ..

0 голосов
/ 27 сентября 2011

Вот пример из рабочей программы:

    [self.buttonFirst setUserInteractionEnabled:NO];
    [UIView transitionWithView:self.buttonFirst
                  duration:1.0
                   options:UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionCurveLinear
                animations:^{ 
                    buttonFirst.frame = buttonSecond.frame;
                    buttonFirst.center = buttonSecond.center;
                     }
                completion:^(BOOL finished){
                    [self.buttonFirst setUserInteractionEnabled:YES];                         
                }];
0 голосов
/ 27 сентября 2011
CGRect oldRectFirst = buttonFirst.frame;
CGRect oldRectSecond = buttonSecond.frame;
[UIView animateWithDuration:0.2f animations:^{
    buttonFirst.frame = oldRectSecond;
    buttonSecond.frame = oldRectFirst;
}];
0 голосов
/ 27 сентября 2011

хорошо .. вы можете попробовать эту ссылку

[UIView beginAnimation/endAnimation] bock
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...