【问题标题】:CABasicAnimation not working with UIImageViewCABasicAnimation 不适用于 UIImageView
【发布时间】:2014-07-29 14:13:27
【问题描述】:

我有一个以编程方式调用的 UIImageView,我试图让它旋转但它不起作用。图像将放置在动态 UITableView 中(我无法将其更改为静态)。该图像在我的表格视图中看起来很好,但它只是不旋转。

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 122, 38, 38)];
    imageView.image = [UIImage imageNamed:@"settings1.png"];

    [self.view addSubview:imageView];

    CABasicAnimation *spin;
    spin = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
    spin.fromValue = [NSNumber numberWithFloat:0];
    spin.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)];
    spin.duration = 4;
    spin.repeatCount = 10*1000;

    [imageView.layer addAnimation:spin forKey:@"360"];

【问题讨论】:

    标签: xcode uitableview uiimageview cabasicanimation


    【解决方案1】:

    这可能是因为您试图在 viewDidLoad 中启动动画。我建议重新组织你的代码,在 viewDidLoad 中创建图像视图实例,然后等到 viewDidAppear: 被调用以实际启动动画。

    @property (strong, nonatomic) UIImageView *imageView;
    

    然后

    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 122, 38, 38)];
        self.imageView.image = [UIImage imageNamed:@"settings1.png"];
    
        [self.view addSubview:self.imageView];
    }
    
    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
    
        CABasicAnimation *spin = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
        spin.fromValue = [NSNumber numberWithFloat:0];
        spin.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)];
        spin.duration = 4;
        spin.repeatCount = 10*1000;
    
        [self.imageView.layer addAnimation:spin forKey:@"360"];
    }
    

    【讨论】:

    • 谢谢!这么简单的解决方案,仅供参考,为什么这种方法有效?是因为它一直等到viewDidLoad?
    • @user3121577 基本上,在视图真正出现在屏幕上之前,您永远不应该尝试启动动画。在调用 viewDidLoad 时,视图控制器的视图已经加载,但实际上还没有添加到视图层次结构中,所以有时视图上的动画和类似的东西,或者它的子视图会被抛出,因为它们'在生命周期中发生得太早了。
    猜你喜欢
    • 2021-08-29
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多