У меня есть UITableView, который ограничен суперпредставлением. Таким образом, первая ячейка находится наверху суперпредставления. Это означает, что на iPhone X первая ячейка кровоточит под надрезом и в области строки состояния. Что совершенно верно. Я хочу, чтобы ячейка прокачалась под надрезом и попала в область строки состояния, что является текущим результатом.
Проблема в том, что я также хочу обновить элемент управления в этом табличном представлении, чтобы пользователь мог обновить содержимое. НО, когда вы нажимаете, чтобы обновить на iPhone X, контроль обновления отключается на выемке. Я не хочу, чтобы элемент управления обновлением был обрезан на выемке.
Итак, в основном я хочу ограничить табличное представление суперпредставлением, но ограничить управление обновлением в безопасной области.
Я просмотрел, и не похоже, что Apple предоставляет много свойств или методов для настройки поведения элемента управления обновлением.
Я подумал об использовании какого-либо пользовательского решения, но каждое пользовательское решение, о котором я думал, теряет всю предустановленную физику управления обновлением и прокрутки табличного представления и тому подобное. Так много закулисной логики, и я действительно не хочу жертвовать ощущением тяги, чтобы обновиться, и тем, как это ощущается для пользователя, поскольку это стало таким распространенным действием в iOS.
Есть ли какие-либо идеи о том, как заставить первую ячейку кровоточить под надрезом (ограничено суперпредставлением), но обеспечить, чтобы элемент управления обновлением не обрезался надрезом (ограничено безопасной областью)?
Я также прикрепил скриншоты ниже того, как ячейки стекают в строку состояния, и как элемент управления обновлением отключается надрезом.
РЕДАКТИРОВАТЬ: Я также опубликовал пример проекта для GitHub здесь .
Но основной код, связанный с управлением обновлением, приведен ниже.
private lazy var refreshControl = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
refreshControl.addTarget(self, action: #selector(handleRefresh), for: .valueChanged)
tableView.refreshControl = refreshControl
}
@objc func handleRefresh() {
DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {
self.refreshControl.endRefreshing()
}
}
![enter image description here](https://i.stack.imgur.com/Xt8Bd.png)
![enter image description here](https://i.stack.imgur.com/KHE7f.png)