【发布时间】:2016-03-14 18:13:16
【问题描述】:
【问题讨论】:
-
应该都一样高吗?
-
@Eric 好吧,我计划添加一些其他单元格,我希望它们均匀对齐以填满屏幕,所以我想回答你的问题 - 是的
标签: ios swift uitableview
【问题讨论】:
标签: ios swift uitableview
设置单元格的最小高度,如果项目少,则使用均匀高度,否则使用minHeight。
let MinHeight: CGFloat = 100.0
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let tHeight = tableView.bounds.height
let temp = tHeight/CGFloat(items.count)
return temp > MinHeight ? temp : MinHeight
}
Swift 5 更新:
let minRowHeight: CGFloat = 100.0
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let tHeight = tableView.frame.height
let temp = tHeight / CGFloat(items.count)
return temp > minRowHeight ? temp : minRowHeight
}
【讨论】:
items.count 来获取该号码
UITableViewDataSource 的概念,可以找一些 UITableViewController 的教程,例如ralfebert.de/tutorials/ios-swift-uitableviewcontroller
您为此使用UITableView 有什么原因吗?如果您要将 TableView 放在屏幕上并且不会有可变数量的具有滚动能力的单元格,那么 TableView 确实不会给您带来任何真正的好处。
如果你只想拥有 3 个视图,每个视图的高度为屏幕高度的 1/3,你可以简单地使用 IB 使用this answer 中的方法将每个视图设置为屏幕的 1/3
或者如果你想使用自动布局,这是更好的解决方案,你可以使用this technique。
【讨论】:
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 如果有 5 个单元格,它们会全部适合屏幕,还是任何时候都只适合 3 个并且你需要滚动才能看到其余部分吗?
UIStackView:appcoda.com/stack-views-intro
在您的UITableViewDataSource 中设置- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 方法以根据UITableView 的内容高度计算行的高度。
【讨论】:
UITableViewDataSource?您在 ObjC 中提供的代码是什么?
在 viewDidLoad 方法中设置零高度页脚视图。
tableView.tableFooterView = UIView()
【讨论】: