如何在 SwiftUI 中将 属性 定义为 Color 或 LinearGradient?
How to define a property to be either Color or LinearGradient in SwiftUI?
我想存一个backColor
属性用来画画。我怎样才能让这个 属性 采用 Color 或 LinearGradient?
struct Card {
let backColor: Color
}
let colorBackCard = Card(backColor: Color.red)
let gradientBackCard = Card(backColor: LinearGradient(...))
最后一行代码显示:无法将类型 'LinearGradient' 的值转换为预期的参数类型 'Color'。
我该如何解决这个问题 属性?
谢谢
--
我试过这个:
enum ColorGradient {
case color(Color)
case gradient(LinearGradient)
}
struct Card {
let backColor: ColorGradient
}
let colorBackCard = Card(backColor: ColorGradient.color(Color.red))
let gradientBackCard = Card(backColor: ColorGradient.gradient(LinearGradient(...)))
但是当我用这个属性在View里画图的时候,报:
实例方法'background(_:alignment:)'要求'ColorGradient'符合'View'
--
我现在使用 2 个单独的变量 Color?和线性渐变?
如果直接在视图中使用,那么下面这样更合适
struct Card<Background: View> {
let backColor: Background
}
// no changes in below
let colorBackCard = Card(backColor: Color.red)
let gradientBackCard = Card(backColor: LinearGradient(...))
我想存一个backColor
属性用来画画。我怎样才能让这个 属性 采用 Color 或 LinearGradient?
struct Card {
let backColor: Color
}
let colorBackCard = Card(backColor: Color.red)
let gradientBackCard = Card(backColor: LinearGradient(...))
最后一行代码显示:无法将类型 'LinearGradient' 的值转换为预期的参数类型 'Color'。
我该如何解决这个问题 属性?
谢谢
--
我试过这个:
enum ColorGradient {
case color(Color)
case gradient(LinearGradient)
}
struct Card {
let backColor: ColorGradient
}
let colorBackCard = Card(backColor: ColorGradient.color(Color.red))
let gradientBackCard = Card(backColor: ColorGradient.gradient(LinearGradient(...)))
但是当我用这个属性在View里画图的时候,报:
实例方法'background(_:alignment:)'要求'ColorGradient'符合'View'
--
我现在使用 2 个单独的变量 Color?和线性渐变?
如果直接在视图中使用,那么下面这样更合适
struct Card<Background: View> {
let backColor: Background
}
// no changes in below
let colorBackCard = Card(backColor: Color.red)
let gradientBackCard = Card(backColor: LinearGradient(...))