[英]Image in trailingSwipeActionsConfigurationForRowAt doesn't seem to work
我正在尝试实现一项新的 iOS11 功能,该功能允许您在 tableview 滑动操作中正式使用图像。
所以,我想出了这个:
@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let deleteAction = UIContextualAction(style: .normal, title: "", handler: { (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
//whatever
success(true)
})
let theImage: UIImage? = UIImage(named:"Delete")?.withRenderingMode(.alwaysOriginal)
deleteAction.image = theImage
return UISwipeActionsConfiguration(actions: [deleteAction])
}
我的资产目录中有这个 .png 文件。 我尝试了 WITH 和 WITHOUT 渲染模式。 在任何一种情况下,图像都在调试器中正确显示:
但未能出现在模拟器中(“这里什么都没有”标志着我希望图像出现的地方):
我做错了什么吗?
老问题,
但是对于那些仍在尝试解决此问题的人,请确保您的图像大小等于或小于您的单元格大小。
就我而言,我的图像太大,只显示白色背景
我有同样的问题,几天来一直试图解决这个问题。 尚未在任何地方找到解决方案。
不过,一种已弃用的解决方法是将构造为 patternImage 的 backgroundColor 设置为如下所示:
let deleteAction = UIContextualAction(style: .normal, title: "", handler: { (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
//whatever
success(true)
})
let theImage: UIImage? = UIImage(named:"Delete")
deleteAction.backgroundColor = UIColor(patternImage: theImage!)
发生这种情况是因为使用myAction.image
设置的图标默认变为白色,而.withRenderingMode(.alwaysOriginal)
不能解决问题。 此刻我正在与同样的事情作斗争 - 在这种情况下渲染模式似乎根本不起作用。
我发现只有一种解决方法 - 使用myAction.backgroundColor = UIColor(patternImage: theImage)
而不是myAction.image
。
但是,如果您将使用此技巧 - 请注意,您需要创建一个高度与单元格高度相同且在图像右侧具有扩展色域的图像。 这将有助于防止图像在屏幕区域可见重复。 而且,文本标题会出现,所以如果你不需要它,只需在其中输入一个空字符串。
代码示例:
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let action = UIContextualAction(style: .normal, title: "", handler: { _, _, completionHandler in
completionHandler(true)
})
let theImage: UIImage? = UIImage(named:"MyImage")
action.backgroundColor = UIColor(patternImage: theImage!)
return UISwipeActionsConfiguration(actions: [action])
}
图片示例:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.