代码之家  ›  专栏  ›  技术社区  ›  teabot

在iPhone上旋转图像的最快方法

  •  0
  • teabot  · 技术社区  · 17 年前

    我需要旋转一个ui图像以响应用户输入。我希望这是尽可能圆滑,因此想知道哪一个是执行转换和渲染的最快方法。理想情况下,我想留在uikit或quartz框架内。图像的属性如下:

    • 尺寸约为250x300像素
    • 不不透明-需要使用alpha通道进行渲染

    实现此功能的最佳方法和实践是什么?

    注: 这里描述了一种方法 stackoverflow answer 但我不确定这是否是最佳的。我当然会尝试一下,但我很想知道这是否被认为是“最佳实践”。

    2 回复  |  直到 15 年前
        1
  •  6
  •   Nathan de Vries    17 年前

    将核心动画层应用到uiimage的示例可能会提供一些启发:

    UIImage* rotatingImage = [UIImage imageNamed:@"someImage.png"];
    
    CATransform3D rotationTransform = CATransform3DMakeRotation(1.0f * M_PI, 0, 0, 1.0);
    CABasicAnimation* rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
    
    rotationAnimation.toValue = [NSValue valueWithCATransform3D:rotationTransform];
    rotationAnimation.duration = 0.25f;
    rotationAnimation.cumulative = YES;
    rotationAnimation.repeatCount = 10;
    
    [rotatingImage.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
    
        2
  •  1
  •   rennarda    16 年前

    如果在uiImageView中显示uiImage,为什么不在视图上设置Transform属性?

    myimageView.transform = CGAffineTransformMakeRotation(<angle in radians>);
    

    这很简单,对于像你所说的这样的小图像来说,这是一个高性能的——所有的uikit视图都是分层的,所以硬件加速了。此属性也可设置动画。