繁体   English   中英

UIView简介CAAnimation期间的“故障”

“Glitch” during UIView Intro CAAnimation

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试将动画添加到UIView。 动画的目的是“动画化”出现在屏幕上的View(而不是仅仅出现在屏幕上)。

动画具有所有大小缩放比例:从5%开始,增加到120%,然后很快又回到正常比例的100%。

我的问题是,在动画开始之前,完整比例的UIView会很快出现。

这是代码:

UIView * myView = [[UIView alloc] initWithFrame:someFrame];
[self.view addSubview:myView];
[self initialAnimationFor:myView];

-(void) initialAnimationFor:(UIView*)pView {

    const CFTimeInterval firstDuration = 0.75f;
    const CFTimeInterval secondDuration = 0.025f;
    const float initialValue = 0.05f;
    const float middleValue = 1.20f;

    CABasicAnimation * firstAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    firstAnimation.duration = firstDuration;
    firstAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    firstAnimation.fromValue = [NSNumber numberWithFloat:initialValue];
    firstAnimation.toValue = [NSNumber numberWithFloat:middleValue];

    CABasicAnimation * secondAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    secondAnimation.duration = secondDuration;
    secondAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    secondAnimation.fromValue = [NSNumber numberWithFloat:middleValue];
    secondAnimation.toValue = [NSNumber numberWithFloat:1.0f];

    CAAnimationGroup *animationGroup = [CAAnimationGroup new];
    animationGroup.duration = firstDuration + secondDuration;
    animationGroup.animations = @[firstAnimation, secondAnimation];

    [pView.layer addAnimation:animationGroup forKey:nil];
}

有任何想法吗? 谢谢!

1 个回复

我将采用另一种技术,并使用链接的UIView块动画,如下所示:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    UIView *myView          = [[UIView alloc] initWithFrame:CGRectMake(40, 40, 200, 200)];
    myView.backgroundColor  = [UIColor redColor];
    [self initialAnimationFor:myView];
}
- (void)initialAnimationFor:(UIView*)pView {
    pView.transform = CGAffineTransformMakeScale(0.05f, 0.05f);
    if (pView.superview == nil) {
        [self.view addSubview:pView];
    }
    [UIView
     animateWithDuration:0.75f
     animations:^{
         pView.transform = CGAffineTransformMakeScale(1.20f, 1.20f);
     }
     completion:^(BOOL finished) {
         [UIView
          animateWithDuration:0.25f // <-- Your old value of 0.025f makes the animation VERY quick
          animations:^{
              pView.transform = CGAffineTransformIdentity;
          }
          ];
     }
     ];
}

使用此设置,您将获得“增长到略大于100%,然后'稳定'到100%”的效果。

这是可行的解决方案吗?

1 从 CAAnimation 获取 UIVIew

我正在尝试从CAAnimation获取UIView对象。 我已经实现了以下CAAnimationDelegate方法 这个类将使用不同的视图执行多个动画。 所以我需要在这个delegate方法中找出哪个View的动画完成了。 如果有可能从这个动画中获得视图,请指导我。 ...

2 在 CAAnimation 期间修改值

假设你有一个简单的动画 一层的 读取每个动画步骤的 strokeEnd 值非常容易。 只需更改为自定义图层 进而 实际上能够在每一步设置图层的属性值会非常方便。 例子: 你当然不能那样做—— 试图修改只读层 也许你可以有一个自定义的动画属性 如何“手动”设置每个帧 ...

4 何时在自定义UIVIew中添加CAAnimation?

问题:仅当我在viewWillAppear或更高版本中添加视图时,才会显示我的自定义UIView动画。 上下文:在我的自定义UIView中,我在自定义init函数中创建动画并将其添加到图层中。 此自定义UIView位于视图层次结构的深处,理想情况下,我的视图控制器不应该只因为该动画 ...

5 UIView动画块与CAAnimation

iOS动画专家! 每种方法的优缺点是什么? 我知道Apple建议使用块而不是旧的UIView动画方法( UIView beginAnimations等),但CAAnimation呢? 你什么时候使用一种方法而不是另一种? 在性能方面有权衡吗? ...

6 UIView阴影故障

我试图在我的iOS应用中从Android重建cardView 。 我使用的是multi-os-engine,这就是为什么我的代码在Java中但在obj-c或swift中却几乎相同的原因。 我编写了此方法以在UIViews中添加阴影。 与较旧的iPhone搭配使用时,效果很好。 ...

7 UIPangesture <-> UIView动画故障

我的UIView动画有一个烦人的问题。 基本上,我通过跟随手指位置来进行UIView旋转动画。 当视图完全加载时,一切工作正常,但是如果在我的Web服务中传入新数据(视图内容)时用户拖动手指,则视图将跳出屏幕。 当用户滚动一点时,视图跳回到它的位置,一切都很好。 所以我该怎么做才能防止这 ...

8 UIView 实时复制另一个视图的 CAAnimation?

所以我有一个带有渐变子层的背景视图,连续动画以缓慢改变颜色。 我正在使用CATransaction ,因为我还需要为其他属性设置动画: 现在我想复制这个渐变动画,比如说,对于按钮的标题。 注意 1:如果可能的话,我不能只是在按钮上“打一个洞”,因为我可能在按钮和背景之间有其他不透明的视图。 ...

9 如何在UIView中正确定义CAAnimation重复计数?

我想创建包含一些UIImage对象的动画。 根据调查,我试图将动画添加到UIImages层。 如您所见,下面的代码为每个UIImage创建了动画,并将这些动画添加到UIImages层。 之后,我将所有这些UIImages添加到UIView中成为子视图。 问题是,当我将此动画类(它 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM