したがって、私のアプリケーションでは、現在のビュー(classesWebView)の上にビュー(aView)をサブビューとして追加します。すべてのaViewは、その上にUIActivityIndicatorViewを備えたUIViewであり、その下のビュー(classesWebView)が適切なWebページをロードしている間にアニメーション化することになっています。
classesWebView Webページが表示されていることがわかります(aViewのアルファ値は.5です)が、ロードが完了するとすぐにaViewが送信され[aView removeFromSuperview]消えますが、消えると残りはすべてです。その場所に白い画面があります。
私は他の2つの方法でこれを行いましたが、なぜこの方法だけで協力を拒否するのかわかりません。
任意の提案をいただければ幸いです。アプリはiOS6用です。
viewDidLoadメソッド:
-(void)viewDidLoad
{
[super viewDidLoad];
classesWebView.delegate = self;
[classesWebView addSubview:aView];
NSURL *class = [NSURL URLWithString:@"mywebistelink"];
NSURLRequest *classRequest = [NSURLRequest requestWithURL:class];
[classesWebView loadRequest:classRequest];
}
webViewDidStartLoadメソッド:
preViewとswitchViewはアクティビティインジケーターです。
- (void)webViewDidStartLoad:(UIWebView *) webview
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
if(aView.superview != nil)
{
[preView startAnimating];
}
else
{
[switchView startAnimating];
}
}
webViewDidFinishLoadメソッド:
- (void)webViewDidFinishLoad:(UIWebView *) webview
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
if(aView.superview != nil)
{
[aView removeFromSuperview];
[preView stopAnimating];
[preView setOpaque:false];
}
else
{
[switchView stopAnimating];
[switchView setOpaque:false];
}
}
[さらに明確にする:ifステートメントがある理由は、ページをロードするときにclassesWebViewに別のインジケーターが必要だが、aViewがなくなるまで表示したくないためです(aViewには既にインジケーターがあります:preView)]
編集:問題を引き起こしているのはremoveFromSuperviewだけであることを証明するために、[aView setAlpha:0.0]を呼び出すと、それが消え、その下のwebPageが正しく読み込まれます。しかし、私が[aView removeFromSuperview]と呼ぶ2番目のWebページは、白い画面に変わります。T_T