有几个类似的问题(例如我以前的 iOS10 变体),但我认为应该有一个最新的 iOS 11 答案,使用 Swift4,不使用私有 API,并且不依赖您将图标限制为 unicode 表情符号。
随着 API 到 iOS11 的演变,我们现在可以放置图像和文本,但它们被强制进入模板模式并使用您设置的任何 backgroundColor 反转颜色。例如
let rename = UIContextualAction(style: .normal, title: "Rename") { (_, view, _) in
self.renameEntry(indexPath)
}
rename.backgroundColor = UIColor.black
rename.image = UIImage(named: "pencilEdit")
let locate = UIContextualAction(style: .normal, title: "Locate") { (_, view, _) in
self.locateEntry(indexPath)
}
locate.backgroundColor = UIColor.blue
locate.image = UIImage(named: "locatePin")
let delete = UIContextualAction(style: .destructive, title: "Forget") { (_, view, _) in
self.deleteEntry(indexPath)
}
delete.backgroundColor = UIColor.red
delete.image = UIImage(named: "triggerDeleteSelector")
return UISwipeActionsConfiguration(actions: [rename, locate, delete])
产生这个:
显然,我们可以有图像或文本,但不能两者兼而有之。
但我想要的样子是
除了倒序之外,我不知道如何像 iOS10 那样欺骗系统。我仍然可以生成带有文本和图像的图像,但我无法控制该图像的颜色。将 backgroundColor 设置为 nil 或 .clear 只会产生空方块。