这似乎是一个非常简单的问题,但我一直无法找到任何好的答案。
我正在尝试做的是在加载某些功能时制作某种动画。我在等待内容时已经在webapp中包含了一个动画.gif文件,但在本机导航时我需要相同的功能。例如,当我按下标签栏中的按钮时,屏幕只是空白,直到加载整个页面。
它不需要任何花哨的东西。我喜欢在Facebook应用程序中使用臭名昭着的“旋转轮”解决这个问题的方式。
提前致谢!
答案 0 :(得分:26)
您可以将UIActivityIndicatorView作为子视图添加到视图中,当操作结束时,您可以将其从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)
你的问题是活动指示器不会显示,因为它只会在下一次运行循环中显示 - 到那时你将完成所需的一切!
这样做非常非常简单的方法是移动你的代码,将下一个视图调用到自己的方法中(然后根据其他帖子构建一个UIActivityIndicator)
[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)
我想这取决于正在加载的是什么?你在等待服务器的响应吗?在这种情况下,我通常在我的视图上放置一个旋转轮(UIActivityIndicatorView),当没有设置动画复选框时隐藏它(有一条消息要以编程方式设置)。然后,当从服务器接收数据时,我只需在UIActivityIndicator视图上调用stopAnimating,它就会隐藏。然后,您可以显示您需要显示的内容。
答案 5 :(得分:1)
在美学上,注意UIActivityIndicatorView
附带了几种内置样式供您选择。上面的代码示例使用了Gray和White选项,但Apple的文档中还有其他几个。您可以使用以下方式设置样式:
-initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyle)
或设置对象的activityViewIndicatorStyle
属性。
答案 6 :(得分:1)
您需要为动画的开始和结束之间需要完成的工作实现新线程。
见如下:
http://discussions.apple.com/thread.jspa?threadID=1531358&start=0&tstart=0