Как получить положение кадра ячейки табличного представления для indexPath? - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь создать собственное представление календаря Google и хочу добавить метку к табличному виду в позиции, где значение времени события равно значению метки ячейки. но фрейм для indexPath отличается для случая, когда он находится в cellForRowAt, и когда я первоначально обновляю позицию фрейма метки в функции.

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

private func getIndexPathForCell() {
    for event in self.events {
        if let startIndexItem = self.slotsTime.firstIndex(where: {$0 == event.fromDate}), let endIndexItem =  self.slotsTime.firstIndex(where: {$0 == event.toDate}) {
            let indexPath = IndexPath(row: startIndexItem, section: 0)
            let indexPath2 = IndexPath(row: endIndexItem, section: 0)

            let rect = self.calendarTableView.rectForRow(at: indexPath)

            // let rectInScreen = self.calendarTableView.convert(rect, to: calendarTableView.superview)

            let labelFrame = CGRect(x: 85.0, y: rect.minY, width: self.view.width - 100, height: CGFloat(90 * (indexPath2.row - indexPath.row)))

            let label = PaddingLabel(frame: labelFrame)
            label.backgroundColor = event.type == 0 ? AppColors.backgroundPink : AppColors.appTextBlueColor35
            label.textColor = AppColors.white
            label.layer.cornerRadius = 8.0
            label.numberOfLines = 0
            label.clipsToBounds = true
            label.font = AppFonts.sfRoundedMedium.withSize(15.0)
            label.textAlignment = .justified
            label.text = event.title
            label.isUserInteractionEnabled = true
            self.calendarTableView.addSubview(label)

            self.indexPaths.append(indexPath)
            self.indexPaths.append(indexPath2)
            self.calendarTableView.reloadData()
        }
    }
}

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

...