Столкнувшись с проблемой в реализации слайд-изображения с UIImageView с использованием UISlider в Swift - PullRequest
0 голосов
/ 02 апреля 2020

Я новичок в Swift, и у меня возникла проблема с реализацией Auto Scroll с использованием UISlider. Я не могу повторить изображение после окончания массива. И когда я нажимаю кнопку Далее или Perivious, кнопка Авто Слайдер не работает. Мой код выглядит так:

override func viewDidLoad() {
        super.viewDidLoad()

        Image = UserDefaults.standard.string(forKey: "MultipleImage") ?? ""
        titleBuzz = UserDefaults.standard.string(forKey: "title") ?? ""
        descriptionBuzz = UserDefaults.standard.string(forKey: "desc") ?? ""

        let fullNameArr = Image.components(separatedBy: ",")
        print(fullNameArr)

        lblTitle.text = titleBuzz
        lbldescription.text = descriptionBuzz


        for (index, element) in fullNameArr.enumerated() {
            print("get Index \(index): getString \(element)")
            let url = NSURL(string:element ?? "")
            if !(url?.absoluteString == "") {
                let data = NSData(contentsOf: url! as URL) //make sure your image in this url does exist, otherwise unwrap in a if let check
                if !(data?.isEmpty ?? true){
                    newarray.append(UIImage(data: data! as Data) ?? UIImage (named: "Default.jpeg")!)
                }else{
                    newarray.append(UIImage (named: "Default.jpeg")!)
                }
            }
        }
        print(newarray)

        if newarray.count > 0{
            imgView.image = newarray[0]
        }

        self.sliderView.maximumValue = Float(newarray.count - 1)
        self.sliderView.minimumValue = 0
        self.sliderView.isContinuous = true


        gameTimer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(runTimedCode), userInfo: nil, repeats: true)


       // self.sliderView.maximumValue = Float(newarray.count - 1)

        // Do any additional setup after loading the view.
    }

 @objc func runTimedCode(timer: Timer) {

        var index = Float(self.sliderView.value + 1)   // increase by 1
        self.sliderView.setValue(index, animated: true)
        print("index \(index)")
        imgView.image = newarray[Int(sliderView.value)]
        if self.sliderView.value >= self.sliderView.maximumValue {
              timer.invalidate()
        }
    }
 @IBAction func btnPreviousClick(_ sender: Any) {
        sliderView.value -= 1
        if sliderView.value >= 0 && newarray.count>0{
            imgView.image = newarray[Int(sliderView.value)]
        }
    }

    @IBAction func btnNextClick(_ sender: Any) {
        sliderView.value += 1
         if sliderView.value >= 0 && newarray.count>0{
            imgView.image = newarray[Int(sliderView.value)]
        }
    }

    @IBAction func SliderViewClick(_ sender: UISlider) {
        var value = Int(sender.value)
        imgView.image = newarray[value]
    }

Мой код работает с автопрокруткой, но он не повторяется с самого начала. Я хочу запустить его заново, как только он это сделает, и он также должен работать со следующей и предыдущей кнопками.

Пожалуйста, помогите! Заранее спасибо!

...