【问题标题】:UIImageView slides using Buttons使用按钮的 UIImageView 幻灯片
【发布时间】:2021-11-23 23:08:27
【问题描述】:


我有一个作业,我被困住了。这里是:


制作一个画廊项目:一个大的 UIImageView 和它下面的两个按钮:返回和下一步。在项目中添加10张图片,点击按钮,分别显示上一张或下一张图片。


所以我做了一个数组,并且一些*愚蠢的尝试*通过这个数组。但我 100% 确定对此有一些简单的答案。
谢谢!
import UIKit


class ViewController: UIViewController {
    
    @IBOutlet weak var imagesIV: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
       }
    let images = [UIImage(named: "1"), UIImage(named: "2"), UIImage(named: "3"),UIImage(named: "4"),UIImage(named: "5"),UIImage(named: "6"),UIImage(named: "7"),UIImage(named: "8"),UIImage(named: "9"),UIImage(named: "10")]
    var numberOfImages = images.count
    var  currentImage = 0

    @IBAction func forwardButton(_ sender: Any) {
        guard case currentImage + 1 < images.count else {return}
        currentImage += 1
    }
    
    @IBAction func backButton(_ sender: Any) {
    }
}

【问题讨论】:

  • “imagesIV”在哪里发挥作用?

标签: ios arrays swift uiimageview


【解决方案1】:

我认为下面是一种更好的方法,特别是为了使您的代码可扩展(例如,如果您有 1000 张照片,您不想将它们一张一张地手动添加到数组中):

class ViewController: UIViewController {
    
    @IBOutlet weak var imagesIV: UIImageView!
    var  currentImageIndex = 0
    var images : [UIImage] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        for a in 1...10 {
            if let newImage = UIImage(named: "\(a)") {
                images.append(newImage)
            }
        }
        
        updateImageInImageView()
    }
    
    @IBAction func forwardButton(_ sender: Any) {
        if currentImageIndex + 1 != images.count { currentImageIndex += 1} else { currentImageIndex = 0}
        updateImageInImageView()
    }
    
    @IBAction func backButton(_ sender: Any) {
        if currentImageIndex != 0 { currentImageIndex -= 1} else { currentImageIndex = images.count - 1}
        updateImageInImageView()
    }
    
    func updateImageInImageView()  {
        imagesIV.image = images[currentImageIndex]
    }
}

【讨论】:

  • 嗨!谢谢!但是我可以问一些问题,以便我更好地了解引擎盖下发生的事情吗?我们在哪一部分将数组连接到 UIImageView?代码如何知道我们希望它把图片放在那里?而在这部分“UIImage(命名:”(a)“)”为什么要上传所有照片? “a”是某种通用占位符?再次感谢您,对于一些额外的问题,我们深表歉意!
  • Hello @KseniiaPiskun [我们在哪一部分将数组连接到 UIImageView?] 图像更新是通过 updateImageInImageView() 函数完成的。 [代码如何知道我们希望它把图片放在那里?] 一旦你点击 forwardButton 或 backButton 就会触发 updateImageInImageView() 函数。 [而在这部分“UIImage(命名:”(a)“)”为什么要上传所有照片? “a”是某种通用占位符?],不,它是一个简单的循环,重复它自己 10 次,每次将 a 的值增加 1,然后将值连接到图像字符串,之后新图像被添加到数组中
【解决方案2】:

你可以试试

@IBAction func forwardButton(_ sender: Any) {
    guard currentImage + 1 < images.count else {return}
    currentImage += 1
    imagesIV.image = images[currentImage]
}

@IBAction func backButton(_ sender: Any) {
    guard currentImage - 1 >= 0  else {return}
    currentImage -= 1
    imagesIV.image = images[currentImage]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多