Установка ширины объекта UIView в ячейке TableView - PullRequest
0 голосов
/ 02 июня 2019

Я думал, что это будет немного легче, но я считаю, что я в тупике. Иметь простой tableView с ячейкой. В ячейке находится UIView (вместе с несколькими другими UILabels), который я хочу изменить ширину на основе значений в той же ячейке (indexPath.row) - простой эффект гистограммы из-за отсутствия лучшего описания.

Пробовал различные итерации использования cell.view.frame ... для доступа к этим атрибутам. Я понимаю, что свойство .width доступно только для получения. Также испробовал много вариантов атрибутов .constraints и не смог получить тот простой эффект, который мне нужен.

Код очень простой шаблон tableView код:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   if let cell = tableView.dequeueReusableCell(withIdentifier: "MoreTidesCell", for: indexPath) as? MoreTidesCell {
       let formatter = DateFormatter()
       formatter.dateFormat = "MMM dd"
       let prediction = predictionsHighLow[indexPath.row]
       cell.tideDateLabel.text = formatter.string(from: prediction.date)
       cell.lowestTideLabel.text = String(prediction.lowestLow.rounder(toPlaces: 1))
       cell.highestTideLabel.text = String(prediction.highestHigh.rounder(toPlaces: 1))

    // here would like to have something like...
    // cell.tideSpanBar.frame = CGRect(x: myX, y: myY, width: myWidth, height: myHeight)
    // based on the values of lowest tide and highest tide.

       return cell
   } else {
       return MoreTidesCell()
   }
}

Вот простой пример того, как он будет выглядеть (конечно, с синей полосой, меняющейся по ширине).

https://www.dropbox.com/s/cti2pjpz944q8to/IMG_1840.jpeg

Я понимаю, что в игре есть ограничения, поэтому я предполагаю, что решение должно быть более связанным с ограничениями, чем .width. Просто ищу надежную точку отсчета, чтобы начать строить это. Одна из единственных проблем в моей короткой кривой обучения Swift, которая полностью закрыла меня. Цени любую помощь, которую я могу получить.

...