Swift 来回滑动图像数组

2023-12-01

我有一组图像,我希望能够向前(向左)滑动到下一个图像,或向后(向右)滑动到上一个图像。当 imageList 达到 -1/超出范围时,应用程序崩溃。我无法弄清楚如何将其保持在范围内的逻辑。

这是我的代码:

var imageList:[String] = ["image1.jpg", "image2.jpg", "image3.jpg"]
let maxImages = 2
var imageIndex: NSInteger = 1

滑动手势位于我的 viewDidLoad() 方法中,不确定这是否是正确的位置...:

    override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    var swipeRight = UISwipeGestureRecognizer(target: self, action: "swiped:") // put : at the end of method name
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    self.view.addGestureRecognizer(swipeRight)

    var swipeLeft = UISwipeGestureRecognizer(target: self, action: "swiped:") // put : at the end of method name
    swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
    self.view.addGestureRecognizer(swipeLeft)

    image.image = UIImage(named:"image1.jpg")

}


func swiped(gesture: UIGestureRecognizer) {

    if let swipeGesture = gesture as? UISwipeGestureRecognizer {

        switch swipeGesture.direction {

        case UISwipeGestureRecognizerDirection.Right :
            println("User swiped right")

        /*No clue how to make it go back to the previous image and 
        when it hits the last image in the array, it goes back to 
        the first image.. */

        case UISwipeGestureRecognizerDirection.Left:
            println("User swiped Left")


            if imageIndex > maxImages {

                imageIndex = 0

            }

            image.image = UIImage(named: imageList[imageIndex])

            imageIndex++



        default:
            break //stops the code/codes nothing.


        }

    }


}

预先非常感谢!


首先,您的图像索引应设置为零,因为数组元素从零开始,但这不是问题的根源

var imageIndex: NSInteger = 0

那么你的滑动功能应该如下所示

func swiped(gesture: UIGestureRecognizer) {

if let swipeGesture = gesture as? UISwipeGestureRecognizer {

    switch swipeGesture.direction {

    case UISwipeGestureRecognizerDirection.Right :
        println("User swiped right")

        // decrease index first

        imageIndex--

        // check if index is in range

        if imageIndex < 0 {

            imageIndex = maxImages

        }

       image.image = UIImage(named: imageList[imageIndex])

    case UISwipeGestureRecognizerDirection.Left:
        println("User swiped Left")

        // increase index first

        imageIndex++

        // check if index is in range

        if imageIndex > maxImages {

            imageIndex = 0

        }

       image.image = UIImage(named: imageList[imageIndex])




    default:
        break //stops the code/codes nothing.


    }

}


}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 来回滑动图像数组 的相关文章

随机推荐

  • 将指针分配给使用 malloc 保留的块

    基于这个答案 https stackoverflow com a 19765782 1606345 include
  • 如何在iOS中注册一个在指定时间提醒应用程序的事件

    我需要每晚凌晨 1 点或每两周启动一次同步 我将如何在 iOS 中实现这一目标 iOS 中有没有一种方法可以让我的应用程序在此时提醒我 并且应该在指定的特定时间提醒我的应用程序 后台获取是操作系统提供的机会 iOS 7 及以上版本 到请求在
  • 为什么无法更改 css 中的内容?

    CSS2 1伪选择器如 after and before允许向页面添加文本内容 例如 CSS p after content Batman HTML p Na Na Na Na Na Na p 浏览器中的输出 Na Na Na Na Na
  • 了解 Cassandra 消息延迟指标

    我试图了解如何使用org apache cassandra metrics type Messaging公制 我设置了 3 个数据中心 每个数据中心 1 个节点 当我测量指标时 对于每个节点 我获得 2 个跨数据中心指标和 1 个跨节点延迟
  • 为什么主题函数没有将更改应用于 ggplot?

    我想更改 y 轴描述的文本大小并将绘图标题居中 主题函数中编码的所有内容都没有应用于我的图表 哪里有问题 finalchart ggplot euall aes day cumulative cases of 14 days per 100
  • 另一个针对 excel 2007 的优化宏 vba 代码。该代码是我的数据的一种转置器

    您好 这段代码最初不是由我完成的 这里有一些事情我不太明白 我已经对我的同事代码进行了一些修改以适应我的数据并且它有效 但太慢了 当我有 4000 kb 的 Excel 文件时 它可能会完全冻结 我已经检查过 当这个转置器运行时和之后 它仍
  • 如何使用curl 和 GraphQL updateIssueComment 突变更新 Github 中的问题或 PR 评论

    我想更新 Github PR 或问题中的评论 但我发现很难找到有效的示例 这就是为什么我问这个问题 我自己来回答 希望其他人可以使用这个 以下代码片段将使用 GraphQL 突变和curl 更新问题或 PR 评论 确保更换
  • C++ 模块到底是什么?

    我一直在跟踪 C 标准化并遇到了 C 模块的想法 我找不到关于它的好文章 到底是关于什么的 动机 简单的答案是 C 模块就像header那也是一个翻译单位 它就像一个标头 您可以使用它 与import 这是一个新的上下文关键字 来访问库中的
  • 如何从 ResourceDictionary 引用 BindingProxy 实例

    任何 wpf 程序员迟早都会开始使用绑定代理 我试图通过将一些资源移动到单独的资源字典中来拆分 xaml 我的问题是资源包含对BindingProxy 我该如何处理这种情况 举个例子 假设有一个资源BindingProxy这是在某处使用的
  • Blazor Editform 更改事件

    我希望在 blazor editform 中有一个 InputSelect 它绑定到模型值 并且还有一个 onchange 事件 该事件根据新值更改模型中的其他属性 绑定到 bind Value 和 onchange 不起作用 我猜测是因为
  • 使用 Alamofire 将嵌套数组从 JSON 数据显示到表视图

    我已经在表视图中显示了第一个 json 数据 但是当尝试显示内部数组数据的数组数据时 它在表视图上显示空白数据 我已经厌倦了很多方法 有时它显示索引超出范围 不知道我哪里出错了或者忘记编写代码 我可以在表视图中显示费用类数据 但无法显示描述
  • 在 Ansible 中添加带有循环的列表

    我正在尝试将新的隧道接口附加到空列表中 但出现以下错误 name empty list set fact list tunnel name create new list for tunnel set fact list tunnel ne
  • 加载具有相同静态链接函数的两个共享库时使用哪个函数

    我一直在阅读并试图理解符号是如何在 Linux 的共享库中解析的 所以这是我所面临的情况的描述 我正在使用一个应用程序 APP 可以加载用户创建的共享库以添加功能 我有两个这样的图书馆 LIB A so and LIB B so执行单独的事
  • 我的下拉菜单上的淘汰验证不起作用

    我使用 durandal 模板 微风开发一个 ASP NET MVC 项目 我想在我的视图上定义验证逻辑以进行添加 编辑操作 到目前为止 它适用于文本 从数据库填充的下拉列表 当元素不包含任何数据时 由于剔除验证 该元素被标记为红色 但它不
  • xslt 和 xpath:直接匹配前面的注释

    我正在尝试对一批 XML 文档应用 XSLT 转换 变换的要点是对几个元素重新排序 我希望保留任何评论directly位于元素之前
  • 为什么我的 Disruptor 程序没有充分利用环形缓冲区

    Disruptor github地址是 https github com LMAX Exchange disruptor 我对其进行了一个简单的测试 如下所示 public class DisruptorMain SuppressWarni
  • 如何用any检查系列中的值?

    我正在和熊猫一起工作 我需要根据其他列中的条件在数据框中创建一个新列 我尝试查找系列中的每个值 如果它包含一个值 返回文本的条件 当值完全相同时 这有效 但当该值只是系列值的一部分时 则无效 if any something in df2
  • 在 JBoss AS 中部署的 2 个 Java EE 应用程序之间共享会话

    我有 2 个 Java EE 应用程序 需要共享登录用户的一些常见用户相关数据 无论如何 我可以通过一个应用程序将这些数据存储在会话中 并在第二个应用程序中检索该数据吗 IE 类似于 NET 中的粘性会话 两个单独的 Java EE 应用程
  • 使用批处理文件获取目录的大小(以“MB”为单位)

    我想获取目录的大小C Temp in MB使用批处理文件 我不需要子目录或文件的大小 而是目录本身的大小 我在以下位置找到了答案如何通过批处理文件列出所有文件夹的大小 但它给了我尺寸bytes以及子文件夹的内容 所以我的问题是 如何获取目录
  • Swift 来回滑动图像数组

    我有一组图像 我希望能够向前 向左 滑动到下一个图像 或向后 向右 滑动到上一个图像 当 imageList 达到 1 超出范围时 应用程序崩溃 我无法弄清楚如何将其保持在范围内的逻辑 这是我的代码 var imageList String