Eu tenho um projeto que foi construído no ano passado, e usa XIBs, sem storyboards. Os XIBs não usam o Layout Automático, mas eles usam algum Autosizing. Tenho um problema ao correr com o iOS7, em que todas as visualizações estão dobradas na barra de status. Compreendo perfeitamente, isso é um novo recurso com o iOS7, no qual isso pode ser esperado. No entanto, todas as soluções para corrigi-lo para não fazer isso não estão funcionando. Eu tenho uma imagem no topo da vista que sempre mostra sob a barra de status, e não estou usando barras de navegação ou algo assim. Eu tentei atualizar os Y-deltas no XIB (eles não têm efeito na visualização), tentei configurar as bordasForExtendedLayout para UIRectEdgeNone (não faz nada) e uma infinidade de outras coisas. Toda vez, a barra de status mostra com a vista escondida sob isso, não importa o que eu faça. Isso é, a menos que eu mova manualmente para baixo a vista no XIB para permitir espaço para a barra de status (mas essa solução não funciona porque ele não parece direito no iOS6, é claro). O que é estranho é que, mesmo quando eu tento uma linha de código para pender em um turno de exibição, ele não funciona (como o seguinte): Não que eu fosse com esse tipo de solução, mas é estranho que não funcionasse (o Só o tempo em que normalmente vejo que não funciona é se o Layout Automático estiver no lugar, o que não é neste caso). É um requisito de design que a barra de status mostra, e estou apenas perplexo porque não consigo configurar a exibição para estar sob a barra de status do iOS7. Eu li todas as publicações de depósito de pilha no assunto, bem como as guias de transição das maçãs. Mais uma vez, para reiterar, entendo perfeitamente como deve funcionar e qual a solução esperada para isso, mas nada disso parece estar funcionando para este projeto em particular. Eu sou um desenvolvedor iOS experiente, mas este projeto foi construído por outra equipe, então não sei se há algo escondido em algum lugar nos arquivos XIB, plist ou código que poderia estar superando as configurações acima. Por favor, deixe-me saber se há algo mais que pode ser consultado sobre isso, ou mais informações que posso fornecer. Agradeço antecipadamente perguntou 24 de setembro às 19:21 A Apple está empurrando você para usar o autolayout para realizar isso. Você precisa definir uma restrição no Guia de layout superior da sub-visualização superior em sua exibição. Veja este documento por exemplo: para fazer isso sem XIB, você precisará adicionar a restrição programaticamente. As maçãs dão um bom exemplo disso, que eu resumi abaixo. Dando que o TopLayoutGuide é uma propriedade em um controlador de exibição, você apenas usa no seu dicionário de ligações variáveis. Então você configura sua restrição como normal: Ocultando a Barra de Status Esta lição descreve como ocultar a barra de status em diferentes versões do Android. Ocultar a barra de status (e opcionalmente, a barra de navegação) permite que o conteúdo use mais espaço de exibição, proporcionando assim uma experiência de usuário mais imersiva. A Figura 1 mostra um aplicativo com uma barra de status visível: Figura 1. Barra de status visível. A Figura 2 mostra um aplicativo com uma barra de status oculta. Observe que a barra de ação também está escondida. Você nunca deve mostrar a barra de ação sem a barra de status. Figura 2. Barra de status oculta. Ocultar a barra de status no Android 4.0 e Lower Você pode ocultar a barra de status no Android 4.0 (nível API 14) e diminuir configurando sinalizadores do WindowManager. Você pode fazer isso de forma programática ou configurando um tema de atividade em seu arquivo de manifesto de aplicativos. Definir um tema de atividade em seu arquivo de manifesto de aplicativos é a abordagem preferida se a barra de status sempre permanecer escondida em seu aplicativo (embora seja estritamente falando, você poderia substituir programaticamente o tema se você quisesse). Por exemplo: as vantagens de usar um tema de atividade são as seguintes: é mais fácil de manter e menos propenso a erros do que definir uma bandeira programática. Isso resulta em transições de UI mais suaves, porque o sistema possui as informações necessárias para tornar sua UI antes de instanciar a atividade principal de seus aplicativos. Alternativamente, você pode programar os sinalizadores do WindowManager. Essa abordagem torna mais fácil esconder e mostrar a barra de status à medida que o usuário interage com sua aplicação: quando você configura os sinalizadores do WindowManager (seja por meio de um tema de atividade ou programaticamente), os sinalizadores permanecerão em vigor a menos que seu aplicativo os limpe. Você pode usar FLAGLAYOUTINSCREEN para configurar seu layout de atividade para usar a mesma área de tela disponível quando você ativou o FLAGFULLSCREEN. Isso impede que seu conteúdo seja redimensionado quando a barra de status se esconde e mostra. Ocultar a barra de status no Android 4.1 e superior Você pode ocultar a barra de status no Android 4.1 (nível API 16) e superior usando setSystemUiVisibility (). SetSystemUiVisibility () define bandeiras UI no nível de exibição individual, essas configurações são agregadas ao nível da janela. O uso de setSystemUiVisibility () para configurar bandeiras UI dá-lhe um controle maior sobre as barras do sistema do que usando sinalizadores WindowManager. Este trecho esconde a barra de status: Observe o seguinte: Uma vez que as bandeiras de UI foram limpas (por exemplo, ao navegar longe da atividade), seu aplicativo precisa redefini-las se desejar ocultar as barras novamente. Consulte Respondendo às Alterações de Visibilidade da UI para uma discussão sobre como ouvir as mudanças de visibilidade da UI para que seu aplicativo possa responder de acordo. Onde você configura as bandeiras UI faz a diferença. Se você ocultar as barras do sistema em suas atividades no método Create () e o usuário pressiona Home, as barras do sistema reaparecerão. Quando o usuário reabre a atividade, onCreate () não será chamado, então as barras do sistema permanecerão visíveis. Se quiser que as alterações de UI do sistema persistam à medida que o usuário navega dentro e fora da sua atividade, defina sinalizadores de UI no onResume () ou no OnWindowFocusChanged (). O método setSystemUiVisibility () só tem um efeito se a exibição que você chamar é visível. Navegar para longe da vista faz com que as bandeiras sejam definidas com setSystemUiVisibility () para serem apagadas. Faça o conteúdo aparecer atrás da barra de status No Android 4.1 e superior, você pode configurar o conteúdo de seus aplicativos para aparecer atrás da barra de status, de modo que o conteúdo não seja redimensionado à medida que a barra de status se esconde e mostra. Para fazer isso, use SYSTEMUIFLAGLAYOUTFULLSCREEN. Você também pode usar SYSTEMUIFLAGLAYOUTSTABLE para ajudar seu aplicativo a manter um layout estável. Quando você usa essa abordagem, torna-se sua responsabilidade garantir que as partes críticas da UI de seus aplicativos (por exemplo, os controles embutidos em uma aplicação do Google Maps) não acabem ficando cobertas pelas barras do sistema. Isso pode tornar sua aplicação inutilizável. Na maioria dos casos, você pode lidar com isso adicionando o atributo android: fitsSystemWindows ao seu arquivo de layout XML, definido como verdadeiro. Isso ajusta o preenchimento do ViewGroup pai para deixar espaço para as janelas do sistema. Isso é suficiente para a maioria dos aplicativos. Em alguns casos, no entanto, talvez seja necessário modificar o preenchimento padrão para obter o layout desejado para o seu aplicativo. Para manipular diretamente o modo como seu conteúdo é definido em relação às barras do sistema (que ocupam um espaço conhecido como as inserções de conteúdo do Windows), substitua fitSystemWindows (Rect Insets). O método fitSystemWindows () é chamado pela hierarquia de exibição quando as inserções de conteúdo de uma janela mudaram, para permitir que a janela ajuste seu conteúdo de acordo. Ao substituir este método, você pode lidar com as inserções (e, portanto, seu layout de aplicativos), como quiser. Receba dicas de amp de notícias Inscreva-se no boletim informativo
Comments
Post a Comment