[ios]UIView 动画,如何使其顺利吗?

标签: Xcode ios UIView
发布时间: 2017/3/27 20:12:46
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试着执行简单的动画来更改视图位置使用此代码︰

[UIView animateWithDuration:0.4 animations: ^{
self.greenIm.frame = CGRectMake(self.roundView.frame.origin.x, self.roundView.frame.origin.y -   110, 60, 60);
 self.greenIm.layer.cornerRadius = self.greenIm.frame.size.height / 2;
}

但我所看到的我圆的视图 self.greenIm 转到新位置不四舍五入和末尾只逗留圆形,看起来很糟糕。

后来,我想换另一视图的大小还要同一个中心︰

[UIView animateWithDuration:0.4 animations: ^{
self.cup.frame = CGRectMake(self.cup.frame.origin.x, self.cupImage.frame.origin.y, self.cup.frame.size.width - 20, self.cup.frame.size.height - 20);
self.cup.center = self.centerPoint;
}

看相同,第一个视图改变大小后为中心。

如何修复它吗?我如何理解 UIView 动画动漫所有属性不在一次。请帮助。

解决方法 1:

苹果文档说,对于你的第一个问题,你可以进行动画处理的属性,它是进行动画处理。

一个块对象,包含变更需要提交的意见。这是在您以编程方式更改任何进行动画处理的属性的视图视图层次结构中。此块不带任何参数,没有返回值。不,此参数必须为 NULL。

如果你看到UIView属性的文档,你会发现那一是不进行动画处理。你需要使用核心动画来实现这一目标。使用以下代码。我对此示例代码使用UILabel 。 看看是否这有助于。

  CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"cornerRadius"];
  [anim setFromValue:[NSValue valueWithNonretainedObject:[NSNumber numberWithDouble:10.0]]];
  lblView.layer.cornerRadius = 30.0; 
  [anim setDuration:6];
  [lblView.layer addAnimation:anim forKey:@"move"];

在这同一种方式可以创建另一个动画对象的位置属性和更改为所需的帧。添加到图层动画和这两个动画将开始并行。

官方微信
官方QQ群
31647020