Sal*_*rtz 5 core-animation calayer ios
出于某些原因,我试图避免使用CAScrollLayer来执行此操作.我要追求的效果是逐步显示(从下到上)CALayer的内容(我之前加载的一个png).所以我想这样做:
layer.anchorPoint = CGPointMake(.5, 1);
CABasicAnimation* a = [CABasicAnimation animationWithKeyPath:@"bounds.size.height"];
a.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
a.fillMode = kCAFillModeBoth;
a.removedOnCompletion = NO;
a.duration = 1;
a.fromValue = [NSNumber numberWithFloat:0.];
a.toValue = [NSNumber numberWithFloat:layer.bounds.size.height];
[layer addAnimation:a forKey:nil];
Run Code Online (Sandbox Code Playgroud)
这个问题是你可以告诉图层的内容是用边界缩放的.我试图改变界限,但内容始终保持原始大小,因此有效地界限剪辑图像,并且当我增加bounds.height时,图像"显示"本身.
关于如何实现它或者我可能缺少什么的任何想法?
好吧,我让它工作了,但我基本上也必须更新图层的框架,以反映锚点的变化:
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
layer.contentsGravity = kCAGravityTop;
layer.masksToBounds = YES;
layer.anchorPoint = CGPointMake(.5, 1);
CGRect newFrame = layer.frame;
newFrame.origin.y += newFrame.size.height / 2;
layer.frame = newFrame;
[CATransaction setValue:(id)kCFBooleanFalse forKey:kCATransactionDisableActions];
a.toValue = [NSNumber numberWithFloat:layer.bounds.size.height];
[layer addAnimation:a forKey:nil];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2724 次 |
| 最近记录: |