【问题标题】:iOS SDK Making webview fade out when loadingiOS SDK加载时让webview淡出
【发布时间】:2026-01-07 07:05:02
【问题描述】:

在加载时淡出 webview 以确保人们知道它的加载的最佳方法是什么?

【问题讨论】:

    标签: iphone ios sdk ios4 uiwebview


    【解决方案1】:

    使用自定义的UIView,它是一种半透明的灰色,并将其显示在 UIWebView 的顶部。这个 UIView 的控制器应该是UIWebView 的委托,因此它知道何时完成加载,然后可以自行关闭。编辑:这也使您能够使用自己的UIActivityViewIndicator(纺车)放置在任何您喜欢的位置,比共享的状态栏更突出。

    或者,您可以将UIAlertView 子类化并取出背景图像(那个蓝色框),然后在加载时取出show 这个UIAlertView

    编辑教程链接:Tutorial Link 是一个教程,告诉你如何做到这一点(方法 1)

    【讨论】:

      【解决方案2】:

      您可以通过更改动画序列中的 alpha 来淡化 webview。

      [UIView beginAnimations:nil context:NULL];
      [UIView setAnimationDuration:2.0];
      myWebView.alpha = 0.0;
      [UIView commitAnimations];
      

      让用户知道正在加载的 webview 的首选方法是networkActivityIndicator

      #pragma mark -
      #pragma mark WebvView Delegates
      
      -(void)webViewDidStartLoad:(UIWebView *)webView {
          UIApplication* app = [UIApplication sharedApplication];
          app.networkActivityIndicatorVisible = YES; // to stop it, set this to NO
      }
      
      -(void)webViewDidFinishLoad:(UIWebView *)webView {
          UIApplication* app = [UIApplication sharedApplication];
          app.networkActivityIndicatorVisible = NO; // to stop it, set this to NO
      }
      
      -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
          UIApplication* app = [UIApplication sharedApplication];
          app.networkActivityIndicatorVisible = NO; // to stop it, set this to NO
      }
      

      【讨论】:

        【解决方案3】:

        您可以在视图上放置一个黑色且不透明度为 20% 的视图以使其变暗(这样做的好处是用户与下面的 web 视图的交互将被禁用)

        【讨论】:

          【解决方案4】:

          为什么要淡出,为什么不直接使用UIActivityIndicator?还是使用共享的?如果你真的想淡出它,你总是可以创建一个UIView,将背景颜色设置为黑色,alpha 为 0.5。然后在加载时将其添加到您的 UIWebView 之上,完成后将其删除。

          【讨论】: