gpt4 book ai didi

ios - 如何识别我点击了哪个 UIImageview?

转载 作者:行者123 更新时间:2023-11-30 11:24:15 25 4
gpt4 key购买 nike

我想实现一种可通过触摸编辑的矩阵。一系列黑色或白色单元格,如果点击,它们就会从黑色变为白色,反之亦然。为此,我将使用排列在堆栈 View 中的 UIImageView 和点击手势识别器。但我如何知道哪个 UIImageView 被点击了呢?我可以通过什么方式更改 UIImageView 中的 UIImage?

最佳答案

如果它们只是白色和黑色,那么使用 UIView 并将其 backgroundColor 设置为 .white.black。您可以使用 UIViewtag 属性来识别它们。

在您的gestureRecognizer处理程序中,recognizer.view告诉您触发手势的view

您可以在Interface Builder 中分配标签。例如,如果您有一个 8x8 的正方形数组,则可以使用 2 位数字,其中第一位数字是行,第二位数字是列。因此,您的标签将为 1112、...、8788

func squareTapped(recognizer: UIGestureRecognizer) {
if let view = recognizer.view {
let tag = view.tag
let row = tag / 10
let col = tag % 10
print("The view at row \(row), column \(col) was tapped")

if view.backgroundColor == .black {
view.backgroundColor = .white
} else {
view.backgroundColor = .black
}
}
}
<小时/>

如果您确实想使用图像,请将图像加载为 viewController 的属性,并根据图像的行和列分配它们。这里我使用了一个Outlet Collection来保存所有的UIImageView。在Interface Builder中,您可以将每个单元格连接到squares属性。

class BoardViewController: UIViewController {
let blackImage = UIImage(named: "blackImage")!
let whiteImage = UIImage(named: "whiteImage")!
@IBOutlet var squares: [UIImageView]!
var recognizersAdded = false

func setUpBoard() {
for imageview in squares {
if !recognizersAdded {
let recognizer = UITapGestureRecognizer(target: self, action: #selector(squareTapped))
imageview.addGestureRecognizer(recognizer)
imageview.isUserInteractionEnabled = true
}

let tag = view.tag
let row = tag / 10
let col = tag % 10

// Just for demo purposes, set up a checkerboard pattern
if (row + col) % 2 == 0 {
imageview.image = blackImage
} else {
imageview.image = whiteImage
}
}
recognizersAdded = true
}

func squareTapped(recognizer: UIGestureRecognizer) {
if let view = recognizer.view as? UIImageView {
let tag = view.tag
let row = tag / 10
let col = tag % 10
print("The view at row \(row), column \(col) was tapped")

if view.image == blackImage {
view.image = whiteImage
} else {
view.image = blackImage
}
}
}
}

关于ios - 如何识别我点击了哪个 UIImageview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50933010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com