Fix priority menu icons: use UIImage.withTintColor for exact colored flags

foregroundStyle is overridden by Menu tint; baking color into UIImage
with .alwaysOriginal rendering mode is the only reliable approach.

Co-Authored-By: Kutesir <tqwyy79vzn@privaterelay.appleid.com>
This commit is contained in:
Robin Kutesa
2026-06-01 04:01:03 +03:00
parent 8f041c69f3
commit 8bf4d91053

View File

@@ -1547,8 +1547,7 @@ struct AddTaskSheet: View {
Label {
Text(p.label)
} icon: {
Image(systemName: p == .none ? "flag" : "flag.fill")
.foregroundStyle(p.color)
Image(uiImage: priorityFlagImage(p))
}
}
}
@@ -1635,6 +1634,20 @@ struct AddTaskSheet: View {
priority: selectedPriority)
dismiss()
}
private func priorityFlagImage(_ p: Priority) -> UIImage {
let name: String
let uiColor: UIColor
switch p {
case .high: name = "flag.fill"; uiColor = .systemRed
case .medium: name = "flag.fill"; uiColor = .systemYellow
case .low: name = "flag.fill"; uiColor = .systemBlue
case .none: name = "flag"; uiColor = .systemGray3
}
let cfg = UIImage.SymbolConfiguration(pointSize: 17, weight: .medium)
return (UIImage(systemName: name, withConfiguration: cfg) ?? UIImage())
.withTintColor(uiColor, renderingMode: .alwaysOriginal)
}
}
// MARK: - Task Date Picker Sheet