У меня есть сгруппированный UITableView, у которого сверху был дополнительный интервал из-за стиля .grouped
. На StackOverflow я нашел следующее решение, которое прекрасно работает:
var tableHeaderFrame = CGRect.zero
tableHeaderFrame.size.height = CGFloat.leastNormalMagnitude
myTableView.tableHeaderView = UIView(frame: tableHeaderFrame)
Тем не менее, у меня есть UITapGestureRecognizer
, который ищет кадр отправителя и пытается выделить для него правильный раздел, например:
if let headerView = sender.view?.superview as? MyTableHeader {
let headerLocation = headerView.frame
var pressedSection: Int!
print("header loc: ", headerLocation)
for section in 0 ... tableData.count - 1 {
print(MyTableView.rect(forSection: section))
let sectionRect = MyTableView.rect(forSection: section)
if(sectionRect.contains(headerLocation)) {
pressedSection = section
}
}
}
Мне нужно обновить массив tableData
, так как это настраиваемая кнопка для удаления раздела. Однако, когда я нажимаю кнопку в разделе first , приложение вылетает (ressedSection = nil), и я вижу этот вывод для прямоугольника:
(0.0, 1.1754943508222875e-38, 337.5, 207.4468085106383)
Что явно указывает на странное значение для позиции y. Я думаю, что это из-за .leastNormalMagnitude.
Когда я удаляю код выше для tableHeaderFrame, ошибка исчезла, но интервал вернулся. Как я могу решить обе проблемы: позволить значениям кадра быть «нормальными» и убрать верхний отступ / пробел?