2014-09-15 4 views
0

Я добавляю containerView в свое приложение. Этот вид представления и слой находятся в нормальной точке 0,0 и 320,480. Ничего интересного или другого.Почему CABasicAnimation не оживляет правильную точку?

Поэтому я добавляю его в свой вид, но я хочу анимировать его на экране через его слой. Опять ничего сумасшедшего. Но я хочу, чтобы этот вид/слой моего дополнительного представления находился в точке 20,160. Таким образом, 20 пикселей слева и половина пути вниз по окну (нижняя половина окна). Я думаю, я установил бы мой animateToPoint для CALayer равным 20 160. Но это не сработает.

Ниже представлен мой код, который позволяет оживить добавленный вид/слой до 20 пикселей слева и на полпути вниз по экрану. Проблема в том, что точка, которую я передаю, чтобы сделать ее 20,160 абсолютно неправильной, но она работает (мне пришлось перенести ее с помощью пробной ошибки). Мой вопрос: почему не работает 20 160 для точки CABasicaAnimation? Почему я должен вкладывать в такие большие количества?

// Place the container view 
     self.callDetailView.view.frame = CGRectMake(20, 163, 280, 263); 
     self.callDetailView.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

     [self.view addSubview:self.callDetailView.view]; 
     [self addChildViewController:self.callDetailView]; 
     [self.callDetailView didMoveToParentViewController:self]; 

     [self.callDetailView configureDetails:[[STRequestManager sharedInstance] shouldGetCurrentRequest]]; 
     CGPoint myNewEndPoint = CGPointMake(160.0, 263.0); // <-- I would think this should be 20,160 
     CABasicAnimation *slideIn = [CABasicAnimation animationWithKeyPath:@"position"]; 
     slideIn.duration = 0.5; 
     [slideIn setToValue:[NSValue valueWithCGPoint:myNewEndPoint]]; 
     [slideIn setFromValue:[NSValue valueWithCGPoint:CGPointMake(160.0, 663.0)]]; 
     [[self.callDetailView.view layer] addAnimation:slideIn forKey:@"mySlideInAnimation"]; 
     [[self.callDetailView.view layer] setPosition:myNewEndPoint]; 

// UPDATE

Теперь, когда я смотрю на 160,263 является вертикальной центральной точкой и горизонтальной центральной точка. Мое мнение, которое я добавляю, составляет 280, а половина - 140. 140 плюс мои 20 слева - 160. Использует ли CABasicAnimation анимировать центр?

ответ

0

По умолчанию AnchorPoint слоя является (0,5, 0,5), то есть центром. Следовательно, ваша анимация движется по центру.