【问题标题】:Activity indicator in SDWebimage placeholderSDWebimage 占位符中的活动指示器
【发布时间】:2014-04-05 18:56:47
【问题描述】:

如何使用UIImageViewSDWebImage 占位符中设置活动指示器

【问题讨论】:

    标签: iphone ios7 uiimageview xcode5


    【解决方案1】:

    Swift 5 和 SDWebImage 5-beta

    //pod file
    pod 'SDWebImage', '~> 5.0.0-beta3'
    
    //import 
    import SDWebImage
    

    并设置指标和图像

    myImageView.sd_imageIndicator = SDWebImageActivityIndicator.gray
    myImageView.sd_setImage(with: URL(string: "http://url", completed: nil)
    

    【讨论】:

      【解决方案2】:

      斯威夫特 4

      imgView.sd_setShowActivityIndicatorView(true)
      imgView.sd_setIndicatorStyle(.gray)
      imgView.sd_setImage(with: URL(string: imageURL))
      

      测试和工作

      斯威夫特 5

      imgView.sd_imageIndicator = SDWebImageActivityIndicator.gray
      imgView.sd_setImage(with: URL(string: imageURL))
      

      【讨论】:

        【解决方案3】:

        我想为时已晚,但对于仍在寻找的人来说,这里有一个解决方案。 SDWebImage 库默认包含它。

        对我来说就像一个魅力:

        斯威夫特 3:

        imgView.setShowActivityIndicator(true)
        imgView.setIndicatorStyle(.gray)
        imgView.sd_setImage(with: URL(string: urlString), placeholderImage: UIImage(named: "placeholder"))
        

        Swift 5 更新:SDWebImage 5.x.x

        imgView.sd_imageIndicator = SDWebImageActivityIndicator.gray
        imgView.sd_setImage(with: URL(string: urlString), placeholderImage: UIImage(named: "placeholder"))
        

        【讨论】:

        • 我正在使用 SDWebImage 5.0.2。不幸的是它没有这些方法
        • 请查找更新。如果它适合你,请投票。谢谢
        【解决方案4】:

        SdWebImage 5.0

        YOUR_IMAGEVIEW.sd_imageIndicator = SDWebImageActivityIndicator.gray
        YOUR_IMAGEVIEW.sd_imageIndicator?.startAnimating()
        

        【讨论】:

          【解决方案5】:
              extension UIViewController{
          
              func setUpBackGroundImage (imageUrl : String,finish: @escaping ((image:UIImage, error:Error?)) -> Void){
              let networkIndicator = UIActivityIndicatorView()
              var result:(image:UIImage, error:Error?) = (image:UIImage(imageLiteralResourceName: "game_bg"),error :nil)
              networkIndicator.center = view.center
              networkIndicator.style = .whiteLarge
              networkIndicator.startAnimating()
              view.addSubview(networkIndicator)
              if imageUrl != ""{
                  SDWebImageManager.shared.loadImage(
                      with: URL(string: imageUrl),
                      options: .highPriority,
                      progress: nil) { (image, data, error, cacheType, isFinished, imageUrl) in
                          print(isFinished)
                          networkIndicator.stopAnimating()
                          networkIndicator.removeFromSuperview()
                           if (error != nil) {
                              result.error = error!
                           }else{
                              result.image = image!
                          }                    
                      finish(result)
                    }
                }
              }
           }
          

          用法:

               setUpBackGroundImage(imageUrl: backgroundImageURL, finish: { (arg0) in
                  let (image, error) = arg0
                  DispatchQueue.main.async {
                      if (error != nil) {
                          self.backgroundImageView.image = UIImage(named: "game_bg")
                      } else {
                          self.backgroundImageView.image = image
                      }
                  }
              })
          

          【讨论】:

            【解决方案6】:

            [indicator startAnimating];//指示器开始动画

                //Load image
            [imageView setImageWithURL:imageURL placeholderImage:[UIImage imageNamed:@"placeholder.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) 
                {
            
                     [indicator stopAnimating]; //indicator stop animating after image load
            
                }];
            

            【讨论】:

            • 指标应该放在哪里?
            • 使用 uiimageview 上的指示器。
            • [_newsimage addSubview:activityIndi​​cator]; [_newsimage setImageWithURL:imageURL placeholderImage:[UIImage imageNamed:@"placeholder.png"] 完成:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { [activityIndi​​cator stopAnimating]; }]; // 我正在尝试这样做!
            【解决方案7】:

            这是添加活动指示器的简单方法。您还可以在代码下方更改指标检查的颜色

            import SDWebImage
            

            imageView.sd_imageIndicator = SDWebImageActivityIndi​​cator.gray imgProfileOnTop.sd_setImage(with: URL(string: obj?.profileImg ?? ""), placeholderImage: UIImage(name:"placeholderImage"))

            【讨论】:

            • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-10-23
            • 2016-05-23
            • 1970-01-01
            相关资源
            最近更新 更多