Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Espaçamento entre header e primeira célula no ipad

Eu estou com problemas no desenvolvimento do aplicativo e não consigo ajustar. Tem um espaço muito grande entre a header e a primeira célula, não consigo achar o local para ajustar isso, segue o link do projeto https://github.com/tamires-correa/viagensAlura

1 resposta
solução!

Oi Tamires!

Quero primeiro pedir desculpas pela demora em trazer uma solução. Essa definitivamente não é a experiência que queremos para nossos alunos.

O problema ocorre pois o arquivo Main.storyboard (Viagens > Screen > Main) está configurado para um iPhone (iPhone 17 Pro) e ao iniciar a aplicação ele vai calcular a tela de acordo com essas dimensões. Como um iPad tem uma densidade de pixels bem menor, os 300 pixels que está no arquivo TableView+ fica muito mais evidente do que no iPhone.

Porém se você alterar o Main para um iPad o resultado será o esperado, pois ele vai realizar os cálculos da tela de forma correta. Isso pode ser alterado na Barra de Configuração de Dispositivo (Device Configuration Bar) do Interface Builder, conforme imagem abaixo:

Tela do Xcode que mostra a barra de configuração do dispositivo
Mas fazer esse ajuste vai quebrar o layout no iPhone, pois o tamanho de tela é diferente. Temos portanto um impasse: como ajustar para que funcione em ambos os dispositivos?

Nesse caso vamos mudar para carregar um Main.storyboard caso seja um iPad e caso seja um iPhone.

Primeiro duplicamos o arquivo Main.Storyboard e colocamos o nome da cópia para Main_iPad.storyboard. Depois abra o arquivo e altere a Configuração de Dispositivo para um iPad.
No SceneDelegate.swift, dentro da função scene(_:willConnectTo:options:), adicione:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        
        let window = UIWindow(windowScene: windowScene)
        
        // Escolhe o Storyboard baseado no dispositivo
        let storyboardName = UIDevice.current.userInterfaceIdiom == .pad ? "Main_iPad" : "Main"
        let storyboard = UIStoryboard(name: storyboardName, bundle: nil)
        
        // Inicia a tela inicial
        let rootViewController = storyboard.instantiateInitialViewController()
        window.rootViewController = rootViewController
        self.window = window
        window.makeKeyAndVisible()
    }

Com isso seu app vai inicializar com a configuração correta caso seja um iPad ou um iPhone.

Espero que sua dúvida tenha sido resolvida e quaisquer nova dúvida (ou retorno dessa) pode contactar!