Wednesday 2 August 2017

Edgesforextendedlayout Apple


A partir do iOS7, os controladores de vista usam o layout de tela cheia por padrão. Ao mesmo tempo, você tem mais controle sobre como expõe suas visualizações, e isso é feito com essas propriedades: Basicamente, com essa propriedade você define quais lados de sua visão podem ser estendidos para cobrir toda a tela. Imagine que você empurre um UIViewController em um UINavigationController. Quando a exibição desse controlador de exibição é estabelecida, ele será iniciado onde a barra de navegação termina, mas essa propriedade irá definir quais lados da exibição (parte superior, esquerda, inferior, direita) podem ser estendidos para preencher a tela inteira. Vamos vê-lo com um exemplo: Aqui você não está definindo o valor de edgesForAxtendedLayout. Portanto, o valor padrão é tomado (UIRectEdgeAll), portanto, a exibição estende seu layout para preencher a tela inteira. Este é o resultado: Como você pode ver, o fundo vermelho se estende atrás da barra de navegação ea barra de status. Agora, você vai definir esse valor para UIRectEdgeNone. Então você está dizendo o controlador de exibição para não estender a exibição para cobrir a tela: Esta propriedade é usada quando sua exibição é um UIScrollView ou similar, como um UITableView. Você quer que sua tabela comece onde a barra de navegação termina, porque você não vai ver todo o conteúdo se não, mas ao mesmo tempo você quer que sua tabela para cobrir toda a tela ao percorrer. Nesse caso, a definição de edgesForFextendedLayout para Nenhum irá funcionar porque a sua tabela irá iniciar a rolagem onde a barra de navegação termina e ela não vai atrás dela. Aqui é onde esta propriedade vem a calhar, se você deixar o controlador de visualização ajustar automaticamente as inserções (configuração esta propriedade para YES, também o valor padrão) ele irá adicionar inserir para o topo da tabela, para que a tabela vai começar onde a navegação Barra termina, mas o pergaminho irá cobrir toda a tela. Isto é, quando é definido como NÃO: E SIM (por predefinição): Em ambos os casos, a tabela rola atrás da barra de navegação, mas no segundo caso (SIM), começará por debaixo da barra de navegação. Este valor é apenas uma adição aos anteriores. Se a barra de status for opaca, as exibições não serão estendidas para incluir a barra de status também, a menos que este parâmetro seja SIM. Portanto, se você estender sua exibição para cobrir a barra de navegação (edgesForExtendedLayout para UIRectEdgeAll) eo parâmetro é NO (padrão) ele não vai cobrir a barra de status se o seu opaco. Se algo não está claro, escrever um comentário e resposta mal a ele. Como o iOS sabe o que o UIScrollView usa para usar o iOS agarra a primeira subvisão na sua visualização de viewcontrollers, então a que está no índice 0, e se for uma subclasse do UIScrollView, aplica as propriedades explicadas a ela. Naturalmente, isso significa que o UITableViewController funciona por padrão (uma vez que o UITableView é a primeira visualização).Desenvolver o seu desenvolvedor de aplicativos internos Parte 26: Xcode 5 Auto Layout Wrapup Por Kevin McNeish atualizado em 02/04/2014 Você tem uma idéia para um App, mas falta o conhecimento de programação para começar a construí-lo Nesta série de blog semanal, vou levá-lo, o não-programador, passo a passo através do processo de criação de aplicativos para o iPhone, iPod touch e iPad. Junte-se a mim cada semana nesta aventura, e você vai experimentar o quanto de diversão transformar suas idéias em realidade pode ser Esta é a Parte 26 da série. Se você está apenas começando, confira o início da série aqui. No meu post anterior, passamos pelas etapas de converter a cena Write Review em iAppsReview para iOS 7 e Xcode 5. Neste post iriam atualizar algumas cenas mais e aprender informações ainda mais importantes sobre Auto Layout, iOS 7s default edge - E como especificar um matiz global para o seu aplicativo Você pode obter a versão mais recente do projeto iAppsReview neste link. Eu recomendo que você siga junto com as etapas neste post para a melhor experiência de aprendizagem, mas se você ficar preso ao longo do caminho, você pode encontrar o projeto concluído neste link. Conteúdo Edge-to-Edge do iOS 7s Uma das maiores alterações que afeta os projetos que você atualiza é o novo layout de conteúdo borda-a-borda do iOS 7s. No iOS 7, a Apple redesenhou toda a aparência do sistema operacional com vista a elevar o conteúdo dos usuários. Você pode ver isso em aplicativos internos, como Weather, Calendar e Music (Figura 1). Figura 1 - Os aplicativos integrados do iOS 7 atualizados fornecem conteúdo de ponta a ponta. Como parte dessa abordagem para o design da interface do usuário, as barras de status, as barras de navegação e as barras de ferramentas agora são translúcidas e, por isso, os controladores de exibição agora usam um layout em tela cheia. Para ver isso em ação, vamos dar uma olhada na cena Review no projeto iAppsReview. No Xcode, abra o projeto iAppsReview. Se o storyboard ainda não estiver selecionado, vá para o Navegador de Projetos e selecione o arquivo MainStoryboard. Vá até a cena de Revisão, conforme mostrado na Figura 2. Figura 2 - A cena de revisão Se você olhar de perto, você pode ver que os rótulos no topo da cena estão escondidos embaixo da barra de navegação. No iOS 6, esses rótulos foram posicionados abaixo da barra de navegação, porque a vista principal estava posicionada abaixo dela. No iOS 7, a vista é posicionada no topo da cena sob a barra de navegação, ocultando as etiquetas. Como podemos corrigir isso No iOS 7, os controladores de exibição têm uma nova propriedade edgesFindustExtended que especifica quais bordas (parte superior, inferior, esquerda e direita) de uma exibição devem se estender para a borda da tela. A configuração padrão é UIRectEdgeAll. Que especifica que todas as arestas da exibição devem se estender para a borda da tela. Tanto no iOS 6 como no iOS 7, a maioria das visualizações estende-se normalmente à margem esquerda e direita da tela. No iOS 7, as bordas superior e inferior são aquelas que você normalmente deseja alterar. Você pode escrever algum código para definir os controladores de exibição edgeForExtendedLayout propriedade no método viewDidLoad de um controlador de exibição, mas o seu melhor para configurá-lo no Attributes Inspector. Vamos fazer isso agora. Modificando a Cena de Revisão Para começar, vamos corrigir o problema com o conteúdo das cenas escondido abaixo da barra de navegação. No storyboard, clique na barra de status na parte superior da cena Review para selecionar o controlador de exibição de cenas. (Um destaque azul aparece ao redor da cena quando você selecionou corretamente). Vá para o Inspetor de Atributos (o terceiro botão da direita na barra de ferramentas Inspetores) e na seção View Controller você pode ver os três atributos para Extensão de Bordas mostrado na Figura 3. Figura 3 - Os atributos de extensão de bordas Desmarque as opções Barras inferiores e Barras inferiores. Quando você fizer isso, a exibição principal na cena Revisão é exibida abaixo da barra de navegação e os rótulos são agora visíveis (Figura 4). Figura 4 - Vista posicionada abaixo da barra de navegação Desmarcar estas opções tem o mesmo efeito que executar a seguinte linha de código, que especifica que os lados esquerdo e direito da vista devem ser estendidos para a borda da tela (mas Parte inferior não deve): A configuração Barras opacas (Figura 4) entra em jogo se você alterou a barra de navegação ou as barras de ferramentas de translúcida para opaca. Por padrão, essa configuração é desmarcada, porque geralmente não faz sentido ampliar uma exibição sob uma barra superior ou inferior que é opaca Agora que temos a visão configurada corretamente, vamos corrigir o layout dos controles da interface do usuário. Primeiro, vamos excluir as restrições existentes no controlador de exibição. Para fazer isso, deixe o controlador de exibição selecionado e, em seguida, vá para o menu Layout automático (barra de ferramentas) no canto inferior direito do painel Interface Builder e do botão Resolve Auto Layout Issues, selecione Limpar todas as restrições no Review View Controller Figura 5). Figura 5 - Limpe todas as restrições do controlador de visualização. Essa cena em particular destina-se a ser somente leitura (o usuário pode ler uma revisão anterior, mas não editá-la). Para cancelar a edição, selecione o controle de classificação de estrela (o retângulo branco grande abaixo do rótulo Entretenimento) e vá para o Inspetor de atributos e desmarque a caixa de seleção Interação do usuário habilitada (Figura 6). Figura 6 - Desmarque a interação do usuário ativada Em seguida, selecione o controle UITextView na cena Review. Vá para o Inspetor de atributos e desmarque a opção Editable (Figura 7). Figura 7 - Desmarque a opção Editável Agora, vamos redimensionar o controle de classificação da estrela, que se tornou superdimensionado quando movemos o projeto para o iOS 7. Selecione o controle de classificação da estrela na superfície de design, vá para o Inspetor de Tamanho (o segundo botão da direita em A barra de ferramentas do Inspetor) e altere a Altura para 60 (Figura 8). Figura 8 - O Inspetor de Tamanho Agora permite que a tela Review reflita o layout da tela Write Review. Eu não vou fornecer instruções detalhadas para isso desde que eu já fiz no meu post anterior, mas aqui estão os principais passos que você precisa para executar. (Ao mover cada controle, certifique-se de que as linhas de guia pontilhadas a azul aparecem horizontal e verticalmente quando você coloca os controles.): Mova o controle de classificação de estrelas abaixo do rótulo Entretenimento. Mova a visualização da imagem para a direita do controle de classificação da estrela. Mova o UITextView abaixo dos controles de classificação de estrelas e visualização de imagem e, em seguida, aumente a altura arrastando a borda inferior até ver a linha de guia horizontal aparecer perto da parte inferior da cena. Quando terminar, a cena deve ser semelhante à da Figura 9. Figura 9 - Os controles rearranjados Permite agora que o Xcode gere novas restrições para a cena. Para fazer isso, clique na barra de status na parte superior da cena Revisar para selecionar o controlador de exibição. Em seguida, vá para o menu Auto Layout no canto inferior direito do painel Interface Builder, clique no botão Resolve Auto Layout Issues e selecione Reset to Suggested Constraints no Review Controller no menu popup (Figura 10). Figura 10 - Restrições de redefinição no controlador de visualização O esquema de cenas de revisão é muito semelhante ao da cena de revisão de gravação. Precisamos dar mais um passo para que o controle de classificação por estrela não se redimensione quando a orientação do dispositivo for alterada para paisagem. Veja se você pode descobrir como fazer isso. Se você precisar de uma dica, você pode olhar para o meu post anterior para ver como foi feito (veja a seção Tweaking the Constraints). Agora estavam prontos para testar a cena. No controle Scheme no canto superior esquerdo da janela Xcode, verifique se iPhone Retina (3,5 polegadas) está selecionado e, em seguida, clique em Xcodes botão Executar. Quando o aplicativo aparecer no Simulador, selecione a opção Ler suas avaliações e clique em qualquer uma das revisões na lista. Sua cena de Revisão deve se parecer com a Figura 11. Figura 11 - O SceneView atualizado é exibido sob a barra de status no iOS 7 e EdgesForExtendedLayout não ajuda. Estou tendo um problema que minha exibição é exibida sob a barra de status. Após a pesquisa eu achei que eu tinha que adicionou this. EdgesForExtendedLayout UIRectEdge. None para o ViewDidLoad () do ViewController, mas não funciona para mim. Como referência eu usei o exemplo helloiPad de xamarin (docs. xamarin / samples / HelloiPad) Adicionado um rótulo posicionando-o na parte superior da tela em IB. Em iOS6 seu exibido corretamente. Agora eu adicionei a linha this. EdgesForExtendedLayout UIRectEdge. None e executá-lo no simulador iOS7, o rótulo é exibido na barra de status. O que estou fazendo de errado

No comments:

Post a Comment