我正在使用以下代码转储我正在制作动画的视图的图层和表示层的边界状态之前和之后的状态。我没有看到任何变化 - 看起来我在理解方面遗漏了一些东西 - 已经阅读了几次 CA 编程指南但无济于事。任何指导将不胜感激
- (void) shrink{
[Dumper dumpRect:@"BEFORE layer bounds" :[iv.layer bounds]];
[Dumper dumpRect:@"BEFORE p-layer bounds" :[iv.layer.presentationLayer bounds]];
[UIView animateWithDuration:1.5 animations:^{
CABasicAnimation *scaleAnim = [CABasicAnimatianimationWithKeyPath:@"transform.scale"];
scaleAnim.fromValue = [NSNumber numberWithFloat:1];
scaleAnim.toValue = [NSNumber numberWithFloat:0.5];
scaleAnim.autoreverses=NO;
[scaleAnim setDuration:1];
// these need to be invoked to retain the scaled version
scaleAnim.removedOnCompletion = NO;
[scaleAnim setFillMode:kCAFillModeForwards];
[iv.layer addAnimation:scaleAnim forKey:@"scale"];
}completion:^(BOOL finished){
NSLog(@"Animation done - %d",finished);
[Dumper dumpRect:@"AFTER layer bounds" :[iv.layer bounds]];
[Dumper dumpRect:@"AFTER p-layer bounds" :[iv.layer.presentationLayer bounds]];
}];
}
在运行此代码时 - 我得到以下信息: 层边界之前 - 矩形 x=0.000000 y=0.000000 w=100.000000 h=200.000000 在 p 层边界之前 - 矩形 x=0.000000 y=0.000000 w=100.000000 h=200.000000 动画完成 - 1在层边界之后 - 矩形 x=0.000000 y=0.000000 w=100.000000 h=200.000000 在 p 层边界之后 - 矩形 x=0.000000 y=0.000000 w=100.000000 h=200.000000
那么之前和之后之间没有变化吗?
即使使用“transform.translation”转换,我也观察到相同的行为。
我需要最终的界限,以便我可以设置 UIView 即 iv 以设置适当的帧值。
相关问题是 - 我知道当图层被动画时,它只是完成的绘图,但底层视图仍然使用原始框架设置 - 设置 UIView 框架的正确方法是什么。