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;
}
Привезли Subview спереди, работали как шарм! Спасибо. (ответ будет приниматься через 5 минут) –
Не беспокойтесь, рад помочь: D – Fogmeister