最初の起動時に、アプリはデータベースのハウスキーピングを処理します。しばらく時間がかかるため、スピナーと何が起こっているかをユーザーに知らせるラベルを備えた半透明のビューを追加しました。
この半透明のビューを他のすべての上に表示するために、self.view.window のサブビューとして追加しました。コード全体は次のようになります。
-(void)housekeepDataBase{
self.searchOptionsControl.hidden=TRUE;
self.searchBar.hidden=TRUE;
UIView *translucentView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.window.frame.size.width, self.view.window.frame.size.height)];
translucentView.backgroundColor=[UIColor blackColor];
translucentView.alpha=0.65;
UILabel *activityLabel=[[UILabel alloc]initWithFrame:CGRectMake((self.view.center.x-140), (self.view.frame.size.width*0.75), 280, 20)];
activityLabel.numberOfLines=1;
activityLabel.textAlignment=UITextAlignmentCenter;
activityLabel.font=[UIFont fontWithName:@"Arial" size:20.0];
activityLabel.text=@"Cleaning up database";
activityLabel.textColor=[UIColor whiteColor];
activityLabel.backgroundColor=[UIColor clearColor];
UILabel *activityLabel2=[[UILabel alloc]initWithFrame:CGRectMake((self.view.center.x-140), (self.view.frame.size.width*0.75+40), 280, 20)]; activityLabel2.numberOfLines=1;
activityLabel2.textAlignment=UITextAlignmentCenter;
activityLabel2.font=[UIFont fontWithName:@"Arial" size:16.0];
activityLabel2.text=@"(It might take a while)";
activityLabel2.textColor=[UIColor whiteColor];
activityLabel2.backgroundColor=[UIColor clearColor];
UIActivityIndicatorView *spinner=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
spinner.frame=CGRectMake((self.view.center.x-50), (self.view.frame.size.width*0.50), 100, 37);
[spinner startAnimating];
[self.view.window addSubview:translucentView];
[self.view.window addSubview:spinner];
[self.view.window addSubview:activityLabel];
[self.view.window addSubview:activityLabel2];
// dealing with the DB
}
残念ながら、これらのビュー (ビュー、スピナー、ラベル) がデバイスの向きに応じて回転しません。
それで、質問は次のとおりです。これを処理する他の方法はありますか?回転またはビューの追加のどちらですか? 私が望むのは、半透明のビューを画面上部のナビゲーションバーの上と、下部のツールバーの上に表示することです。
何か案は?前もって感謝します!