// // FaqView.swift // SodaLive // // Created by klaus on 2023/08/11. // import SwiftUI import RichText struct FaqView: View { let faqs: [Faq] @State private var openIndex = -1 var body: some View { VStack(spacing: 0) { ForEach(0..<faqs.count, id: \.self) { index in let faq = faqs[index] VStack(spacing: 0) { HStack(alignment: .top, spacing: 6.7) { Text("Q") .font(.custom(Font.bold.rawValue, size: 13.3)) .foregroundColor(Color.button) Text(faq.question) .font(.custom(Font.medium.rawValue, size: 14.7)) .foregroundColor(Color.grayee) .fixedSize(horizontal: false, vertical: true) Spacer() Image(openIndex == index ? "btn_dropdown_up" : "btn_dropdown_down") .resizable() .frame(width: 20, height: 20) } .padding(.vertical, 20) .padding(.horizontal, 6.7) if openIndex == index { HStack(alignment: .top, spacing: 6.7) { Text("A") .font(.custom(Font.bold.rawValue, size: 13.3)) .foregroundColor(Color.button) .padding(.top, 13.3) RichText(html: faq.answer) .font(.custom(Font.medium.rawValue, size: 13.3)) .foregroundColor(Color.graybb) } .padding(.vertical, 20) .padding(.horizontal, 6.7) .background(Color.gray22) } } .padding(.horizontal, 13.3) .contentShape(Rectangle()) .onTapGesture { if openIndex != index { openIndex = index } else { openIndex = -1 } } } } .padding(.bottom, 40) } } struct FaqView_Previews: PreviewProvider { static var previews: some View { FaqView( faqs: [ Faq(question: "질문1", answer: "답변1"), Faq(question: "질문2", answer: "답변2"), Faq(question: "질문3", answer: "답변3"), Faq(question: "질문4", answer: "답변4"), Faq(question: "질문5", answer: "답변5") ] ) } }