У меня есть UITableViewCell
, который содержит подпредставление с соотношением сторон 4: 3 и должно масштабироваться до читаемой ширины таблицы.Я строю это программно следующим образом:
class MapCell: UITableViewCell, MKMapViewDelegate {
private let mapView = MKMapView()
init(reuseIdentifier: String?) {
super.init(style: .default, reuseIdentifier: reuseIdentifier)
self.addSubview(self.mapView)
self.mapView.translatesAutoresizingMaskIntoConstraints = false
self.addConstraints([
NSLayoutConstraint(item: self.mapView, attribute: .leftMargin, relatedBy: .equal, toItem: self, attribute: .leftMargin, multiplier: 1, constant: 0),
NSLayoutConstraint(item: self.mapView, attribute: .rightMargin, relatedBy: .equal, toItem: self, attribute: .rightMargin, multiplier: 1, constant: 0),
NSLayoutConstraint(item: self.mapView, attribute: .height, relatedBy: .equal, toItem: self.mapView, attribute: .width, multiplier: 0.75, constant: 0)
])
self.mapView.delegate = self
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
И в контроллере вида я устанавливаю self.tableView.cellLayoutMarginsFollowReadableWidth = true
.Это почти работает, но я не могу сделать так, чтобы высота ячейки соответствовала подпредставлению.Я хочу сделать что-то вроде этого:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if self.getCellType(for: indexPath) == .mapCell {
return tableView.readableWidth * 0.75
} else {
return 44
}
}
Очевидно, что это свойство не существует, но я не могу найти то, которое предоставляет нужное мне значение - все свойства "width" и "size"Я проверил, либо слишком велики, либо 0. Есть ли способ сделать это?
Вот пример полной ширины и ширины, которую я хочу.