调整 UITableView 高度(嵌入在 UIScrollView 中)
Posted
技术标签:
【中文标题】调整 UITableView 高度(嵌入在 UIScrollView 中)【英文标题】:Resize UITableView Height (embedded inside UIScrollView) 【发布时间】:2015-10-08 09:45:37 【问题描述】:在我的storyboard
中,我使用的是AutoLayout
,而我的UITableView
嵌入在UIScrollView
中。 UITableView
的单元格数量在运行时会发生变化,我想动态更改UITableView
的框架高度,并禁用UITableView
中的滚动。
我得到的代码显示了UITableView
,但我无法调整高度。
class ViewController: UIViewController , UITableViewDataSource ,UITableViewDelegate
@IBOutlet weak var myTableView: UITableView!
var array: [CellData] = [CellData]()
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell : CellKistNames = tableView.dequeueReusableCellWithIdentifier("Cell") as! CellKistNames
cell.cellSiingle.text = "cellData"
return cell
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return self.array.count
func numberOfSectionsInTableView(tableView: UITableView) -> Int
return 1
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
return UITableViewAutomaticDimension
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
return UITableViewAutomaticDimension
override func viewDidAppear(animated: Bool)
myTableView.reloadData()
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.myTableView.estimatedRowHeight = 44.0
self.myTableView.rowHeight = UITableViewAutomaticDimension
self.myTableView.dataSource = self
self.myTableView.delegate = self
array = [
CellData(name: "one"),CellData(name: "two"),CellData(name: "three"),CellData(name: "four"),CellData(name: "five"),CellData(name: "six"),CellData(name: "sevens")
]
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
【问题讨论】:
【参考方案1】:每当用于呈现表格视图的集合发生变化时,更新 UITableView height constrain 也将新高度设置为 [collection Count]*tableViewHeight。
在 XIB 中有两个属性用于表格视图的水平和垂直滚动,只需取消选中这两个属性即可禁用 UITableView 中的滚动。
【讨论】:
@Mrs. Agarwal....谢谢您的回复..滚动条被禁用但我应该如何更新 UiTableView 高度 你必须为高度约束创建一个属性,比如@property (nonatomic, strong) NSLayoutConstraint *tableViewHeightConstraint;现在将此约束添加到表视图中,例如 [self.tableView addConstraint:self.tableViewHeightConstraint];您可以更新此约束值,例如 self.tableViewHeightConstraint.constant = 3*50;(假设 30 作为集合计数,50 作为表格视图单元格的高度)。在表视图上更新约束值调用“updateConstraints”后,例如 [self.tableView updateConstraints];以上是关于调整 UITableView 高度(嵌入在 UIScrollView 中)的主要内容,如果未能解决你的问题,请参考以下文章
根据 UITableView 调整 UIScrollView 高度
如何将 UITableView 的高度调整为内容大小的高度?
UITableView 在开始/结束更新调用调整高度后自动滚动到顶部
如何强制 uitableview 调整单元格的大小(在停用高度约束后)?
Swift:使用 prepareForSegue 将 UIView 容器的高度设置为嵌入式 UITableView 的高度