Как сначала установить фиксированную высоту в ячейке таблицы? - PullRequest
0 голосов
/ 02 мая 2019

как вы помещаете фиксированную высоту в ячейку, не влияя на ее размер? Я выяснил, как изменить размер ячейки таблицы, но когда я хочу поместить кнопку, она выглядит маленькой, поэтому я хочу сначала поместить фиксированную высоту в ячейку, а затем, когда содержимое становится большим, следует использовать метод resize. Это метод изменения размера. Заранее спасибо

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableView.automaticDimension
}

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    return 40
}

     NSLayoutConstraint.activate([
        textView.topAnchor.constraint(equalTo: self.topAnchor, constant: 10),
        textView.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -10),
        textView.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 10),
        textView.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -10)
        ])

     NSLayoutConstraint.activate([
        button.topAnchor.constraint(equalTo: textView.bottomAnchor, constant: 50),
        button.bottomAnchor.constraint(equalTo: self.bottomAnchor),
        button.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 20),
        button.widthAnchor.constraint(equalToConstant: 20),
        button.heightAnchor.constraint(equalToConstant: 10)
        ])

Ответы [ 5 ]

1 голос
/ 03 мая 2019

установите нижнюю constraint кнопки на нижнюю constraint ячейки contentView. autolayout автоматически управляет высотой ячейки.

0 голосов
/ 03 мая 2019

Определить tableView.rowHeight = yourHeightValue в viewDidLoad()

0 голосов
/ 03 мая 2019

У вас конфликт высоты из-за этих 3 ограничений

 textView.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -10),
 button.topAnchor.constraint(equalTo: textView.bottomAnchor, constant: 50),
 button.bottomAnchor.constraint(equalTo: self.bottomAnchor),

Вам также необходимо добавить кнопку textView & в contentView и установить ограничения с ней

 NSLayoutConstraint.activate([
    textView.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant: 10), 
    textView.leadingAnchor.constraint(equalTo:self.contentView.leadingAnchor, constant: 10),
    textView.trailingAnchor.constraint(equalTo:self.contentView.trailingAnchor, constant: -10), 
    textView.heightAnchor.constraint(equalToConstant:50),

    button.topAnchor.constraint(equalTo: self.textView.bottomAnchor, constant: 50),
    button.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor),
    button.leftAnchor.constraint(equalTo:self.contentView.leftAnchor, constant: 20),
    button.widthAnchor.constraint(equalToConstant: 20),
    button.heightAnchor.constraint(equalToConstant: 10)
])
0 голосов
/ 03 мая 2019

Вы можете сделать что-то вроде этого.

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if indexPath.row == 0 {     // First table cell
        if firstLoad {
            return 200  // Fixed height 
        } else {
            return UITableView.automaticDimension
        }
    }   
}

Также вам может понадобиться повторно вызвать метод heightForRowAt, выполнив

self.tableView.beginUpdates()
self.tableView.endUpdates()

Надеюсь, это поможет!

0 голосов
/ 02 мая 2019

Поведение по умолчанию UITableView будет обрабатывать его самостоятельно.

Убедитесь, что вы ничего не настроили для просмотра таблицы. Во-вторых, UITableViewCell, где вам нужно указать высоту для каждого компонента пользовательского интерфейса - это позволит UITableView правильно изменить размер ячейки.

Edit.1

Если вы создаете свой контроллер представления из xib / storyboard, то вам просто нужно сделать это для вашего tableView (обратите внимание, что ячейка загружена из nib и контроллер представления соответствует UITableViewDataSource)

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.dataSource = self
    tableView.register(UINib(nibName: "YourCellNibName", bundle: nil), forCellReuseIdentifier: "reuseIdentifier")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...