Ios 以编程方式创建的UITableViewCell仅使用AutoLayout显示其第一个子视图
我正在用Swift编写一个iOS应用程序。我创建了一个表视图场景,但它仅显示其第一个子视图。我试图使代码尽可能简单。我创建了一个带有两个标签的表视图单元格,但它仍然只显示第一个标签。代码如下。为什么不显示第二个标签?我的自动布局约束是否错误?谢谢Ios 以编程方式创建的UITableViewCell仅使用AutoLayout显示其第一个子视图,ios,swift,uitableview,Ios,Swift,Uitableview,我正在用Swift编写一个iOS应用程序。我创建了一个表视图场景,但它仅显示其第一个子视图。我试图使代码尽可能简单。我创建了一个带有两个标签的表视图单元格,但它仍然只显示第一个标签。代码如下。为什么不显示第二个标签?我的自动布局约束是否错误?谢谢 import UIKit class TestCell: UITableViewCell { let viewsDict: [String : UILabel] = [ "first": UILabel(),
import UIKit
class TestCell: UITableViewCell {
let viewsDict: [String : UILabel] = [
"first": UILabel(),
"second": UILabel(),
]
override func awakeFromNib() {
viewsDict["first"]!.text = "first"
viewsDict["second"]!.text = "second"
viewsDict["first"]!.translatesAutoresizingMaskIntoConstraints = false
viewsDict["second"]!.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(viewsDict["first"]!)
contentView.addSubview(viewsDict["second"]!)
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[first]-[second]-|", options: [], metrics: nil, views: viewsDict))
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[first]", options: [], metrics: nil, views: viewsDict))
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[second]", options: [], metrics: nil, views: viewsDict))
}
}
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
}
}
从您的评论中,听起来好像您在问如何以编程方式自动设置单元格的高度。有几种不同的方法可以做到这一点: 最接近您可能想要的,在iOS 8及之后,您可以让tableView自行计算:
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 60.0;
您也可以只设置tableView的rowHeight
属性,并使每一行的高度相同:
self.tableview.rowHeight = 60.0
或者,您可以实现委托方法来动态计算行高。这种方式还允许您检查每个单独的单元,并确定视图的高度:
func tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let cell = tableView.cellForRowAtIndexPath(indexPath) as! TestCell
// Calculate the height that you want ..
let height = 60.0
return height
}
自动调整
UITableViewCell
的大小,这一点更深入。从您的评论中,听起来您在问如何以编程方式自动设置单元格的高度。有几种不同的方法可以做到这一点:
最接近您可能想要的,在iOS 8及之后,您可以让tableView自行计算:
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 60.0;
您也可以只设置tableView的rowHeight
属性,并使每一行的高度相同:
self.tableview.rowHeight = 60.0
或者,您可以实现委托方法来动态计算行高。这种方式还允许您检查每个单独的单元,并确定视图的高度:
func tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let cell = tableView.cellForRowAtIndexPath(indexPath) as! TestCell
// Calculate the height that you want ..
let height = 60.0
return height
}
在IB中自动调整
UITableViewCell
的大小时,这将深入到更大的深度。我拖动原型单元格以获得更大的高度,并显示第二个子视图。。。但我不确定它是否能自动调整高度。在IB中,我拖动原型单元格以获得更大的高度,然后显示第二个子视图。。。我不确定它是否能自动调整高度。