TableView侧滑动作自定义UIImage显示异常求助
解决TableView侧滑动作自定义图片只显示白色圆形的问题
哈哈,这个问题我之前踩过一模一样的坑!大概率是图片渲染模式或者Asset配置的问题,UIContextualAction对图片的渲染逻辑有点特殊,咱们一步步来排查解决:
1. 先改代码调整图片渲染模式(最快见效)
UIContextualAction默认会把设置的image当成模板图(Template)来处理——也就是只保留图片的alpha通道(形状),然后用系统的tintColor给形状上色。如果你的tintColor是白色,那自然就只显示白色圆形了。
你可以手动让图片保留原本的颜色,只需要给图片加上withRenderingMode(.alwaysOriginal):
// 替换你原来的image赋值代码 if molecule.isFavorite == true { favouriteStatus = false image = #imageLiteral(resourceName: "unflagged").withRenderingMode(.alwaysOriginal) } else { favouriteStatus = true image = #imageLiteral(resourceName: "flagged").withRenderingMode(.alwaysOriginal) }
2. 或者直接在Asset Catalog里改图片属性
如果不想动代码,也可以直接在Xcode里调整图片的配置:
- 打开你的Asset目录,选中
flagged和unflagged图片 - 在右侧的属性检查器里找到Render As选项
- 把默认的
Template Image改成Original Image
这样图片就会以原本的颜色显示,不会被系统替换色调了。
3. 额外排查点:确认图片本身的透明度
如果上面两步都没用,那得检查下你的图片本身是不是有透明背景:要是橙色旗帜的背景是白色且没有透明通道,系统识别模板的时候会把整个圆形都当成形状,自然就只会显示白色啦。
另外小补充:如果想让侧滑动作更好看,可以给flagAction设置backgroundColor,和你的橙色旗帜搭配起来效果会更协调~
内容的提问来源于stack exchange,提问作者Trichophyton
相关产品推荐
相关产品推荐

