SwiftUI - Изменить переменную представления на основе входного параметра - PullRequest
1 голос
/ 12 января 2020

Как изменить размер переменной @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 и затем иметь логарифмические представления c для обработки переменной размера в представлении.

1 Ответ

1 голос
/ 12 января 2020

Здесь возможен подход

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)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...