我創建了一個帶有xib
文件的自定義UITableViewCell
。在那裏我已經放置了幾個標籤和相對於contentView
寬度的視圖。不幸的是,contentView.bounds.width
屬性始終保持不變,無論選擇哪個設備。來自XIB的自定義UITableViewCell:contentView寬度始終相同
我的視圖控制器也從筆尖加載:
class ViewController: UIViewController {
@IBOutlet var tableView: UITableView!
init(title: String) {
super.init(nibName: "ViewController", bundle: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.registerNib(UINib(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "CustomTableViewCell")
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("CustomTableViewCell", forIndexPath: indexPath) as! CustomTableViewCell
return cell
}
}
在CustomTableViewCell
I類打印出來的內容視圖的width屬性:
override func awakeFromNib() {
super.awakeFromNib()
print("self.contentView.bounds.width: \(self.contentView.bounds.width)")
}
這始終打印出來的寬度設定Interface Builder,儘管它應該遵循使用AutoLayout的tableView
的寬度:
嘗試設置單元格的幀之前返回沒有工作:
cell.frame = CGRectMake(0, 0, self.tableView.frame.size.width, 71)
謝謝,不知道那些。但是,通過計算'cellForRowAtIndexPath'中的寬度是什麼意思?爲什麼'UITableViewCell'不會自動獲得'tableView'的寬度? – MJQZ1347
'UITableViewCell'根據你的約束獲取寬度,但在調用awakeFromNib之後。所以在'awakeFromNib'你不會得到正確的框架! – Lion