Настраиваемая прокрутка ячейки таблицы для остановки при полном расширении?

Есть ли какой-нибудь способ легко добиться результатов на рисунках ниже (возможно, с помощью MGSwipeTableCell или SwipeCellKit или любого другого модуля, о котором вы знаете). Я уверен, что вы не можете сделать это, используя стандартный UIKit для iOS.

Здесь нужно учесть 2 вещи:

1) Действия по смахиванию ячейки табличного представления должны быть полностью настраиваемыми (поместив туда UIView, чтобы вы могли поместить все, что вы хотите внутри UIView) или, по крайней мере, приблизиться к скриншоту, используя кнопки 1, а затем 5 (поэтому разные swipe-действия для smallswipe и fullswipe)?

2) Действие по смахиванию ячейки табличного представления должно сначала (маленькое пролистывание) отображать только значок "будильник", как на первом изображении, и если вы щелкнете по нему или проведете еще дальше, он должен выглядеть так, как на втором рисунке, и большинство важно, что оставайся таким, не отключая авто (не нужно выполнять никаких действий, кроме как ждать ввода от пользователя, чтобы выбрать другую ячейку или любую из кнопок там).

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

SmallSwipe

FullSwipeOrClick

2 ответа

Решение

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

class SwipableTableViewCell: UITableViewCell {
    @IBOutlet var actionView: UIView // under mainView
    @IBOutlet var mainView: UIView // take whole place of contentView
    @IBOutlet var panGesture: UIPanGestureRecognizer

    @IBAction func panAction(_ sender: UIPanGestureRecognizer) {
        // drag main view left or right and logic of auto swiping 
    }
}

Я действительно не знаю, можете ли вы сделать маленький и полный удар родной. Метод смахивания для iOS 11 - tableView (_: trailingSwipeActionsConfigurationForRowAt:).

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

Я надеюсь, что это помогает.

Другие вопросы по тегам