SF Symbols图标颜色无法修改求助:withTintColor设置无效
问题根源
withTintColor(_:)方法不会修改原UIImage对象,而是返回一个新的带色调的图片实例。你之前的代码要么没保存这个新实例,要么没将它正确赋值给cell的imageView,所以颜色不生效。
解决方法
1. 确保MenuModel的icon属性可修改
检查你的MenuModel结构体,把icon设为var类型(如果需要动态修改数组中的图标):
struct MenuModel { var icon: UIImage var title: String }
2. 初始化时正确生成带色调的图片
如果希望初始化菜单时就设置好图标颜色,显式指定渲染模式更稳妥(系统默认是.alwaysTemplate,但明确设置可避免潜在问题):
var menu: [MenuModel] = [ MenuModel( icon: UIImage(systemName: "house.fill")?.withRenderingMode(.alwaysTemplate).withTintColor(.systemRed) ?? UIImage(), title: "Home" ), // 其他菜单项... ]
3. 在cellForRowAt中动态设置图标颜色
如果需要在cell赋值时调整颜色,直接生成新图片并赋值给cell的imageView:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "MenuCell", for: indexPath) let menuItem = menu[indexPath.row] // 生成带红色调的新图片,直接赋值给cell的imageView cell.imageView?.image = menuItem.icon.withTintColor(.systemRed) cell.textLabel?.text = menuItem.title return cell }
4. 排查cell的imageView tintColor设置
如果还是显示白色,检查cell代码里是否设置了imageView?.tintColor = .white,有就移除该设置,或者改为你需要的颜色。
内容的提问来源于stack exchange,提问作者doxsi
相关产品推荐
相关产品推荐

