アクティビティインジケーターとアクティビティインジケーターの下部表示を開始するゲームを作成します。テキスト付きのUiLableは次のとおりです。- 2秒後の準備完了テキストは次のとおりです。-2秒後のテキストの設定と後:-移動します。
今、私はこれを表示するために3つの異なるアラートを使用しています。
1つのアラートだけでこれを行うことはできますか
user2197886
質問する
219 次
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もありますが、アプリでいくつかの小さな問題が発生することがわかりました。
于 2013-03-26T13:15:46.040 に答える