Проблема с меткой заголовка центрирующего раздела в UITableView - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь центрировать заголовок раздела в UITableView.Я использую следующий код:

  func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    guard let header = view as? UITableViewHeaderFooterView else { return }
    header.textLabel?.textAlignment = .center
  }

Это работает большую часть времени, за исключением метки заголовка первого раздела, когда приложение загружается впервые.Выравнивается по левому краю.Остальные сосредоточены.Если я прокручиваю вниз, а затем прокручиваю назад вверх, метка заголовка первого раздела затем центрируется.Как я могу это исправить для начальной загрузки?

1 Ответ

0 голосов
/ 06 марта 2019

Если вы используете

tableView (_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?

вместо пользовательского UITableViewHeaderFooterView, вы можете решить его, вызвав setNeedsLayout ().

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    guard let header = view as? UITableViewHeaderFooterView else {return}
    header.textLabel?.textAlignment = .center
    header.setNeedsLayout()
}

Другой способ

Подкласс UITableViewHeaderFooterView и использование ниже функций

func register(_ nib: UINib?, forHeaderFooterViewReuseIdentifier identifier: String)

func register(_ aClass: AnyClass?, forHeaderFooterViewReuseIdentifier identifier: String)
tableView (_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?

Вы можете установить

textLabel.aligment = .center

в конструкторе подкласса класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...