我有2个UIImageViews连接到图像数组 我试图比较它们一旦显示但似乎不起作用。 我尝试使用imageArray [Image Literal]以及imageArray [image1.png,image2.png,image3.png,image4.png,image5.png] 我不确定我在做什么错。 我不是在寻找代码,尽管它可能会有所帮助,但是我正在寻找的是一个人来指导我朝正确的方向
@IBOutlet weak var 1ImageView: UIImageView!
@IBOutlet weak var 2ImageView: UIImageView!
let imageArray = [image1.png, image2.png, image3.png, image4.png, image5.png]
func any() {
if (1ImageView != nil) && (2ImageView != nil) && isEqual(image1.png) {
print("match!")
} else if ...// more if statements
…last if statement} else {
print(“no match!”)
}
@IBAction func buttonPressed(_ sender: IUButton) {
any()
}
如果无法实现,则可以为数组内的每个图像分配一个标识符。 抱歉,还有其他问题。 关于使用NSData比较2个图像有一个答案,但是我不确定如何将其实现为数组。 谢谢,抱歉,但是是新手的问题。
答案 0 :(得分:0)
image.isEqual(image)
似乎并不可靠。如果您不需要进行像素完美的比较,只需将图像转换为数据并进行比较即可。
let image1 = UIImage(named: "image1.png")
let image2 = UIImage(named: "image2.png")
let imageData1 = image1?.pngData()
let imageData2 = image2?.pngData()
if imageData1 == imageData2 {
print("images are the same")
} else {
print("images are different")
}
在数组中查找特定的图像可以基于此:
// array of images referencing image files within an Xcode project
// it's not the best idea to force unwrap those, but for the sake of simplicity
let imageArray = [UIImage(named: "image1.png")!,
UIImage(named: "image2.png")!,
UIImage(named: "image3.png")!,
UIImage(named: "image4.png")!,
UIImage(named: "image5.png")!]
func anySimilarImages() {
// find first image which is the same as 1ImageView's
let 1ImageViewImage: UIImage? = imageArray.first { (image) -> Bool in
return image.pngData() == 1ImageView.image?.pngData()
}
// find first image which is the same as 2ImageView's
let 1ImageViewImage: UIImage? = imageArray.first { (image) -> Bool in
return image.pngData() == 2ImageView.image?.pngData()
}
if 1ImageViewImage != nil && 2ImageViewImage != nil {
print("both images were found")
}
else if 1ImageViewImage != nil {
print("first image was found")
}
else if 2ImageViewImage != nil {
print("second image was found")
}
else {
print("no image was found")
}
}