// // ContentSettingsView.swift // SodaLive // // Created by klaus on 10/10/24. // import SwiftUI struct ContentSettingsView: View { @StateObject var viewModel = ContentSettingsViewModel() var body: some View { ZStack { Color.black.ignoresSafeArea() VStack(spacing: 0) { DetailNavigationBar(title: "콘텐츠 보기 설정") { if AppState.shared.isChangeAdultContentVisible { AppState.shared.setAppStep(step: .splash) } else { AppState.shared.back() } } ScrollView(.vertical) { VStack(spacing: 0) { HStack(spacing: 0) { Text("민감한 콘텐츠 보기") .font(.custom(Font.bold.rawValue, size: 15)) .foregroundColor(Color(hex: "eeeeee")) Spacer() Image(viewModel.isAdultContentVisible ? "btn_toggle_on_big" : "btn_toggle_off_big") .resizable() .frame(width: 44, height: 27) .onTapGesture { viewModel.isAdultContentVisible.toggle() } } .frame(height: 50) if viewModel.isAdultContentVisible { Rectangle() .frame(height: 1) .foregroundColor(Color.gray90.opacity(0.3)) HStack(spacing: 0) { HStack(spacing: 13.3) { Image( viewModel.adultContentPreference == .ALL ? "btn_radio_select_selected" : "btn_radio_select_normal" ) .resizable() .frame(width: 20, height: 20) Text("전체") .font(.custom(Font.medium.rawValue, size: 13.3)) .foregroundColor(Color.grayee) } .contentShape(Rectangle()) .onTapGesture { viewModel.adultContentPreference = .ALL } Spacer() HStack(spacing: 13.3) { Image( viewModel.adultContentPreference == .MALE ? "btn_radio_select_selected" : "btn_radio_select_normal" ) .resizable() .frame(width: 20, height: 20) Text("남성향") .font(.custom(Font.medium.rawValue, size: 13.3)) .foregroundColor(Color.grayee) } .contentShape(Rectangle()) .onTapGesture { viewModel.adultContentPreference = .MALE } Spacer() HStack(spacing: 13.3) { Image( viewModel.adultContentPreference == .FEMALE ? "btn_radio_select_selected" : "btn_radio_select_normal" ) .resizable() .frame(width: 20, height: 20) Text("여성향") .font(.custom(Font.medium.rawValue, size: 13.3)) .foregroundColor(Color.grayee) } .contentShape(Rectangle()) .onTapGesture { viewModel.adultContentPreference = .FEMALE } Spacer() } .frame(height: 50) } } .padding(.vertical, 6.7) .padding(.horizontal, 13.3) .background(Color.gray22) .cornerRadius(10) .padding(.top, 13.3) .padding(.horizontal, 13.3) } } } } } #Preview { ContentSettingsView() }