Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iPhone应用程序中导航时如何实现加载动画?_Iphone_Animation - Fatal编程技术网

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

在iPhone应用程序中导航时如何实现加载动画?,iphone,animation,Iphone,Animation,这似乎是一个相当简单的问题,但我一直找不到任何好的答案 我想做的是在加载函数时制作一些动画。在等待内容时,我已经在webapp中包含了一个动画.gif文件,但在本机中导航时,我需要相同的功能。例如,当我按下选项卡栏中的一个按钮时,屏幕在加载整个页面之前一直是空白的 不需要什么花哨的东西。我喜欢在facebook应用程序中用臭名昭著的“纺车”解决这个问题的方式 提前谢谢 我想这取决于加载的是什么?您正在等待服务器的响应吗?在这种情况下,我通常在我的视图上放置一个旋转的轮子(UIActivityIn

这似乎是一个相当简单的问题,但我一直找不到任何好的答案

我想做的是在加载函数时制作一些动画。在等待内容时,我已经在webapp中包含了一个动画.gif文件,但在本机中导航时,我需要相同的功能。例如,当我按下选项卡栏中的一个按钮时,屏幕在加载整个页面之前一直是空白的

不需要什么花哨的东西。我喜欢在facebook应用程序中用臭名昭著的“纺车”解决这个问题的方式


提前谢谢

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

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


您可以将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];

希望对您有所帮助。

在美学方面,请注意,
UIActivityIndicatorView
附带了几种内置样式供您选择。上面的代码示例使用灰色和白色选项,但在苹果的文档中还有更多描述。可以使用以下命令设置样式:

-initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyle)

或者通过设置对象的
activityViewIndicatorStyle
属性。

啊哈!我刚刚偶然发现了一个最方便的类:。试试看。我确实相信它能满足你的需求,然后还有一些


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

您需要为动画开始和停止之间需要完成的工作实现一个新线程。 请参见以下内容:

您的问题是活动指示器将不会显示,因为它只会在下一次通过运行循环时显示-届时您将完成所有需要的操作

最简单的方法是将代码移动到自己的方法中调用下一个视图,然后(按照这里的其他帖子构建了UIActivityIndicator)执行

[self.myactivityindicator startAnimating];
[自执行选择器:@selector(mycdetocalltheview),对象:nil afterDelay:0];


这为在运行代码绘制视图之前绘制指示器提供了足够的机会。当然,一旦新视图出现,它将覆盖选择器。

似乎正是我要找的东西。你有这方面的示例代码吗?(在Objective-C中仍然有点生疏)如果您在interface builder中有一个视图控制器,只需将其子类化为您自己的UIViewController子类。然后将IBUIActivityIndicatorView添加到视图中。比方说IBUIActivityIndicator视图指示器;然后只需调用[indicator startAnimating]或[indicator stop animating];(我认为这是消息的正确名称。啊,对不起,我没有指定,但我没有使用IB。应用程序即将完成,所以我不想在这一点上开始使用:)我设法添加了指示器,但遗憾的是没有在我应该的时候添加。我尝试做的是在从一个页面移动到另一个页面时(在创建新的ViewController并使用NSURLRequest请求新页面时)显示此指示器。我尝试在webView.loading上进行测试,然后在这是真的时启动动画,但什么也没有发生。在加载新页面之前,屏幕仍然是白色的(是的,我已经尝试使用背景色使其可见)…如果希望指示器在当前视图中居中,可以将第二行代码更改为:
av.frame=CGRectMake(round((yourView.frame.size.width-25)/2),round((yourView.frame.size.height-25)/2), 25, 25);或者,要居中。。。[av setCenter:yourView.center];
-initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyle)
[self.myactivityindicator startAnimating]; [self performSelector:@selector(myCodeToCallTheView) withObject:nil afterDelay:0];