我正在学习iOS开发,作为教育过程的一部分,我创建了一个自定义的UIView
,它使用drawRect
来绘制其内容(基于Core Graphics和UIBezierPath
)。一切正常,视图是动态的,并根据其宽度/高度呈现其内容。现在我想添加溶解动画,看起来像从100%缩放到0%。我编写了以下代码来实现:
[UIView animateWithDuration:1 delay:0
options: UIViewAnimationOptionBeginFromCurrentState
animations: ^{
for (CardView *cardView in self.cardsViews) {
cardView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.01, 0.01);
}} completion:nil];
然而,这段代码并不能将我的视图从100%缩放到0%。它只会使卡片消失(最多)。我尝试了许多缩放的方法,但是我迄今为止达到的唯一效果是从0%缩放到100%。这个视图可以完美地实现,但不是反向缩放...另外,即使我尝试应用非动画的变换,如下所示,它也不能进行缩放:
cardView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.5, 0.5);
我看到我的视图外观有一点变化,但肯定没有缩放到50%。当我尝试将完全相同的动画逻辑应用于UILabel时,它完美地工作!开发自定义UIView时,我错过了什么?为什么缩放视图可能会失效?
非常感谢提前!更新#1:这段代码使我的视图恰好变大了两倍,然后将其缩小到原始大小:
[UIView animateWithDuration:5 delay:0
options: UIViewAnimationOptionBeginFromCurrentState
animations: ^{
for (CardView *cardView in self.cardsViews) {
cardView.transform = CGAffineTransformMakeScale(0.5, 0.5);
}
} completion:nil];
UIViewAnimationOptionAllowAnimatedContent
吗? - Rafał Sroka