我已经完成了动画CALayers的大量工作,但我从未完全理解定位系统。大多数时候我只是尝试,结果如何。
我知道隐式anchorPoint
的{{1}}是父CALayer
的中心。
意思是我必须在x轴上为每个我想要设置动画的值减去或加160,或者在y轴上为284(由于NavigationBars,这确实有所不同)。
但我陷入了一种在我眼中有点奇怪的情况。我会在这里解释一下:
我在屏幕底部创建了一个44px高度的栏。我使用此UIView
:frame
创建了它。 CGRectMake(0.0, 568.0, 320.0, 44.0)
将是正常位置,524
是隐藏位置。
动画不适用于这些值,添加或减去284都没有解决问题。我不得不做一些实验,让它工作,这是我的代码的工作版本。
568
这会将CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position.y"];
[animation setFromValue:[NSNumber numberWithFloat:546.0]];
[animation setToValue:[NSNumber numberWithFloat:590.0]];
[animation setDuration:0.3];
[[self layer] addAnimation:animation forKey:@"inAnimation"];
[[self layer] setPosition:CGPointMake(160.0, 590.0)];
设置为可见区域的动画。为什么我的UIView
使用546
代替524
,fromValue
使用590
。这是22px的差异。为什么呢?
仍然是一个奇迹。