我有一个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。有什么方法可以这样吗?
答案 0 :(得分:0)
也许您应该使用屏幕或tableView的大小。
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if self.getCellType(for: indexPath) == .mapCell {
return UIScreen.main.bounds.width * 0.75
} else {
return 44
}
}
您是否可以附加图像以了解单元格应该是什么?