Добавить динамически SKLabelNode в MKTVIew - PullRequest
0 голосов
/ 10 апреля 2020

Я работаю над металлом, который показывает график сердечного ритма. между каждым пиком этого графика мне нужно добавить метку.

В этом процессе, график, перемещающийся справа налево, у меня есть массив, который динамически показывает координату x этой метки, например, когда одно значение должно отображаться на экране этот массив содержит только элемент и, если их больше, он содержит больше элементов, этот массив называется coordinates

Я использую для l oop, чтобы получить каждый элемент

  for coordinate in coordinates {

  }

У меня также есть другой массив, который динамически показывает текст метки, и он работает так же, как coordinates. Он называется rrIntervalData.

для определения этого ярлыка я задал еще один вопрос: Визуализация текста с помощью SKRenderer

вот мой код

skScene.size = CGSize(width: CGFloat(viewportSize.x), height: CGFloat(viewportSize.y))

  for coordinate in coordinates {

     var index = 0
     skLabel.text = "\(rrIntervalData[index].value)"
     skLabel.position = CGPoint(x: Int(coordinate), y: 200)
     skLabel.fontSize = 20
     skLabel.fontColor = SKColor.red
     index += 1

  }

skLabel is SKLabelNode. У меня также есть skScene.addChild(skLabel), который я добавил в init родительского класса (я знаю, что это не правильно). Если я добавлю его здесь, произойдет сбой приложения, поскольку skLabel уже добавлено в skScene.

В текущей версии метка создается в каждой точке и перемещается вместе с графиком (как и ожидалось), но когда на экран выходит координата новой метки, первая метка исчезает и отображается в вторая позиция, и если я уменьшу график, когда он должен показывать более 20 меток одновременно, он всегда показывает метку в последней метке с правой стороны.

как мне создать динамическое c количество меток, которые устанавливаются здесь и придерживаются каждой координаты и значения?

Ваша помощь будет оценена, Прошло больше недели, что Я не мог справиться с добавлением этого ярлыка.

...