iOS 15 — Проблема с фреймом доступа UITableViewCell

#ios15 #accessoryview

Вопрос:

У меня есть пользовательский UIView, содержащий UILabel как cell.accessoryView = containerView . Он работал нормально до iOS 14, но с iOS 15 containerView он меняет свою рамку tableView reload . Он отображается правильно при первой загрузке, но перезагрузка приводит accessoryView к изменению его кадра. Мой код таков

 let notificationLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 30, height: 30))    let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))  containerView.clipsToBounds = true  containerView.backgroundColor = .clear  containerView.addSubview(notificationLabel!)    cell.accessoryView = containerView  

Я изменяю рамку контейнера на основе текста в UILabel in cellForRowAtIndexPath .

Похоже, код фрейма для containerView этого испортился. Но это отлично работает в iOS 14.

Я предполагаю, что есть некоторые изменения, и accessoryView положение можно изменить в iOS 15.

Есть какие-либо предложения, как заставить его работать без указания точной оси x или оси y в iOS 15?

Ответ №1:

Возможно, вы видите дополнительное дополнение «по умолчанию», добавленное в заголовок раздела.

В вашем представлении загрузить добавить

 if (@available(iOS 15.0, *)) {  [self.tableViewName setSectionHeaderTopPadding:0.0f];  }  

Комментарии:

1. Нисколько. У меня уже есть этот чек.

2. Это тоже не сработало для меня.

Ответ №2:

Я тоже не мог найти решения для этого. Поэтому я отказался от сотового iOS 15.

Вместо этого мой обработчик cellForRowAtIndexPath вызывает:

 [cell.contentView removeAllSubviews] [cell.contentView addSubView:myCustomView]  

Комментарии:

1. Я все еще использую cell.accessoryView, но я правильно устанавливаю его рамку (происхождение размер), что хорошо работает для iOS 15 и предыдущих версий.