次のコードは、iOS 5 から 6.1 まで完全に機能します。私はそのコードでストアにアプリケーションさえ持っています:
-(void)showActivityIndicator
{
if(!mLoadingView) //
{
mLoadingView = [[UIAlertView alloc] initWithTitle:@"" message:@"" delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
mLoadingView.tag = kAlertViewTag;
}
[mLoadingView show];
}
- (void)willPresentAlertView:(UIAlertView *)alertView
{
if (alertView.tag == kAlertViewTag)
{
UIActivityIndicatorView *actInd = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
actInd.frame = CGRectMake(128.0f, 45.0f, 25.0f, 25.0f);
[alertView addSubview:actInd];
[actInd startAnimating];
UILabel *l = [[UILabel alloc]init];
l.text = NSLocalizedString(@"PRODUCT_PURCHASE_INDICATOR_TITLE", @"Please wait...");
l.font = [UIFont fontWithName:@"Helvetica" size:16];
float strWidth = [l.text sizeWithFont:l.font].width;
float frameWidth = alertView.frame.size.width;
l.frame = CGRectMake((frameWidth - strWidth)/2, -25, 210, 100);
l.textColor = [UIColor whiteColor];
l.shadowColor = [UIColor blackColor];
l.shadowOffset = CGSizeMake(1.0, 1.0);
l.backgroundColor = [UIColor clearColor];
[alertView addSubview:l];
}
}
ボタンなし、アクティビティ インジケーターとラベル付きのアラート ビューが表示されます。ただし、iOS7 では、白い角丸長方形のみが表示され、アクティビティ インジケーターは表示されません。
これを iOS 5 から 7 まで動作させるにはどうすればよいですか?
アップデート:
よりわかりやすくするために、スクリーンショットを追加しています。以下は iOS 5 から 6.1 のスクリーンショットです。そこでうまくいきます。
以下はiOS7です。ご覧のとおり、サイズも小さくなっています。完全に初期化されていないようです。