Хобрук: Ваш путь к мастерству в программировании

Строка-разделитель неожиданно появляется при смахивании UITableViewRowActions

В моем приложении я использую UITableView, который состоит из нескольких заголовков и одной или двух строк для каждого заголовка. В каждой ячейке есть два UITableViewRowActions. Моя проблема в том, что всякий раз, когда эти действия строки анимируются, между ячейкой и заголовком внизу появляется странный разделитель.

Я попытался отключить разделители по умолчанию и вместо этого использовать собственный разделитель, но по какой-то причине мне действительно нужно использовать разделители по умолчанию.

На следующем шаге я попытался отключить разделитель только для тех ячеек, которые находятся поверх следующего заголовка, вот так, но это не сработало:

if #available(iOS 9.0, *) {

      tableView.cellLayoutMarginsFollowReadableWidth = false

  }

cell.layoutMargins = UIEdgeInsetsZero
cell.preservesSuperviewLayoutMargins = false
cell.separatorInset.left = self.view.frame.size.width

Чтобы помочь вам составить представление о проблеме, я сделал три скриншота, которые показывают странное поведение:

До:

введите здесь описание изображения

При отображении действий со строками:

введите здесь описание изображения

После закрытия действий со строками с помощью tableView.setEditing(false, animated: true):

введите здесь описание изображения

У вас есть идеи, как я могу удалить эту странную разделительную линию?

03.02.2016

Ответы:


1

Наконец-то я нашел относительно чистое решение для решения этой проблемы - я просто добавляю представление «исправление строки» к каждому представлению заголовка, которое будет перекрывать странный разделитель. Поскольку это похоже на ошибку Apple, это, вероятно, лучший обходной путь.

Вот код:

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    let view = UITableViewHeaderFooterView()

    let lineFix = UIView(frame: CGRect(x: 0, y: -0.5, width: tableView.frame.size.height, height: 0.5))
    lineFix.backgroundColor = UIColor.groupTableViewBackgroundColor()
    view.addSubview(lineFix)

    return view

}
07.02.2016
Новые материалы

Получение стоковых обновлений с помощью Python
Для начинающего финансового аналитика Введение Описание: Этот проект Python создает скрипт для получения текущих обновлений акций с финансового веб-сайта Yahoo. Для этого проекта мы..

Это все, что вам нужно знать о Kotlin в 2022 году
Добро пожаловать! Kotlin — это язык программирования, популярность которого, кажется, растет, его действительно можно использовать для создания чего угодно, и если вы хотите узнать о Kotlin,..

Текстовый графический интерфейс с Lanterna на Java
Мой опыт работы с компьютерами (и текстовыми графическими пользовательскими интерфейсами) начался еще в восьмидесятых, когда я был ребенком, на дне рождения друга. Это был «новенький» Amstrad..

Перезарядите свой мозг: умопомрачительный потенциал мозговых компьютерных интерфейсов
Способность читать свои мысли и управлять объектами разумом долгое время были предметом человеческого любопытства, ограниченного областью научной фантастики… то есть до сих пор? С технологией,..

Основы C# — Нулевой оператор объединения (??)
Оператор ?? называется null-coalescing operator . Этот оператор используется для предоставления значения по умолчанию, если значение операнда в левой части оператора равно null ...

Сравнение номеров версий в C++ с использованием синтаксического анализа строк
Номера версий обычно используются для обозначения развития или обновлений программного обеспечения или любого другого продукта. При работе с номерами версий в C++ может быть полезно сравнить две..

В мир искусственного интеллекта…
ИИ — это новое топливо в современном мире. Куда бы вы ни обратились, с кем бы вы ни разговаривали — они, как правило, упоминают об ИИ хотя бы раз в ходе разговора. ИИ гудит повсюду. У каждого..