gpt4 book ai didi

ios - 引用被触摸的图像

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

在我的 viewDidLoad 函数中,我有一个循环创建一个 3x6 的方形图像( block )表。我们的想法是最终移动并匹配它们。

我的问题是,如何将当前正在触摸或拖动的图像分配为变量?以下是我添加图像的方法:

let squareImg = UIImageView(image:#imageLiteral(resourceName: "square"))
view.addSubview(squareImg)

这就是我正在尝试做的事情:

@IBAction func handlePan(_ recognizer: UIPanGestureRecognizer) {
let translation = recognizer.translation(in: self.view)
if recognizer.state == UIGestureRecognizerState.began {
isDragging = true

let objectDragging = self.view //this is wrong and what I'm trying to correct

print("bg color of block being moved \(objectDragging?.backgroundColor)")

....

最佳答案

将图像存储在数组中,将它们的索引分配给标签值,拧动touchesBagan等,然后简单地使用手势识别器。

添加图像变为:

var myImages = [UIImage]()

let squareImg = UIImageView(image:#imageLiteral(resourceName: "square"), tag: [//add a distinguished tag here])
view.addSubview(squareImg)
myImages.append(squareImg)

现在您的 View 位于数组中(它们不需要是 UIImageViews 甚至 UIImages,只需一些独特的东西即可),只需指向数组中的正确内容即可:

@IBAction func handlePan(_ recognizer: UIPanGestureRecognizer) {
let translation = recognizer.translation(in: self.view)
for view in self.subviews as [UIView] {
if let imageView = view as? UIImageView {
let image = myImages.tag
}
}
}

我知道这并不完全是您所要求的。但技术是。我会根据您的反馈调整我的答案。

编辑:

根据评论,听起来一个不错的策略是至少用“某种循环中的关联对”填充标签属性。此外,这听起来像是某种构建发生错误。这是我对此问题的看法......

标记属性可用于每个对象,无论是 View 还是控件。而且,它们是 Int 类型。最后一条注释指出该错误在函数调用中引用了不正确的参数,需要图像。我认为正在发生两件不同的事情。

(1) 循环填充“关联”图像的标签属性。

如果您要加载“正方形”和“圆形”n 次,请使用索引在循环中实例化事物并填充其标记属性。

for index in 0...10 {

// instantiate your images

// associate these images by populating their tag values
imgSquare.tag = index
imgCircle.tag = index

// continue any other set here

}

Swift 中的循环类型本质上是 Int,因此这是正确的。

(2) 不正确的引用构建错误。

构建错误上线

let circleImg = UIImageView(image: circle, tag: [arrayCounter])

这不是 UIImageView 的“固定”初始化程序,并且从构建错误来看,它(还)不是 UIImageView 的编码扩展。听起来好像有一个 UIImageView 的编码扩展,它需要两个参数:imagehighlightedImage。如果您想扩展 UIImageView 来实现类似的功能,我将创建一个带有便利初始化程序的扩展:

extension UIImageView {
convenience init(image: UIImage, tag:Int) {
self.init()
self.image = image
self.tag = tag
}
}

这是一个骷髅。您可以添加一个保护语句并使其成为可保释的初始值设定项。您可以添加框架、背景颜色等。问题是 - 您目前没有有一个调用“image:tag:”的初始化程序,但您正在编写一个初始化程序。

关于ios - 引用被触摸的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42208138/

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