iOS UIImageView 没有动画

Posted

技术标签:

【中文标题】iOS UIImageView 没有动画【英文标题】:iOS UIImageView not animating 【发布时间】:2013-01-30 03:47:07 【问题描述】:

我正在制作一个应用程序,并且当用户点击一个按钮时会触发一个 IBAction。代码如下:

- (IBAction)expand:(id)sender
UIImage *statusImage = [UIImage imageNamed:@"status.png"];
[activityImageView setImage:statusImage];

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 = 1;

[activityImageView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
[[NSUserDefaults standardUserDefaults]setFloat:self.conditionsImageView.bounds.size.height forKey:@"rect"];
[[NSUserDefaults standardUserDefaults]setFloat:self.conditionsImageView.bounds.origin.y forKey:@"y"];
NSURL *uuu = [NSURL URLWithString:@"http://api.wunderground.com/api/3c158b3b3cd6ce90/animatedradar/q/autoip.gif?newmaps=1&timelabel=1&smooth=1&timelabel.y=10&num=8&delay=50&width=640&height=960"];
self.conditionsImage = [UIImage animatedImageWithAnimatedGIFURL:uuu duration:8];
self.conditionsImageView.bounds = CGRectMake(0, 0, 320, self.view.bounds.size.height + 20);
self.conditionsImageView.image = conditionsImage;
exp.hidden = 0;
exp1.hidden = 1;



看,ImageView activityImageView 直到从该 url 加载另一个图像完成并且它没有动画时才会显示。有人看到任何可能导致此问题的问题吗?

【问题讨论】:

【参考方案1】:

我假设您使用的是my implementation of +[UIImage animatedImageWithAnimatedGIFURL:duration:]

此方法是同步的。在从 URL 加载所有数据之前,它不会返回。因此,当您在主线程上调用它时,您会阻塞主线程,从而阻止您的其他动画启动(并阻止任何用户交互)。

不要使用+[UIImage animatedImageWithAnimatedGIFURL:duration:],而是使用+[NSURLConnection connectionWithRequest:delegate:]+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:] 在后台从URL 加载数据。全部加载完毕后,使用+[UIImage animatedImageWithAnimatedGIFData:duration:]创建图片。

【讨论】:

谢谢。非常有用。

以上是关于iOS UIImageView 没有动画的主要内容,如果未能解决你的问题,请参考以下文章

iOS UIImageView 没有动画

ios UIImageView处理图片大小问题

UIImageView 中的 iOS 11 动画 gif 显示

将 UIImageView 和覆盖的 UIView 保存为图像(xcode/iOS)

iOS标签可见性切换没有动画

需要在 iOS 中使用 UIPanGestureRecognizer 将 UIImageView 的移动限制在 UITableView 覆盖的区域