Установить собственный шрифт для действия UITableView Swipe (UIContextualAction) - PullRequest
1 голос
/ 14 июня 2019

Как установить собственный шрифт для заголовка в UIContextualAction?

Я пытался UIAppearance, но без удачи ...

Ура! :)

1 Ответ

2 голосов
/ 14 июня 2019

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

Стандартный шрифт (Удалить / Переименовать)

Before/standard font

Пользовательский шрифт (Удалить / Переименовать)

After/custom font

Для создания изображения метки у меня есть это расширение:

extension UIImage {

    /// This method creates an image of a view
    convenience init?(view: UIView) {

        // Based on https://stackoverflow.com/a/41288197/1118398
        let renderer = UIGraphicsImageRenderer(bounds: view.bounds)
        let image = renderer.image { rendererContext in
            view.layer.render(in: rendererContext.cgContext)
        }

        if let cgImage = image.cgImage {
            self.init(cgImage: cgImage, scale: UIScreen.main.scale, orientation: .up)
        } else {
            return nil
        }
    }
}

И тогда у меня просто есть:

override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {

    let action = UIContextualAction(style: .destructive, title: nil) { action, view, completion in
        // Your swipe action code!
    }
    let label = UILabel()
    label.text = // Your swipe action text!
    label.font = // Your custom font!
    label.sizeToFit()
    action.image = UIImage(view: label)

    return UISwipeActionsConfiguration(actions: [action])
}
...