【问题标题】:How can I display a waiting progress bar before the application started on an IPhone如何在 iPhone 上启动应用程序之前显示等待进度条
【发布时间】:2012-03-28 06:51:55
【问题描述】:

启动我在 iPhone 上编写的应用程序需要很长时间。我希望显示一个等待进度条来指示启动进度的百分比。谁能帮我?我是IOS开发新手。

【问题讨论】:

    标签: ios cocoa-touch progress-bar


    【解决方案1】:

    你不能。 需要先启动应用程序,然后才能显示任何动态内容。 在您的第一个 ViewController 加载后,您当然可以显示一个进度条并进行加载。 在此之前,您只能显示静态图像 Def​​ault.png & Default@2x.png。 如果您将繁重的加载延迟到 -[ViewController viewDidLoad]-method 完成之后,您可以在执行繁重的工作时显示任何类型的 GUI。

    编辑: 此示例将在您的 viewDidLoad 中分离一个新线程并执行一些繁重的工作(在本例中睡眠 1 秒)并更新 UIProgressView 并在睡眠 10 次时记录进度,每次将 progressview 递增 0.1。

    - (void)viewDidLoad
    {
     // .....
       [NSThread detachNewThreadSelector:@selector(workerBee) toTarget:self withObject:nil];
    }
    
    - (void)workerBee
    {
        NSAutoreleasePool* workerPool = [[NSAutoreleasePool alloc] init];
    
        // Put your image loading between this line and [workerpool release]
    
        for (float i = 0; i<1; i+= 0.1)
        {
            [self performSelectorInBackground:@selector(updateProgress:) withObject:[NSNumber numberWithFloat:i]];
            sleep(1000);
        }
        [workerPool release];
    }
    
    - (void)updateProgress:(NSNumber*)number
    {
        NSLog("Progress is now: %@", number);
        [progressView setProgress:[number floatValue]];
    }
    

    【讨论】:

    • 我们选择将进度条作为后台线程而不是睡眠/繁重的工作是否有原因?我猜想反过来会更好
    【解决方案2】:

    在第一个屏幕中放置一个加载栏,并在显示后在另一个线程中启动计算量大的代码。

    【讨论】:

    • 第一个屏幕是什么?我是否在 viewDidLoad mot hod 中初始化它?
    • 第一个屏幕是作为UIWindow 的子视图添加到您的应用程序委托中的application:didFinishLaunchingWithOptions: 方法中的屏幕。其余的你可以查看@sveinungkb 的答案。
    • 我使用启动图像功能显示静态图像 Def​​ault.png。我可以将加载栏放在 application:didFinishLaunchingWithOptions: 方法中吗?我试试,可是我看不到吧?如何将其更改为静态默认图像的顶部?
    • 您只能更改启动图像,不能添加任何其他内容。在application... 方法中,您必须将进度条添加为您显示的第一个视图的子视图。
    • 创建一个视图控制器,以 UIImageView(将 Default.png 设置为图像)为背景,顶部为 UIProgressView。然后,用户将简要看到 Default.png,然后是 Default.png,顶部有一个进度条,您可以在加载图像时对其进行更新(请参阅上面答案中的示例)。
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多