我正在向我的应用添加一个containerView。此视图视图和图层位于正常的0,0点和320,480。没有什么令人兴奋的或不同的。
所以我将它添加到我的视图中,但我希望通过其图层在屏幕上设置动画。再也没什么可疯狂的。但我希望我添加的视图的这个视图/层位于20,160点。所以从左边20个像素到窗口的一半(窗口的下半部分)。我想我会将CALayer的animateToPoint设置为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 :(得分:0)
默认情况下,图层的AnchorPoint
为(0.5,0.5),即中心。因此,您的动画正沿着中心移动。