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 UI何时准备好开始设置UIActivityIndicatorView的动画?_Iphone_Cocoa Touch - Fatal编程技术网

Iphone UI何时准备好开始设置UIActivityIndicatorView的动画?

Iphone UI何时准备好开始设置UIActivityIndicatorView的动画?,iphone,cocoa-touch,Iphone,Cocoa Touch,我尝试在我的应用程序开始时启动UIActivityIndicatorView,但它没有动画效果 我的根视图控制器中的代码: - (void)viewDidLoad { [super viewDidLoad]; UIActivityIndicatorView *v = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; [se

我尝试在我的应用程序开始时启动UIActivityIndicatorView,但它没有动画效果

我的根视图控制器中的代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIActivityIndicatorView *v = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

    [self.view addSubview:v];
    [v startAnimating];
}
不会旋转。我尝试了
视图将出现
/
视图显示
,但没有更好

如果我执行
性能选择器:withObject:afterDelay:
,当我达到大约4或5秒的延迟时,它就会工作。。。好像UIKit中有未初始化的东西

有人有主意吗

更新: 我可以想等多久就等多久->它永远不会开始旋转(所以不会在主线程上花费时间并阻止旋转)。实际上,我从AppDelegate
didFinishLaunchingWithOptions
方法中删除了几乎所有内容。不再有RestKit init,不再有PushNotification注册。仅ViewController初始化。而那些ViewController什么也不做

但我能做的是: 在界面上添加一个不做任何事情的虚拟按钮(无IBAction无iBaOutlet nothing),只需在iPhone上触摸它即可。它先高亮显示,然后正常显示。但当我一触到它(甚至在我离开屏幕表面之前),纺车就开始旋转


这里发生了什么事?

刚刚尝试了你的代码,它立即为我设置了动画。你是否在应用程序打开后立即同步加载任何内容?这可能会导致延迟。

刚刚尝试了您的代码,它会立即为我设置动画。你是否在应用程序打开后立即同步加载任何内容?这可能会导致延迟。

我认为您正在使用此代码,因为当您的应用程序加载时,它会执行一些需要一段时间的操作。如果它在主线程上执行此操作(除非您另有指定,否则应该如此),则在执行该任务时,您的用户界面将变得无响应,包括冻结所有动画。要将任务推到另一个线程,必须使用苹果的Grand Central Dispatch(GCD)。要做到这一点,请使用以下方法:

dispatch_queue_t myLongTaskQueue = dispatch_queue_create("AnyIdentifyingText", NULL);
dispatch_async(myLongTaskQueue, ^{

     //perform the long task

});
然后,如果在长任务中的某个地方您必须更新UI,请确保在主线程中使用以下命令来更新UI:

dispatch_async(dispatch_get_main_queue(), ^{

    //perform UI update

});

我认为您正在使用此代码,因为当您的应用程序加载时,它会执行一些需要一段时间的操作。如果它在主线程上执行此操作(除非您另有指定,否则应该如此),则在执行该任务时,您的用户界面将变得无响应,包括冻结所有动画。要将任务推到另一个线程,必须使用苹果的Grand Central Dispatch(GCD)。要做到这一点,请使用以下方法:

dispatch_queue_t myLongTaskQueue = dispatch_queue_create("AnyIdentifyingText", NULL);
dispatch_async(myLongTaskQueue, ^{

     //perform the long task

});
然后,如果在长任务中的某个地方您必须更新UI,请确保在主线程中使用以下命令来更新UI:

dispatch_async(dispatch_get_main_queue(), ^{

    //perform UI update

});

找到了!跟踪此问题1.5天后

嵌入NavigationController中的My MainViewController在其
viewDidLoad
中显示活动指示器

碰巧在同一个
viewdiload
中,我在NavigationController上推了一些启动屏幕,它不知怎么搞砸了视图

在我的SplashViewController
doFlip
方法中,我使用了(延迟约2秒后自动调用):

现在使用

[UIView transitionFromView:splashVC.view
                    toView:mainVC.view
                  duration:0.75 
                   options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionTransitionFlipFromLeft
                completion:nil];

[navController popViewControllerAnimated:NO]; 

很抱歉“太具体了”,谢谢大家的帮助。

找到了!跟踪此问题1.5天后

嵌入NavigationController中的My MainViewController在其
viewDidLoad
中显示活动指示器

碰巧在同一个
viewdiload
中,我在NavigationController上推了一些启动屏幕,它不知怎么搞砸了视图

在我的SplashViewController
doFlip
方法中,我使用了(延迟约2秒后自动调用):

现在使用

[UIView transitionFromView:splashVC.view
                    toView:mainVC.view
                  duration:0.75 
                   options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionTransitionFlipFromLeft
                completion:nil];

[navController popViewControllerAnimated:NO]; 

抱歉“太具体了”,谢谢大家的帮助。

你不需要给它一个框架吗?我将代码简化为基本的。。。在这里,它将在左上角,但这并不重要。看起来,只是它不旋转。你不需要给它一个框架吗?我把代码简化为基本的。。。在这里,它将在左上角,但这并不重要。它看起来不旋转,我知道。正常情况下没关系。但是在PushNotification、RestKit init等之间。。。也许某处发生了什么事。但是我在Xcode中暂停了一下,并在主线程上检查了正在发生的事情。似乎没什么。。。但我今天会再检查一遍。谢谢,我知道。正常情况下没关系。但是在PushNotification、RestKit init等之间。。。也许某处发生了什么事。但是我在Xcode中暂停了一下,并在主线程上检查了正在发生的事情。似乎没什么。。。但我今天会再检查一遍。谢谢