Я сделал просмотр таблицы с динамической высотой ячейки в зависимости от метки и изображения.У меня два вопроса: 1. Как программно установить размер для метки и изображения, как вы можете видеть в комментариях внутри класса «Ячейка»?Я пытался с CGRect, но, как я вижу, мне нужно установить значение высоты, что я не знаю, чтобы сделать это, так как мой ярлык должен иметь динамическую высоту.2. Я хотел бы удалить ячейку формы изображения, если она имеет значение nil, а затем сделать высоту ячейки в зависимости только от метки.
В этом коде я сделал размер метки и изображения, используя раскадровку.Я думаю, что смогу решить эту проблему, используя оператор if, в котором я установил нижнее пространство для метки, если изображение равно нулю.
Вот мой код:
class Cell: UITableViewCell {
@IBOutlet weak var picImage : UIImageView!
@IBOutlet weak var descLabel : UILabel!
override func awakeFromNib() {
super.awakeFromNib()
descLabel?.numberOfLines = 0
//set label size programmaticly, like (leading space to 40, top 20, trailling space to 40)
//set image size programmaticly, like (Horizontally center, top 10 under descLabel, width 50, height 90)
}
}
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var table: UITableView!
var arrOfPictures : [String?] = ["str", "", "str"]
var arrOfDesText : [String] = ["sometext sometext sometext some text sometext sometext sometext some text sometext sometext sometext some text sometext sometext sometext some text", "sometext sometext sometext some text sometext sometext sometext some text sometext sometext sometext some text sometext sometext sometext some text", "sometext sometext sometext some text sometext sometext sometext some text sometext sometext sometext some text sometext sometext sometext some text"]
override func viewDidLoad() {
super.viewDidLoad()
table.estimatedRowHeight = 70
table.rowHeight = UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrOfDesText.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! Cell
cell.descLabel!.text = arrOfDesText[indexPath.row]
cell.picImage!.image = UIImage(named: arrOfPictures[indexPath.row]!)
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
}
Вот как это выглядит:
Итак, как вы можете видеть, вторая ячейка не отображаетсяизображение, но высота этой ячейки все еще такая же, как у других, и это то, что я хотел бы изменить.