iOS: Set setImageInputs of image slideshow to array of images

前端 未结 2 1670
挽巷
挽巷 2021-01-25 20:26

I\'m using an image slideshow from here:

    iconArr = [UIImage(named: \"home-min\")!,UIImage(named: \"category-
   min\")!,UIImage(named: \"settings-min\")!,UI         


        
相关标签:
2条回答
  • 2021-01-25 21:07

    I found a solution from this url [https://stackoverflow.com/a/50461970/5628693][1]

    Below is my code working fine :

     var imageSDWebImageSrc = [SDWebImageSource]()
    @IBOutlet weak var slideshow: ImageSlideshow!
    

    Add below viewDidLoad()

     slideshow.backgroundColor = UIColor.white
        slideshow.slideshowInterval = 5.0
        slideshow.pageControlPosition = PageControlPosition.underScrollView
        slideshow.pageControl.currentPageIndicatorTintColor = UIColor.lightGray
        slideshow.pageControl.pageIndicatorTintColor = UIColor.black
        slideshow.contentScaleMode = UIViewContentMode.scaleAspectFill
    
        // optional way to show activity indicator during image load (skipping the line will show no activity indicator)
        slideshow.activityIndicator = DefaultActivityIndicator()
        slideshow.currentPageChanged = {
            page in
            print("current page:", page)
        }
    
        let recognizer = UITapGestureRecognizer(target: self, action: #selector(Dashboard.didTap))
        slideshow.addGestureRecognizer(recognizer)
    } // now add below func 
    @objc func didTap() {
        let fullScreenController = slideshow.presentFullScreenController(from: self)
        // set the activity indicator for full screen controller (skipping the line will show no activity indicator)
        fullScreenController.slideshow.activityIndicator = DefaultActivityIndicator(style: .white, color: nil)
    }
    

    And last step i was getting json data from below alamofire request

      Alamofire.request(url, method: .post, parameters: data, encoding: JSONEncoding.default).responseJSON { response in
       if(response.value == nil){
            }
       else {
            let json2 = JSON(response.value!)
            switch response.result {
            case .success:
                self.indicator.stopAnimating()
    
                if let details = json2["imgs"].array {
                    for dItem in details {
    
                       let  img = dItem["img"].stringValue
    
                       let image = SDWebImageSource(urlString: self.imgurl+img)
                        self.imageSDWebImageSrc.append(image!)
                    }
                 self.slideshow.setImageInputs(self.imageSDWebImageSrc)
                }
                break
            case .failure( _):
    
                break
    
            }
        }
        }
    

    Thanks dude :) happy coding

    0 讨论(0)
  • 2021-01-25 21:10

    you should try this way for sure, because you reset inputs in your for-loop

    var imageSource: [ImageSource] = []
    for image in self.iconArr {
        let img = image
        imageSource.append(ImageSource(image:  img))
    }
    self.SlideShow.setImageInputs(imageSource)
    

    As sooper stated, can be done this way

    let imageSources = self.iconArr.map { ImageSource(image: $0) } 
    
    0 讨论(0)
提交回复
热议问题