Как сделать анимацию при изменении UIImageView - PullRequest
2 голосов
/ 23 мая 2011

Я написал этот код и сделал 2 кнопки, далее и назад, чтобы отобразить изображение в NSMutubleArray, используя UIImageView.

-(IBAction) pictureNext:(id)sender;
{
    if (pictureIndice==[promMUAraay count]) 
    {
        pictureIndice=0;
    }

    NSLog(@"indice : %d ",pictureIndice);
    Promotion *prom = [[Promotion alloc]init];
    prom =[promMUAraay objectAtIndex:pictureIndice];
    promotionPicture.image = [UIImage imageWithData:prom.pPicture];
    //promLabel.text=prom.pName;
    NSLog(@"label : %@",prom.pName);
    pictureIndice++;
    }

-(IBAction) pictureBack:(id)sender;
{
    if (pictureIndice==[promMUAraay count]) 
    {
        pictureIndice=0;
    }

    NSLog(@"indice : %d ",pictureIndice);
    Promotion *prom = [[Promotion alloc]init];
    prom =[promMUAraay objectAtIndex:pictureIndice];
    promotionPicture.image = [UIImage imageWithData:prom.pPicture];
    //promLabel.text=prom.pName;
    if (pictureIndice==0) 
    {
        pictureIndice=[promMUAraay count];
    }
    pictureIndice--;


}

Это работает, но возможно ли сделать небольшую анимацию при смене изображения?

1 Ответ

4 голосов
/ 23 мая 2011

Есть много вариантов анимации на выбор. Поскольку у вас есть один UIImageView объект, вот пример "исчезновения / входа" (предупреждение: не проверено):

-(void)fadeView:(UIView *)thisView fadeOut:(BOOL)fadeOut {
    //   self.ReviewViewController.view.alpha = 1;

    [UIView beginAnimations:@"fadeOut" context:nil]; 
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];

    if (fadeOut) {
        thisView.alpha = 0;
    } else {
        thisView.alpha = 1;
    }
    [UIView commitAnimations];
}

Тогда в ваших pictureNext и pictureBack вы можете изменить строку:

   promotionPicture.image = [UIImage imageWithData:prom.pPicture];

на эти 3 строки:

   [self fadeView:promotionPicture fadeOut:YES];
   promotionPicture.image = [UIImage imageWithData:prom.pPicture];
   [self fadeView:promotionPicture fadeOut:NO];

Примечание:

Вы можете объединить свои pictureNext и pictureBack, если обе кнопки вызывают один и тот же селектор и определяют, является ли sender кнопкой «назад» или «вперед».

-(IBAction)pictureMove:(id)sender {
    if (sender == yourNextButton) {
        //do next index math here
    } else if (sender == yourBackButton) {
        //do back index math here
    }
    .
    .
    .
    //you image change code goes here
    .
    .
    .
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...