我正在创建一个屏幕,想象一下facebook个人资料屏幕..一个tableview,第一个单元格是一个图像。目标是这个图像保持纵横比,所以对于不同的屏幕尺寸,我不必担心它的大小..
我无法使用任何视图,即使我设置了特定的约束,单元格也不会设置正确的高度。
我在这个链接中有一个显示约束的项目..
我的VC代码:
class ViewController: UITableViewController{
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.dataSource = self
self.tableView.delegate = self
self.tableView.estimatedRowHeight = 100
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.reloadData()
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
return cell
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
}
答案 0 :(得分:1)
这是你应该做的:
viewWillLayoutSubviews
功能中保持所需的宽高比。 class ViewController: UITableViewController {
@IBOutlet weak var headerView: UIView!
override func viewWillLayoutSubviews() {
var frame = headerView.frame;
// Check and see if the aspect ratio of the frame
// of the header view is the desired aspect ratio.
if frame.size.height != frame.width * 0.5 {
// If it is not, update the frame
frame.size.height = frame.width * 0.5;
headerView.frame = frame;
// reset the header view
self.tableView.tableHeaderView = headerView
}
}
}
答案 1 :(得分:1)
如果表格视图单元格的高度基本上是表格视图宽度的函数,则可能更容易实现heightForRowAtIndexPath委托方法以返回表格视图的宽度乘以所需的比率。这将完全取消图片中的约束,并且可能更有效。