【问题标题】:UIActivityIndicatorView, display during image download on current viewUIActivityIndi​​catorView,在当前视图下载图片时显示
【发布时间】:2011-05-11 02:18:44
【问题描述】:

我有一个按钮,当按下它时,它会从网上下载几张图片,以便在另一个视图中显示它们。然而,此刻,当我按下按钮时,按钮进入突出显示状态,并且在图像下载时似乎卡在那里(基本上准备下一个视图)。我并不担心按钮卡在突出显示模式(实际上我更喜欢这种方式)。

但是,我希望 UIActivityView 显示在显示按钮的视图上,同时加载下一个视图(并且图像是从网络下载的,因为这需要一段时间)......如何我开始在逻辑上实现这个?

谢谢,

杰克

【问题讨论】:

  • 你是如何下载图片的?

标签: iphone objective-c ios view uiactivityindicatorview


【解决方案1】:

我假设您正在使用 NSURLConnection 连接和下载图像?如果是这种情况,您可能希望使用这样的方法:

在 IB 中,将 UIActivityIndi​​catorView 放置在您想要的视图上,并在其属性面板中定义其样式。告诉它停止时隐藏。并确保将其与所有者头文件中的代码链接起来。

UIActivityIndicatorView *indicator;

@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *indicator;

当您创建 NSURLConnection 并开始请求时,告诉指示器以 [indicator startAnimation]; 开始动画。如果您不希望您的按钮出现在屏幕上,您可以根据需要将其从超级视图中移除。

下载完成后,您可以在 - (void)connectionDidFinishLoading:(NSURLConnection *)connection 方法中告诉指示器 [indicator stopAnimation](如果您之前已将其删除,则将按钮添加回来)。

如果您在不使用 NSURLConnection 的情况下下载图像,这当然会有所不同,但从逻辑上讲,它应该是相同的方法。虽然我同意大卫的观点,这可能应该在后台线程上完成

【讨论】:

    【解决方案2】:

    你在主线程中做了很长时间的工作。您应该更改代码,以便在后台线程中进行下载。您可以更改按钮的状态以指示下载正在进行中,但不要以这种方式阻塞主线程。

    在后台线程中,加载图片并调用主线程上的选择器,在下载更多图片时更新 UIActivtyView 以指示其进度。

    【讨论】:

      【解决方案3】:

      对于您的按钮问题,为您为正常分配的突出显示状态分配相同的图像

      UIImage *newImage12 = [UIImage imageNamed:@"yourimagename"];
      [deleteButton setBackgroundImage:newImage12 forState:UIControlStateNormal];
      [deleteButton setBackgroundImage:newImage12 forState:UIControlStateHighlighted];
      

      用于添加活动指示器

      在.h文件中

      IBOutlet UIActivityIndicatorView *indicator;
      

      制作属性

      在您的 xib 中添加指标并进行连接。

      合成并发布in.m文件

      在您的按钮上单击要显示指标的位置:-

      [indicator startAnimating];
      

      您要停止指标写入的位置

      [indicator stopAnimating];
      

      【讨论】:

        【解决方案4】:

        您可以将指标框架设置在您需要的位置; UIButton 的中心。

        您尚未指定如何下载图片,但开始下载时使用[indicator startActivity];,下载完成后使用[indicator stopActivity];

        您还可以在添加开始/停止调用的位置添加setHidden:YES / setHidden:NO

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多