如何在iPhone应用程序中导航时实现加载动画?

时间:2009-07-16 11:13:04

标签: iphone animation

这似乎是一个非常简单的问题,但我一直无法找到任何好的答案。

我正在尝试做的是在加载某些功能时制作某种动画。我在等待内容时已经在webapp中包含了一个动画.gif文件,但在本机导航时我需要相同的功能。例如,当我按下标签栏中的按钮时,屏幕只是空白,直到加载整个页面。

它不需要任何花哨的东西。我喜欢在Facebook应用程序中使用臭名昭着的“旋转轮”解决这个问题的方式。

提前致谢!

7 个答案:

答案 0 :(得分:26)

您可以将UIActivityIndi​​catorView作为子视图添加到视图中,当操作结束时,您可以将其从superview中删除...

UIActivityIndicatorView  *av = [[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease];
av.frame=CGRectMake(145, 160, 25, 25);
av.tag  = 1;
[yourView addSubview:av];
[av startAnimating];

删除它

UIActivityIndicatorView *tmpimg = (UIActivityIndicatorView *)[yourView viewWithTag:1];
[tmpimg removeFromSuperview];
希望它有所帮助...

答案 1 :(得分:4)

你的问题是活动指示器不会显示,因为它只会在下一次运行循环中显示 - 到那时你将完成所需的一切!

这样做非常非常简单的方法是移动你的代码,将下一个视图调用到自己的方法中(然后根据其他帖子构建一个UIActivityIndi​​cator)

[self.myactivityindicator startAnimating];
[self performSelector:@selector(myCodeToCallTheView) withObject:nil afterDelay:0];

这使得在运行代码之前绘制指标的机会足以绘制视图。当然,一旦出现新视图,它将覆盖选择器。

答案 2 :(得分:3)

您可以将UIActivityIndicatorView添加到“正在加载”的视图中:

CGRect mainBounds = [[UIScreen mainScreen] bounds];
CGRect indicatorBounds = CGRectMake(mainBounds.size.width / 2 - 12,
    mainBounds.size.height / 2 - 12, 24, 24);
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc]
    initWithFrame:indicatorBounds]];
indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
[indicator startAnimating];
[yourLoadingView addSubview:indicator];

答案 3 :(得分:3)

阿公顷!我偶然发现了一个大多数方便的课程:MBProgressHUD。试试看。我相信它会做你想要的,然后是一些。

我还在作者的博客评论中提供了一些mod。

答案 4 :(得分:1)

我想这取决于正在加载的是什么?你在等待服务器的响应吗?在这种情况下,我通常在我的视图上放置一个旋转轮(UIActivityIndi​​catorView),当没有设置动画复选框时隐藏它(有一条消息要以编程方式设置)。然后,当从服务器接收数据时,我只需在UIActivityIndi​​cator视图上调用stopAnimating,它就会隐藏。然后,您可以显示您需要显示的内容。

答案 5 :(得分:1)

在美学上,注意UIActivityIndicatorView附带了几种内置样式供您选择。上面的代码示例使用了Gray和White选项,但Apple的文档中还有其他几个。您可以使用以下方式设置样式:

-initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyle)

或设置对象的activityViewIndicatorStyle属性。

答案 6 :(得分:1)

您需要为动画的开始和结束之间需要完成的工作实现新线程。 见如下:
http://discussions.apple.com/thread.jspa?threadID=1531358&start=0&tstart=0