SwiftUI - 根据输入参数更改视图变量
SwiftUI - Change View variable based on input parameter
如何根据调用视图时提供的输入参数 categorySize 更改视图中的 @State 变量大小?
我想在 categorySize == .Large 时将大小更改为 140,在 categorySize == .Small 时更改为 40。
enum ExampleEnum {
case Large
case Small
}
struct TestView: View {
let categorySize: ExampleEnum
@State private var size: CGFloat = 92
var body: some View {
Image(name: "TestImage")
.resizable()
.frame(width: size, height: size)
}
}
TestView(categorySize: .Small)
我尝试通过 if 语句,但这并不能解决问题:
struct TestView: View {
let categorySize: ExampleEnum
@State private var size: CGFloat = 92
var body: some View {
if categorySize == .Large { <=== Not working
$size = 140
} else if categorySize == .Small {
$size = 40
}
Image(name: "TestImage")
.resizable()
.frame(width: size, height: size)
}
}
我知道我可以在调用视图时传递大小参数。但是,我只想传递 categorySize,然后让视图逻辑处理视图中的大小变量。
这是可能的方法
struct TestView: View {
let categorySize: ExampleEnum
var body: some View {
var size: CGFloat = 92
if categorySize == .Large {
size = 140
} else if categorySize == .Small {
size = 40
}
return Image(name: "TestImage")
.resizable()
.frame(width: size, height: size)
}
}
如何根据调用视图时提供的输入参数 categorySize 更改视图中的 @State 变量大小?
我想在 categorySize == .Large 时将大小更改为 140,在 categorySize == .Small 时更改为 40。
enum ExampleEnum {
case Large
case Small
}
struct TestView: View {
let categorySize: ExampleEnum
@State private var size: CGFloat = 92
var body: some View {
Image(name: "TestImage")
.resizable()
.frame(width: size, height: size)
}
}
TestView(categorySize: .Small)
我尝试通过 if 语句,但这并不能解决问题:
struct TestView: View {
let categorySize: ExampleEnum
@State private var size: CGFloat = 92
var body: some View {
if categorySize == .Large { <=== Not working
$size = 140
} else if categorySize == .Small {
$size = 40
}
Image(name: "TestImage")
.resizable()
.frame(width: size, height: size)
}
}
我知道我可以在调用视图时传递大小参数。但是,我只想传递 categorySize,然后让视图逻辑处理视图中的大小变量。
这是可能的方法
struct TestView: View {
let categorySize: ExampleEnum
var body: some View {
var size: CGFloat = 92
if categorySize == .Large {
size = 140
} else if categorySize == .Small {
size = 40
}
return Image(name: "TestImage")
.resizable()
.frame(width: size, height: size)
}
}