同一动画块中的两个属性更改具有不同的持续时间。为啥?
Posted
技术标签:
【中文标题】同一动画块中的两个属性更改具有不同的持续时间。为啥?【英文标题】:Two property changes in the same animation block have different durations. Why?同一动画块中的两个属性更改具有不同的持续时间。为什么? 【发布时间】:2010-10-21 15:01:58 【问题描述】:在下面的UIView
动画块中,我做了一个CGAffineTransformMakeScale
和一个CGAffineTransformMakeRotation
,虽然duration
设置为1.0f,
,但比例真的很快,旋转就像它一样在1 秒内完成应该。
这一定是我对AffineTransforms
的应用方式缺乏了解,但我想不通。
什么给了?
编辑:弗拉基米尔的回答效果很好。我将同一个属性更改了两次,而不是更改了两个属性。要对transform
属性进行两次更改,您必须使用初始更改进行transform
,然后将第二次更改添加到transform
,然后从那里设置对象的transform
。通过这种方式,您可以将任意数量的链接链接在一起。
CGColorRef color = [[colorArray objectAtIndex:colorIndex] CGColor];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0f];
[[self layer] setFillMode:kCAFillModeForwards];
[self setTransform:CGAffineTransformMakeScale(2.0, 2.0)];
[self setTransform:CGAffineTransformMakeRotation(M_PI / 4)];
[[self layer] setBackgroundColor:color];
[UIView commitAnimations];
【问题讨论】:
【参考方案1】:[self setTransform:CGAffineTransformMakeScale(2.0, 2.0)];
[self setTransform:CGAffineTransformMakeRotation(M_PI / 4)];
第二行覆盖第一行的效果。您应该构建整个转换,然后将其应用于您的视图:
CGAffineTransform tr = CGAffineTransformMakeScale(2.0f,2.0f);
tr = CGAffineTransformRotate(tr, M_PI/4);
[self setTransform: tr];
【讨论】:
以上是关于同一动画块中的两个属性更改具有不同的持续时间。为啥?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 librosa 库中的频谱图具有不同的实际音轨持续时间?
为啥在 oracle SQL 中,在条件相差很大的情况下,对同一列执行具有两个不同值的查询所花费的时间