9
我想有一個類似的行爲,而不是<Table>
HTML標記,在這個意義上,幀的大小根據其內容。如何根據其內容調整UIStackView的大小?
在我的上下文中,我使用UIStackView作爲UITableViewCell的內容視圖。由於單元格中的項目是各種信息,因此單元格的高度應該是可變的。
我的策略就是以編程方式生成的細胞作爲具有.Vertical軸UIStackView,如代碼片段如下:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
let sv = UIStackView(frame: tableview.frame)
sv.axis = .Vertical
cell.addSubview(sv)
for i in information {
let l = UILabel()
l.text = i
sv.addSubViewAndArrange(l)
}
return cell
}
不幸的是,細胞大小不調整的內容,並作爲結果我必須自己設置單元格高度,如下所示:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return cellHeight // a constant
}
我該如何解決這個問題?
我想你應該正確地對這種方法的工作單元約束你stackView。 – zcui93
我已經測試了這條路徑(在單元中添加了sv T-T,L-L,R-R,B-B約束),但是這會導致超寬單元(一次只能看到一個單元)。 @ zcui93 –
自己的StackView應該受到單元的約束,所以單元會隨之增長。然後設置子視圖,以便StackView根據其「內部內容大小」正確增長 – zcui93