我认为这样做会容易一些,但我感到很沮丧。有一个带有单元格的简单tableView。单元格中有一个UIView(以及其他一些UILabel),我想根据该单元格中的值(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学习曲线中唯一使我完全失望的问题之一。感谢我可以获得的任何帮助。