Swift 2.0 - 使用手势滑动循环播放阵列中的5个图像

时间:2016-01-19 18:44:54

标签: arrays xcode swift uiimage swift2

我是Swift的新手,一般编程和stackoverflow。

我有5个图像的数组,我想通过手势滑动来循环。从第一个开始,到第五个结束,然后让它再次返回第一个,能够一遍又一遍地循环通过1-5。

现在谷歌和教程的帮助我手势滑动工作,我让它随机显示每个图像之一。

以下是使用手势滑动使图像随机变化的线条示例:

//placed under class ViewController: UIViewController

@IBOutlet weak var picture: UIImageView!

var myArray:[String] = ["img1", "img2", "img3", "img4", "img5"]

//placed under override func didReceiveMemoryWarning() & super...()

@IBAction func pictureSwipe(sender: UISwipeGestureRecognizer) {
   let pictureRandom:Int = Int(arc4random_uniform(5))
   let pictureString:String = self.myArray[pictureRandom]
   self.picture.image = UIImage(named: pictureString)

}

即使有人能指出我正确的方向。此代码有效,但我不想要随机图像。我正在寻找它循环通过" img1"通过" img5"如果用户继续滑动,请重新开始。非常感谢任何帮助或指导。

谢谢

2 个答案:

答案 0 :(得分:1)

您希望保留一个变量来控制字符串数组中的当前索引。然后根据滑动的方向,你想减少或递增1.尝试这样的事情。

private var myArray = ["img1", "img2", "img3", "img4", "img5"]
private var index = 0
@IBOutlet weak var picture: UIImageView!

@IBAction func pictureSwipe(sender: UISwipeGestureRecognizer) {
    let updateIndex = sender.direction == .Left ? 1 : -1
    index += updateIndex

    if index >= myArray.count {
        // Went past the array bounds. start over
        index = 0
    } else if index < 0 {
        // Jump to the back of the array
        index = myArray.count - 1
    }

    let pictureString = myArray[index]
    self.picture.image = UIImage(named: pictureString)
}

答案 1 :(得分:0)

要循环到数组,您可以添加一个变量来跟踪当前显示图像的数组索引,并在每次执行手势时增加它,然后,当索引等于5时,将其重置为0 。

以下是一个例子:

angular.module('app.services', [

])
  .service('MyService', function ($http) {
    var MyService = this;
    this.aggregatedData = { content: [], filename: null };
    this.apiUrl = 'https://example.com/api?userID=';
    this.saveUrl = 'saveJson.php';

    this.getData = function (url) {
      return $http.get(url + $stateParams.userID).then(function (response) {
        MyService.aggregatedData.content.push(response.data);
      });
    };

    this.saveData = function (url, fileName) {
      this.aggregatedData.filename = fileName;
      return $http.post('saveJson.php', this.aggregatedData).then(function () {
        // do something with the post response if desired
      });
    };
  })

正如您所看到的,我在这里使用三元运算符,使我能够在一行中完成所有递增和重置。