AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

    • Início
    • system&network
    • Ubuntu
    • Unix
    • DBA
    • Computer
    • Coding
    • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / 问题

Perguntas[swiftui](coding)

Martin Hope
Kpmurphy91
Asked: 2025-04-26 06:30:48 +0800 CST

No SwiftUI, qual é a melhor maneira de ancorar uma visualização ao centro do contêiner e, ao mesmo tempo, ancorar uma visualização adicional à sua borda?

  • 6

Sou iniciante no SwiftUI e estou tentando entender como posso manter uma visualização centralizada horizontalmente na tela do dispositivo, ao mesmo tempo em que ancorar uma visualização adicional na borda posterior (sem descentralizar a visualização original).

Tenho um protótipo que funciona, mas é um pouco feio e depende de "onGeometryChange" para rastrear o tamanho da visualização centralizada a fim de deslocar a visualização adjacente na quantidade correta. O motivo pelo qual isso funciona é que usar offset não altera a geometria da ZStack que a contém, que considera que a visualização adjacente ocupa a mesma posição centralizada que a primeira.

Embora minha abordagem pareça funcionar, ela parece um pouco desastrosa, pois depende de vários ciclos de layout (um para criar o layout do ZStack e da visualização centralizada, depois ler a alteração da geometria e, por fim, atualizar a posição da visualização adjacente). Além disso, as dimensões do contêiner ZStack não incluem o deslocamento da visualização adjacente.

struct ContentView: View {
    
    @State private var centeredLabelWidth: CGFloat = .zero
    @State private var offsetLabelWidth: CGFloat = .zero
    
    var body: some View {
        ZStack {
            Text("Centered Label")
            .border(Color.blue)
            .padding(1)
            .onGeometryChange(for: CGFloat.self) { $0.size.width } action: {
                centeredLabelWidth = $0
            }
            
            Text("Adjacent Label")
            .border(Color.red)
            .padding(1)
            .onGeometryChange(for: CGFloat.self) { $0.size.width } action: {
                offsetLabelWidth = $0
            }
            .offset(x: centeredLabelWidth / 2 + offsetLabelWidth / 2)
        }
    }
}

Captura de tela do playground

Agradeço muito qualquer contribuição da comunidade!

swiftui
  • 2 respostas
  • 63 Views
Martin Hope
CalebK
Asked: 2025-04-25 11:33:24 +0800 CST

Tornar o fundo do conteúdo do TabView transparente para que um UIViewRepresentable WKWebView "constante" possa ser exibido atrás dele

  • 6

Estou criando um aplicativo em que a interface principal é uma WKWebView e o SwiftUI é usado apenas para algumas funções do aplicativo. Estou com um problema ao usar a interface do sistema SwiftUI TabView. Se você executar este aplicativo de exemplo, haverá um comportamento que não consigo explicar.

enum Page: String, Hashable, CaseIterable, Identifiable {
    case settings = "gear"
    case radio = "radio"
    case connect = "dot.radiowaves.right"
    
    var id: String { rawValue }
}

struct RandomColorHostedWebView: UIViewRepresentable {
    let webView: WKWebView
    
    init() {
        // Clear cache to be extra sure https://stackoverflow.com/a/34376943/3833632
        WKWebsiteDataStore.default().removeData(ofTypes: [WKWebsiteDataTypeDiskCache, WKWebsiteDataTypeMemoryCache], modifiedSince: Date(timeIntervalSince1970: 0), completionHandler:{ })
        let webConfiguration = WKWebViewConfiguration()
        self.webView = WKWebView(frame: .zero, configuration: webConfiguration)
        let urlRequest = URLRequest(url: URL(string: "https://randomcolour.com")!)
        self.webView.load(urlRequest)
    }
    
    func makeUIView(context: Context) -> UIView {
        return webView
    }

    func updateUIView(_ uiView: UIView, context: Context) {
    }
}



struct ContentView: View {
    let pages = Page.allCases
    
    let randomColor: RandomColorHostedWebView
    init() {
        randomColor = RandomColorHostedWebView()
    }
    
    var body: some View {
        TabView {
            ForEach(pages) { page in
                randomColor
                    .tag(page)
                    .tabItem {
                        Label(page.rawValue, systemImage: page.rawValue)
                    }
            }
        }
    }
}

Se você executar isso, notará que cada aba clicada gera uma animação de atualização, mas não carrega uma nova cor. Além disso, quando você retorna para uma aba que já visitou, ela estará em branco.

Esse é um comportamento que não consigo explicar. (Gostaria de entender por que isso acontece)

Dito isso, presumo que a causa seja que o SwiftUI não tem ideia de que cada uma das visualizações pai do tabItem é a mesma visualização, pois elas têm identidades estruturais diferentes.

Então, estou procurando uma solução alternativa para deixar o fundo do TabView claro para que eu possa usar um ZStack, limitar a TabViewaltura somente para o conteúdo da aba para que eu possa usar um VStack, ou algo mais.

Esta solução existente tenta remover o fundo da TabView, mas parece não funcionar . Concordo com um comentarista que diz que a solução alternativa parece ter sido quebrada em versões posteriores do sistema operacional.

   var body: some View {
        ZStack {
            randomColor
            TabView {
                ForEach(pages) { page in
                    Color.clear
                        // https://stackoverflow.com/questions/63178381/make-tabview-background-transparent
                        .background(BackgroundHelper())
                        .tag(page)
                        .tabItem {
                            Label(page.rawValue, systemImage: page.rawValue)
                        }
                }
            }
        }
    }
swiftui
  • 1 respostas
  • 28 Views
Martin Hope
user2962393
Asked: 2025-04-23 19:32:16 +0800 CST

Obtenha o par de clique único (coluna, linha) da tabela SwiftUI no macOS

  • 5

Quando o usuário clica uma vez em uma SwiftUI Tableno macOS, gostaria de saber o par (coluna, linha) clicado, ou ponto. Adicionei onTapGesture()um manipulador ao Table, mas ele nunca é invocado. Como posso descobrir qual (coluna, linha) foi clicada?

Meu objetivo é implementar a seleção de células no meu modelo de visualização. Preciso ser capaz de determinar o par clicado (coluna, linha) para selecionar a célula correta no modelo de visualização.

Abaixo está o código de exemplo da Apple, ao qual adicionei o onTapGesture()manipulador ineficaz.

struct Person: Identifiable {
    let givenName: String
    let familyName: String
    let emailAddress: String
    let id = UUID()
}
struct PeopleTable: View {
    @State private var people = [
        Person(givenName: "Juan", familyName: "Chavez", emailAddress: "[email protected]"),
        Person(givenName: "Mei", familyName: "Chen", emailAddress: "[email protected]"),
        Person(givenName: "Tom", familyName: "Clark", emailAddress: "[email protected]"),
        Person(givenName: "Gita", familyName: "Kumar", emailAddress: "[email protected]")
    ]
    var body: some View {
        Table(people) {
            TableColumn("Given Name", value: \.givenName)
            TableColumn("Family Name", value: \.familyName)
            TableColumn("E-Mail Address", value: \.emailAddress)
        }
        .onTapGesture(perform: { p in
            print("clicked point \(p)")
        })
    }
}
#Preview {
    PeopleTable()
}
swiftui
  • 1 respostas
  • 25 Views
Martin Hope
Martin
Asked: 2025-04-23 09:26:36 +0800 CST

Em Swift Charts, como colocar um RuleMark atrás de um BarMark com animações habilitadas

  • 5

Tenho um gráfico Swift simples onde estou tentando colocar uma RuleMark atrás de uma BarMark.

Quando o RuleMark é incluído antes do BarMark, as barras ficam irregulares e se movem conforme a seleção avança. Exemplo reproduzível abaixo.

import SwiftUI
import Charts

struct datStruct: Identifiable {
    let id = UUID()
    let label: String
    let value: Int
}

struct ContentView: View {
    
    let dat = [
        datStruct(label: "A", value: 1),
        datStruct(label: "B", value: 2),
        datStruct(label: "C", value: 3)
    ]
    @State var rawSelection: String?
    
    var selection: datStruct? {
        guard let rawSelection else {return nil}
        return dat.first(where: { $0.label == rawSelection })
    }
    
    var body: some View {
    
        Chart(){
            
            if let selection {
                RuleMark(x: .value("label", selection.label))
                    .foregroundStyle(.red)
            }
            
            ForEach(dat) {dat in
                BarMark(x: .value("label", dat.label), y: .value("count", dat.value))
            }
        }
        .chartXSelection(value: $rawSelection)
    }
}

#Preview {
    ContentView()
}

Quando a RuleMark é movida para depois da BarMark e um ZIndex negativo é aplicado, a regra é exibida atrás da barra, conforme desejado. Mas, quando adiciono animação à seleção, a regra aparece brevemente acima da barra e, em seguida, é animada para trás dela.

Como posso sempre mostrar o RuleMark atrás do BarMark com animação aplicada?

import SwiftUI
import Charts

struct datStruct: Identifiable {
    let id = UUID()
    let label: String
    let value: Int
}

struct ContentView: View {
    
    let dat = [
        datStruct(label: "A", value: 1),
        datStruct(label: "B", value: 2),
        datStruct(label: "C", value: 3)
    ]
    @State var rawSelection: String?
    
    var selection: datStruct? {
        guard let rawSelection else {return nil}
        return dat.first(where: { $0.label == rawSelection })
    }
    
    var body: some View {
    
        Chart(){
        
            ForEach(dat) {dat in
                BarMark(x: .value("label", dat.label), y: .value("count", dat.value))
            }
            
            if let selection {
                RuleMark(x: .value("label", selection.label))
                    .foregroundStyle(.red)
                    .zIndex(-1)
            }
        }
        .chartXSelection(value: $rawSelection.animation())
    }
}

#Preview {
    ContentView()
}
swiftui
  • 1 respostas
  • 24 Views
Martin Hope
Gargo
Asked: 2025-04-16 22:02:09 +0800 CST

"desfoque de fundo" no SwiftUI?

  • 6

Quero desenhar uma imagem sobreposta a um painel desfocado com texto. O problema é que a moldura do painel depende da moldura do texto. Ao mesmo tempo, masko modificador de tempo é definido separadamente do texto e do painel.

Meu código:

struct SomeView: View {
    @State var frame: CGRect = .zero
    
    var body: some View {
        ZStack {
            Image(.defaultCard)
            Image(.defaultCard)
                .blur(radius: 30)
                .mask {
                    Rectangle()
                        .frame(width: frame.width, height: frame.height)
                        .position(x: frame.midX, y: frame.midY)
                }
            ZStack(alignment: .bottomLeading) {
                Color.clear
                HStack {
                    Text("...")
                    Text("...")
                }
                .padding()
                .background {
                    GeometryReader { geometry in
                        Color.clear
                            .onAppear {
                                frame = geometry.frame(in: .global)
                            }
                            .onChange(of: geometry.size) { _ in
                                frame = geometry.frame(in: .global)
                            }
                    }
                }
            }
            .frame(maxWidth: .infinity, maxHeight: .infinity)
        }
    }
}

Tudo está desenhado, mas a posição da máscara está incorreta. O código a seguir retorna um quadro incorreto:

frame = geometry.frame(in: .global)

Como resolver esse problema? Entendo que eu poderia usar o desfoque do UIKit, mas o desfoque do SwiftUI atende melhor às minhas necessidades.

swiftui
  • 1 respostas
  • 28 Views
Martin Hope
user30115770
Asked: 2025-04-16 10:55:58 +0800 CST

Como salvar imagens de um Photo Picker no SwiftData

  • 4

Estou tendo problemas para salvar imagens no SwiftData e não tenho certeza da melhor maneira de fazer isso.

Tenho um modelo de dados EntryModel para uma entrada individual como tal:

@Model
class EntryModel {
   var type: EntryType
   var who: UserModel
   var what: String
   var value: Double? = nil
   var note: String
   @Attribute(.externalStorage) var images: [Data]?
   var when: Date = Date.now

  init(type: EntryType, who: UserModel, what: String, note: String, images: [Data] = [], when: Date) {
    self.type = type
    self.who = who
    self.what = what
    self.note = note
    self.images = images
    self.when = when
}

Em seguida, tenho uma NewEntryView que permite aos usuários criar uma nova entrada e anexar algumas imagens opcionais para obter informações adicionais. O código fica assim:

struct New EntryView {
   @State private var entryItems = [PhotosPickerItem]()
   @State private var entryImages = [Image]()

// Other code pertaining to different parts of my form

HStack {
    PhotosPicker(selection: $entryItems, maxSelectionCount: 5, matching: .images) {
        Image(systemName: "plus")
          .font(.title)
          .foregroundStyle(.adaptiveBlack)
          .frame(width: 80, height: 70)
          .background(
              RoundedRectangle(cornerRadius: 10)
                 .stroke(lineWidth: 2)
                 .fill(selectedEntryType.color)
                 .frame(width: 70, height: 60)
           )
       }
                        
       ScrollView(.horizontal) {
          HStack(spacing: 10) {
             ForEach(0..<entryImages.count, id: \.self) { i in
                entryImages[i]
                    .resizable()
                    .scaledToFill()
                    .clipShape(RoundedRectangle(cornerRadius: 10))
                    .frame(height: 60)
             }
          }
          .onChange(of: entryItems) {
             Task {
                entryImages.removeAll()
                                    
                for item in entryItems {
                   if let image = try? await item.loadTransferable(type: Image.self) {
                   entryImages.append(image)
                }
            }
        }
   }

// More code

Button {
   let entry = EntryModel(type: selectedEntryType, who: selectedUser!, what: titleTextField, note: noteTextField, when: selectedDate)
   modelContext.insert(entry)
} label: {
// Custom label
}

Agora, com esta implementação atual, posso de fato selecionar imagens do meu álbum de fotos e preenchê-las no HStack.

Quando o botão é clicado na parte inferior, as outras informações preenchidas pelo usuário também são salvas no SwiftData e podem ser usadas em todo o aplicativo.

O problema que tenho é salvar essas imagens no SwiftData para serem usadas em todo o aplicativo.

Devo inseri-los no contexto do modelo como faço com os outros valores? Se sim, como?

Caso contrário, como eu alteraria meu código atual?

Qualquer ajuda será apreciada.

Aliás, não tenho certeza da sua relevância, mas desde que implementei o PhotosPicker, recebo o seguinte aviso no Xcode:

PHPickerViewControllerDelegate_Private não responde a _pickerDidPerformConfirmationAction:

swiftui
  • 1 respostas
  • 44 Views
Martin Hope
Gargo
Asked: 2025-04-15 14:43:38 +0800 CST

Detectar modificadores duplicados no swiftui?

  • 5

No meu caso específico, enfrentei um problema no SwiftUI que não permite adicionar mais de um alerta ao mesmo arquivo View. Esse problema é conhecido e já foi resolvido, por exemplo, adicionando visualizações vazias adicionais:

https://stackoverflow.com/a/67395026/805701

Mas há outro problema: o SwiftUI não reage a essa situação (os alertas simplesmente pulam). Portanto, você precisa pesquisar manualmente em todo o código para encontrar essas duplicatas, que podem ocorrer em arquivos diferentes.

É possível de alguma forma indicar onde essas duplicatas ocorrem, por exemplo, adicionando um wrapper sobre o .alert(...)modificador padrão que é gerado fatalErrorquando esse modificador já foi adicionado a uma visualização?

swiftui
  • 1 respostas
  • 40 Views
Martin Hope
HappyC
Asked: 2025-04-08 12:59:21 +0800 CST

SwiftUi Existe uma maneira de ocultar uma barra de ferramentas sem afetar a visualização em segundo plano

  • 5

Quando clico no menu lateral, a barra de ferramentas fica oculta, mas todo o fundo é movido para cima.

var body: some View {
        NavigationStack {
            ZStack {
                VStack {
                    SlideView()
                    ButtonView()
                }
                SideMenuView(isShowing: $showMenu, selectedTab: $selectedTab)
            }
            .toolbar(showMenu ? .hidden : .visible, for: .navigationBar)
            .navigationTitle("HKSTBC")
            .navigationBarTitleDisplayMode(.inline)
            .toolbar {
                ToolbarItem(placement: .topBarLeading) {
                    Button(action: {
                        showMenu.toggle()
                    }, label: {
                        Image(systemName: "line.3.horizontal")
                    })
                }
            }
        }
    }

Acabei de colocar .navigationBarTitleDisplayMode(.inline), mas não funciona. Como faço para o plano de fundo parar de se mover para cima?

swiftui
  • 1 respostas
  • 39 Views
Martin Hope
Marcel Derks
Asked: 2025-04-04 22:53:45 +0800 CST

Como alinhar à direita o conteúdo em um VStack de tamanho intrínseco no SwiftUI

  • 6

Essa provavelmente é uma pergunta simples, mas estou com muita dificuldade.

Vamos supor que eu tenha o seguinte Layout de Visualização no SwiftUI

Quero que a String de Data 10.5.2020seja alinhada à direita no VStack pai.

Mas é importante que, ao fazer isso, o tamanho intrínseco do VStack não seja quebrado.

Estou dizendo isso porque as duas soluções mais óbvias estão fazendo isso.

  1. Cerque com HStacke coloque um Spacerà esquerda.
  2. Use quadro com maxWidth: .infinityealignment: .trailing

Dei uma olhada mais aprofundada nos guias de alinhamento, mas não consegui consertar com isso.

Meus melhores resultados até agora foram com GeometryReader, definindo a largura do rótulo de texto quase igual à largura do VStack circundante.

Mas infelizmente minha estrutura de alvo é muito mais complexa e essa abordagem leva a problemas nessa estrutura. Também GeometryReaderparece inapropriado fazer alinhamento.

struct ContentView: View {
    var body: some View {
        ScrollView {
            VStack(alignment: .leading) {
                
                HStack {
                    VStack(alignment: .leading) {
                        Text("Alignment Test")
                        Text("This is a longer text left aligned")
                         
                        
                        Text("10.5.2020")
                    }
                    .padding(16)
                    .background(Color.blue)
                    
                    Spacer(minLength: 50)
                }
                
                
                HStack {
                    VStack(alignment: .leading) {
                        Text("left")
                        Text("Date should rigzht align to here <-")
                        Text("10.5.2020")
                    }
                    .padding(16)
                    .background(Color.blue)
                    
                    Spacer(minLength: 50)
                }
            }
            .frame(maxWidth: .infinity, maxHeight: .infinity)
            .border(.red)
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .background(Color.gray.opacity(0.5))
    }
}

Prévias:

insira a descrição da imagem aqui

swiftui
  • 2 respostas
  • 41 Views
Martin Hope
Deepak Sharma
Asked: 2025-03-28 21:44:13 +0800 CST

Implementação do depurador discreto SwiftUI

  • 5

Estou tentando implementar um scrubber discreto com marcações de texto no SwiftUI da seguinte forma. Meu problema é que não consigo determinar a altura do HStackinterior do ScrollViewapriori, então tentei usar onGeometryChangeo modificador, mas não funciona (ou seja, o texto de sobreposição é truncado). Uma maneira de consertar é usando GeometryReadere atribuindo a altura de HStackcom base no proxy de geometria, mas quero saber se há outra maneira de sair sem usar GeometryReader.

struct ScrollScrubber: View {
    var config:ScrubberConfig
    
    @State var viewSize:CGSize?
    
    var body: some View {
        let horizontalPadding = (viewSize?.width ?? 0)/2
        
        ScrollView(.horizontal) {
            HStack(spacing:config.spacing) {
                let totalSteps = config.steps * config.count
                
                ForEach(0...totalSteps, id: \.self) { index in
                    let remainder = index % config.steps
                    Divider()
                        .background( remainder == 0 ? Color.primary : Color.gray)
                        .frame(width: 0, height: remainder == 0 ? 20 : 10, alignment: .center)
                        .frame(maxHeight: 20, alignment: .bottom)
                        .overlay(alignment: .bottom) {
                            if remainder == 0 {
                                Text("\(index / config.steps)")
                                    .font(.caption)
                                    .fontWeight(.semibold)
                                    .textScale(.secondary)
                                    .fixedSize()
                                    .offset(y:20)
                            }
                        }
                    
                }
            }
            .frame(height:viewSize?.height)
            
        }
        .scrollIndicators(.hidden)
        .safeAreaPadding(.horizontal, horizontalPadding)
        .onGeometryChange(for: CGSize.self) { proxy in
            proxy.size
        } action: { newValue in
            viewSize = newValue
            print("View Size \(newValue)")
        }


    }
}

struct ScrubberConfig:Equatable {
    var count:Int
    var steps:Int
    var spacing:CGFloat
}

#Preview {
    ScrollScrubber(config: .init(count: 100, steps: 5, spacing: 5.0))
        .frame(height:60)
}


swiftui
  • 1 respostas
  • 32 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help
subwaysurfers
my femboy roommate

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve