3

アクティビティインジケーターとアクティビティインジケーターの下部表示を開始するゲームを作成します。テキスト付きのUiLableは次のとおりです。- 2秒後の準備完了テキストは次のとおりです。-2秒後のテキストの設定と後:-移動します。

今、私はこれを表示するために3つの異なるアラートを使用しています。

1つのアラートだけでこれを行うことはできますか

4

3 に答える 3

0
UIAlertView *processview;
UILabel *lbl;
NSTimer *enableTimer;
int count;

- (void)enableTimerFired:(NSTimer *)timer
{
    switch (count)
    {
        case 1:
            [lbl setText:@"Ready"];
        break;

        case 2:
            [lbl setText:@"Set"];
        break;

        case 3:
            [lbl setText:@"Go"];
        break;

        case 4:
            [enableTimer invalidate];
            enableTimer = nil;
            [processview dismissWithClickedButtonIndex:-1 animated:YES];
        break;

        default:
        break;

    }
    count++;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    processview =  [[UIAlertView alloc] initWithTitle:@"\n" message:@"\n\n" delegate:self cancelButtonTitle:nil otherButtonTitles: nil] ;

    lbl = [[UILabel alloc] initWithFrame:CGRectMake(100, 10, 90, 30)];
    [lbl setText:@"Ready"];
    [lbl setBackgroundColor:[UIColor clearColor]];
    [lbl setTextColor:[UIColor whiteColor]];
    [lbl setTextAlignment:NSTextAlignmentCenter];
    [processview addSubview:lbl];

    UIActivityIndicatorView *largeActivity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    [largeActivity setFrame:CGRectMake(120, 75, 50, 50)];
    [largeActivity startAnimating];

    [processview addSubview:largeActivity];
    [processview show];

    enableTimer = [[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(enableTimerFired:) userInfo:nil repeats:YES] retain];
    count = 1;
}
于 2013-03-26T10:12:14.583 に答える
0

このタイプのアラートが必要だと思いますここに画像の説明を入力してください

これを行うにはこれを試してください

IN.hファイル

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
    IBOutlet UILabel *Lable;
    NSTimer *Timer1;
    NSTimer *Timer2;
    UIActivityIndicatorView *Process;
    UIAlertView *Game;
}
-(IBAction)start:(id)sender;

@end

IN.Mファイル

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
int i;

- (void)viewDidLoad
{
    [super viewDidLoad];
}
-(IBAction)start:(id)sender
{
    i=0;
    Game=[[UIAlertView alloc]initWithTitle:@"Please Wait" message:@"\n" delegate:self cancelButtonTitle:nil otherButtonTitles: nil];
    Process=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    Process.frame=CGRectMake(129, 50, 30, 27);
    [Process startAnimating];


    Lable=[[UILabel alloc]initWithFrame:CGRectMake(102, 80, 80, 30)];
    Lable.text=@"Ready";
    Lable.backgroundColor=[UIColor clearColor];
    Lable.textColor=[UIColor whiteColor];
    Lable.textAlignment= UITextAlignmentCenter;
    [Game addSubview:Lable];
    [Game addSubview:Process];
    [Game show];
    Timer1 = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(Change) userInfo:nil repeats:NO];
}
-(void)Change{
    Timer2 = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(Change) userInfo:nil repeats:NO];
    if (i==0)
        Lable.text=@"Set";
    else
        Lable.text=@"Go";

    i++;
    if (i==3) {
        [Timer2 invalidate];
        Timer2=nil; 
        [Process stopAnimating];
        [Game dismissWithClickedButtonIndex:0 animated:YES];

    }
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end
于 2013-03-26T11:11:32.713 に答える
0

SVProgressHUDをダウンロードします。これにより、2〜3行のコードで処理されます。非常にうまく機能します(変更可能なメッセージがない場合があります。その場合は、以下のMBProgressHUDを試してください)

https://github.com/samvermette/SVProgressHUD

プロセスの途中でメッセージを変更できるMBprogressHUDもありますが、アプリでいくつかの小さな問題が発生することがわかりました。

https://github.com/jdg/MBProgressHUD

于 2013-03-26T13:15:46.040 に答える