私のアプリケーションでは、サーバーからデータを受信しています。このデータを使用してテーブルビュー(MasterViewController)に入力し、このテーブルの項目の1つを選択すると、DetailViewControllerに詳細情報が表示されます。これらの情報は、アプリケーションを起動するたびに、またはユーザーが更新ボタンを押したときに読み込まれます。
サーバーからデータを受信している間、UIActivityIndicatorViewと「Loading...」というラベルを含むビューを表示したいのですが。これは、アプリケーションをポートレートモードで起動または更新したときに、問題なく機能します。しかし、横向きモードで同じことを試してみると、ビューのサイズが正しくありません。
ビューをロードするために使用しているコードは次のとおりです。
+ (SpinnerView *)loadSpinnerViewIntoView:(UIView *)superView {
SpinnerView *spinnerView = [[SpinnerView alloc] initWithFrame:superView.bounds];
if (!spinnerView)
return nil;
UIImageView *background = [[UIImageView alloc] initWithImage:[spinnerView addBackground]];
background.alpha = 0.7;
[spinnerView addSubview:background];
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicator.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin;
indicator.center = superView.center;
[spinnerView addSubview:indicator];
[indicator startAnimating];
CGSize maximumLabelSize = CGSizeMake(296, 9999);
CGSize expectedLabelSize = [[NSString stringWithString:@"Loading..."] sizeWithFont:[UIFont boldSystemFontOfSize:25.0f] constrainedToSize:maximumLabelSize];
UILabel *loadingLbl = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, expectedLabelSize.width, expectedLabelSize.height)];
loadingLbl.text = @"Loading...";
loadingLbl.font = [UIFont boldSystemFontOfSize:25.0f];
loadingLbl.autoresizingMask = UIViewAutoresizingFlexibleWidth;
loadingLbl.backgroundColor = [UIColor clearColor];
loadingLbl.textColor = [UIColor whiteColor];
loadingLbl.center = CGPointMake(superView.center.x, superView.center.y - indicator.frame.size.height - 25);
[spinnerView addSubview:loadingLbl];
[superView addSubview:spinnerView];
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionFade];
[[superView layer] addAnimation:animation forKey:@"layerAnimation"];
return spinnerView;
}
これは、データの更新を開始したときにMasterViewControllerから呼び出されます。
spinner = [SpinnerView loadSpinnerViewIntoView:self.splitViewController.view];
SpinnerViewは、ロードされるという点でビューと同じ境界を取得します。横向きモードで正しく表示されない理由がよくわかりません。私の問題が理解でき、誰もが私を助けてくれることを願っています。
前もって感謝します