Chciałbym mieć podobne zachowanie niż znacznik HTML <Table>
, w tym sensie, w którym rozmiar ramki jest zgodny z jej zawartością.Jak zmierzyć UIStackView w zależności od jego zawartości?
W moim kontekście używam UIStackView jako widoku zawartości UITableViewCell. Ponieważ elementy w komórce są różnymi informacjami, wynikowa wysokość komórki powinna być zmienna.
Moja strategia jest programowo zbudować komórkę jako UIStackView z osią .Vertical, jak we fragmencie kodu, co następuje:
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
}
Niestety, wielkość komórek nie dostosuje się do treści, jak i wynik muszę ustawić wysokość komórki w następujący sposób:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return cellHeight // a constant
}
Jak mogę to naprawić?
myślę, że należy właściwie ograniczeniem swój stackView z komórką dla tego podejścia do pracy. – zcui93
Przetestowałem już tę ścieżkę (dodałem do komórki komórki sv T-T, L-L, R-R, B-B), ale w rezultacie powstaje ultra szeroka komórka (ledwo widzisz tylko jedną komórkę na raz). @ Zcui93 –
StackView na własną rękę powinien być ograniczony komórką, aby komórka rosła wraz z nim. Następnie konfigurujesz subviews, aby StackView rozwijał się prawidłowo w oparciu o ich "Intrinsic Content Size" – zcui93