从数组swift访问图像

时间:2017-10-24 16:52:18

标签: ios swift

我在swift中创建了一个图像库,我想在它下面创建一个显示图像标题的标签。在我的代码中,我创建了一个存储所有图像的数组,我想要的。我想创建一个if语句,当显示某个图像时,我希望标签的文本发生变化。我不知道如何访问滚动视图中显示的特定图像。

到目前为止,这是我的代码:

import UIKit

class ViewController: UIViewController {
@IBOutlet weak var mainscrollview: UIScrollView!
var imageArray = [UIImage]()

    @IBOutlet var label: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        mainscrollview.frame = view.frame
        imageArray = [#imageLiteral(resourceName: "goku"), #imageLiteral(resourceName: "boruto"), #imageLiteral(resourceName: "tail"), #imageLiteral(resourceName: "sage"),#imageLiteral(resourceName: "tobi")]

        for i in 0..<imageArray.count{
        let imageView = UIImageView()
            imageView.image = imageArray[i]
            imageView.contentMode = .scaleAspectFit
            let xPosition = self.view.frame.width * CGFloat(i)
            imageView.frame = CGRect(x: xPosition, y: 0, width: self.mainscrollview.frame.width,height: self.mainscrollview.frame.height)
            mainscrollview.contentSize.width = mainscrollview.frame.width * CGFloat(i + 1)
            mainscrollview.addSubview(imageView)



        }


    }

但行

if imageView.image = UIImageView.init(image: "goku")  {


            }

给了我一堆错误

伪代码

if image == "goku" && image_is_displayed_on_screen == true {
label.text = "GOKU";
}

3 个答案:

答案 0 :(得分:2)

imageView的image属性是UIImage对象而不是UIImageView

尝试:

imageView.image = UIImage(named: "goku")

答案 1 :(得分:1)

uiimage有一个属性可以按名称获取图像。

您的代码必须如下所示

 if imageView.image ==  UIImage(named:"goku")  {


 }

还有一点,你已经写过&amp;在数组中添加图像如下

imageArray = [#imageLiteral(resourceName: "goku"), #imageLiteral(resourceName: "boruto"), #imageLiteral(resourceName: "tail"), #imageLiteral(resourceName: "sage"),#imageLiteral(resourceName: "tobi")]

不要这样做,只在数组中添加图像名称(字符串),在for循环中按图像名称获取图像。

答案 2 :(得分:1)

使用==比较图像可能会或可能不会按预期工作。我很确定,除非比较的两边包含相同的对象,而不是同一对象的2个副本,否则它将返回false。

在任何情况下,将图像的另一个副本加载到内存中只是为了查看它是否匹配是低效的。

我建议保存一组图像名称,创建一个具有name属性的UIImageView子类,并将其安装到您在滚动视图中安装的每个图像视图中。然后比较图像名称,而不是图像。