Скрытый вид при анимации, свойство State в другом Struct - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть мой прямоугольник в моем представлении, что при нажатии он расширяется, чтобы показать пользователю больше деталей.

Теперь в нижней части я должен отобразить другие вещи ... как только пользователь нажимает прямоугольник, необходимый для наложения этих данных.

, как вы можете видеть на моей картинке, когда я нажимаю на прямоугольник, вид расширяется, но текст ("CIAO") все еще виден.

before press on rectangleAfter press

struct DetailViewNew: View {
    var dm : DataManager
    let general: GenAirportModel

    var body: some View {
        VStack {

            ZStack {
                GeometryReader { geo in

                 VStack(alignment:.leading){
                    self.airport
                        .padding(.horizontal)
                        .offset(y: geo.size.height/6.3)
                    RectanglePersonal(general: self.general)


                 }
                 .frame(width: geo.size.width, height: geo.size.height/2.5)
                 .background(LinearGradient(gradient: Gradient(colors: [Color("BlueW"), Color("DARK")]), startPoint: .topLeading, endPoint: .bottomTrailing).shadow(radius: 2))
                 .edgesIgnoringSafeArea(.all)

                Spacer()


                }
                Text("CIAO")

            }
            Spacer()
        }

    }

Моя идея заключалась в использовании @State после того, как пользователь нажал прямоугольник, установил представление в hidden (), но проблема в том, Я обнаруживаю, нажимает ли пользователь прямоугольник в другой структуре RectanglePersonal (используя состояние isExpanded)

struct RectanglePersonal: View {
    let general: GenAirportModel
    @State private var isExpanded = false

    var body : some View {
        GeometryReader { g in
            ZStack(alignment:.leading) {
                Rectangle()
                    .foregroundColor(.clear)
                    .background(LinearGradient(gradient: Gradient(colors: [Color("BlueW"), Color("DARK")]), startPoint: .topLeading, endPoint: .bottomTrailing))
//                    .blur(radius: 20)

                    .cornerRadius(20)
//                    .foregroundColor(Color("BlueW"))

                    .shadow(color: .white, radius: 10)
                    .padding(.horizontal,5)
                    .frame(width: g.size.width,
                           height: self.isExpanded ? g.size.height*2 : g.size.height/1.3)
                    .offset(y: self.isExpanded ? g.size.height : g.size.height/2.5)
                    .animation(.easeInOut(duration: 0.5))
                VStack(alignment:.leading) {
                    Text("METAR:")
                        .bold()
                    Text(self.general.metarData.raw_text)
                        .lineLimit(self.isExpanded ? nil : 2)
                    .animation(.easeInOut(duration: 0.5))
                    Text("TAF:")
                        .bold()
                    Text(self.general.tafData.raw_text)
                        .lineLimit(self.isExpanded ? nil : 2)
                    .animation(.easeInOut(duration: 0.5))
                }
                    .padding(.horizontal)
                    .offset(y: self.isExpanded ? g.size.height : g.size.height/2.5)
                .animation(.easeInOut(duration: 0.5))
            }.padding()
                .onTapGesture {
                    self.isExpanded.toggle()
            }
        }
    }
}

как я могу определить из структуры RectanglePersonal значение @isExpanded? и читать это с моей точки зрения DetailViewNew? Для того, чтобы скрыть текст "CIAO"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...