У меня проблема с ячейкой-прототипом (которая заполняется из Firebase), где высота ячейки устанавливается неправильно, несмотря на установленные ограничения.
Я попытался установить следующее:
override func viewDidLoad() {
super.viewDidLoad()
TableViewPVV.rowHeight = UITableView.automaticDimension
TableViewPVV.estimatedRowHeight = 100
}
Это не работает. При использовании UITableView.automaticDimension высота ячейки по умолчанию равна 44.
Однако, если высота ячейки может быть увеличена, если я явно установлю TableViewPVV.rowHeight в значение, подобное 100.
ПРИМЕЧАНИЕ: Мне также необходимо явно определить желаемую ширину метки, или указанное значение rowHeight игнорируется.
ТАКЖЕ ПРИМЕЧАНИЕ: У меня установлены следующие ограничения на метке: конечный пробел до Superview = 2, начальный пробел = 2, нижний пробел> = 2, верхний пробел> = 2.
Некоторые скриншоты выглядят следующим образом:
Nayem: отредактировано, чтобы добавить новое изображение того, как выглядит контент, без установки желаемой ширины и с высотой, установленной на 100.
import UIKit
import Firebase
class PVVViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var PVVList = [PVVModel]()
@IBOutlet weak var TableViewPVV: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
LoadDataFromPVV()
// TableViewPVV.rowHeight = 100
TableViewPVV.rowHeight = UITableView.automaticDimension
TableViewPVV.estimatedRowHeight = 100
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return PVVList.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
//creating a cell using the custom class
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! PVVViewControllerTableViewCell
//the PVV object
let PVV: PVVModel
//getting PVV for selected position
PVV = PVVList[indexPath.row]
//adding values to labels
cell.PVVData.text = PVV.BodyText
//returning cell
return cell
}
func LoadDataFromPVV() {
databaseReference = Database.database().reference()
let refPVV = Database.database().reference(withPath: "PVV").queryOrdered(byChild: "Status").queryEqual(toValue: "Active")
refPVV.observeSingleEvent(of: .value, with: { (snapshot) in
//if the reference have some values
if snapshot.childrenCount > 0 {
//clearing the list
self.PVVList.removeAll()
//iterating through all the values
for PVV in snapshot.children.allObjects as! [DataSnapshot] {
//getting values
let PVVObject = PVV.value as? [String: AnyObject]
let PVVText = PVVObject?["BodyText"]
//creating PVV object with model and fetched values
let PVV = PVVModel(BodyText: PVVText as! String?)
//appending it to list
self.PVVList.append(PVV)
}
//reloading the tableview
self.TableViewPVV.reloadData()
}
})
}
}
Я надеюсь, что смогу динамически регулировать высоту моей метки (PVVData), чтобы она соответствовала тексту, полученному из Firebase.