2014-03-24 2 views
1

Im пытается анимировать UIImage, который является подзором UIView в построителе интерфейса. Моя проблема заключается в том, что эта анимация проходит «через» другой вид, который является табличным представлением, а затем просто «идет позади» и не показывает весь путь. Мое мнение иерархия выглядит так:Анимация подзаголовка представления скрывается за другим видом

View 
    View 
     SubviewToAnimate 
    TableView 

Я попытался [self.view bringViewToFront:SubviewToAnimate] как в самой точки зрения, так и в анимации.

Код для анимации:

-(void)startAnimationWithImageView:(UIImageView*)imageView{ 

    imageViewToMove = imageView; 
    imageViewFirstAlpha = imageViewToMove.alpha; 

    firstCenterOfView = imageViewToMove.center; 

    double firstX =self.parabelWidth*self.startValue; 
    double firstY = self.parabelHeight*pow(self.startValue, 2); 
    firstPointOfParabel = CGPointMake(firstX, firstY); 

    if (points) { 
     points = nil; 
    } 
    points =[[NSMutableArray alloc]init]; 

    for (int counter = self.startValue; counter < self.stopValue; counter++) { 

     double y = self.parabelHeight*pow(counter, 2); 
     double x = self.parabelWidth*counter; 

     CGPoint point = CGPointMake(x, y); 
     [points addObject:[NSValue valueWithCGPoint:point]]; 
     //DLog(@"point: %@", NSStringFromCGPoint(point)); 

    } 

    animationCounter = 0; 
    [self moveView]; 


} 

-(void)moveView{ 

    if (animationCounter < points.count) { 
     [UIView animateWithDuration:self.duration 
           delay:0 
          options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationCurveLinear 
         animations:^{ 

          NSValue *val = [points objectAtIndex:animationCounter]; 
          CGPoint point = [val CGPointValue]; 

          double delta = 1.0/points.count; 
          imageViewToMove.center = CGPointMake(firstCenterOfView.x-firstPointOfParabel.x+point.x, firstCenterOfView.y-firstPointOfParabel.y+point.y); 
          imageViewToMove.alpha = sqrt(imageViewToMove.alpha-delta); 

          double scale = animationCounter*delta; 
          imageViewToMove.transform = CGAffineTransformMakeScale(sqrt(1-scale), sqrt(1-scale)); 

          animationCounter++; 

         } 
         completion:^(BOOL finished){ 

          [self moveView]; 

         }]; 
    }else if (animationCounter == points.count) { 
     imageViewToMove.center = firstCenterOfView; 
     imageViewToMove.transform = CGAffineTransformMakeScale(1.0, 1.0); 

     [UIView animateWithDuration:0.3 
           delay:0 
          options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationCurveEaseIn 
         animations:^{ 

          imageViewToMove.alpha = imageViewFirstAlpha; 

         } 
         completion:NULL]; 
    }else 
     return; 


} 

ответ

2

Вы не можете использовать [self.view bringViewToFront:SubviewToAnimate] поставить свой вид изображения на верхней части представления таблицы, потому что это не является сестринским представления таблицы.

Если у вас ...

View 
    SubView 
    ImageView (animated view) 
    TableView 

Затем этот код будет работать.

Или, в вашей текущей иерархии, вы можете перенести SubView на передний план, который принесет изображение с ним.

+1

Привезли Subview спереди, работали как шарм! Спасибо. (ответ будет приниматься через 5 минут) –

+0

Не беспокойтесь, рад помочь: D – Fogmeister

Смежные вопросы