SwiftUI - изменение переменной представления на основе входного параметра
Как изменить размер переменной @State в представлении на основе входного параметра categorySize, предоставленного при вызове представления?
Я хотел бы изменить размер на 140, когда categorySize == .Large, и на 40, когда categorySize == .Small.
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, а затем логику представления обрабатывать переменную размера в представлении.
1 ответ
Решение
Вот возможный подход
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)
}
}