ios - UITapGestureRecognizer 将坐标添加到数组

标签 ios arrays swift uiimageview uitapgesturerecognizer

我在 ScrollView 中有一个 ImageView。 每次用户点击图像上的一个点时,都会设置一个图钉并打印出坐标

但是,我试图在一个数组中存储多个坐标。 用户点击图像的前 3 次,我需要将坐标存储在 refs1 中。接下来的 14-20 次在 spots1 中。

// MARK: - Outlets
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var sharkImage: UIImageView!

// MARK: - Properties
var refs1 :[Double] = []
var spots1 :[Double] = []

// MARK: - View Did Load
override func viewDidLoad() {
    super.viewDidLoad()

    scrollView.minimumZoomScale = 1.0
    scrollView.maximumZoomScale = 6.0

    scrollView.delegate = self

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapAction))

    self.sharkImage.isUserInteractionEnabled = true
    self.sharkImage.addGestureRecognizer(tapGestureRecognizer)
}

// MARK: - Scroll View
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return sharkImage
}

// MARK: - Functions
func tapAction(sender: UITapGestureRecognizer) {
    // Get points for the UIImageView
    let touchPoint = sender.location(in: self.sharkImage)
    print(touchPoint)

    // Add pin to tap
    let pin = UIImageView(frame: CGRect(x: touchPoint.x - 5, y: touchPoint.y - 5, width:10, height:10))
    pin.image = UIImage(named: "photo-pin-red")
    sharkImage.addSubview(pin)

}

最佳答案

首先,如果您愿意,可以将坐标存储在 2D 数组 中:

var refs1 :[[Double]] = []
var spots1 :[[Double]] = []

然后存储一个名为 counter 的全局变量来跟踪点击次数:

var counter = 0

然后在您的 tapAction 中执行以下操作(请参阅注释了解说明):

func tapAction(sender: UITapGestureRecognizer) {
    // increase counter with +1 for each click
    counter += 1

    if counter <= 3 { // first 3
        refs1.append([Double(touchPoint.x), Double(touchPoint.y)])
    } else if counter <= 23 { // next 14 - 20 clicks
        counter = 0 // reset counter to start over again
        spots1.append([Double(touchPoint.x), Double(touchPoint.y)])
    }
}

关于ios - UITapGestureRecognizer 将坐标添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44471739/

相关文章:

ios - 如果不是 iCloud,我可以将 HealthKit 数据存储在云端吗?

javascript - 为什么将 undefined 插入空数组会得到 1?

ios - 将 url 存储在 userdefaults 中

swift - 将 UIVisualEffectView 添加到按钮

ios - 无法模拟调用applicationDidReceiveMemoryWarning :?

ios - iOS:将数据转换为字符串并通过电子邮件发送

ios - OpenGL ES 2.0 中的半透明

iphone - 数组未填充目录内容

java - 如何从另一种方法访问在一种方法中初始化的字符串数组?

ios - 找不到接受类型 'UIImage' 的参数列表的类型 '(named: UIImage?)' 的初始值设定项