Monday 19 March 2018

Edgesforextendedlayout ios


Edgesforextendedlayout ios
Obter através da App Store Leia esta publicação em nosso aplicativo!
iOS7 - Exibir sob a barra de status - edgeForExtendedLayout não está funcionando.
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 exibição 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 ela não parece direito no iOS6, é claro).
O que é estranho é que, mesmo quando eu tento uma linha de código para cortar em um turno de exibição, isso não funciona (como o seguinte):
.. Não é que eu iria com esse tipo de solução, mas é estranho que não funcionasse (a única vez que eu 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 postagens de Depuração de Pilha no assunto, bem como a transição / guias da Apple. Mais uma vez, para reiterar, compreendo perfeitamente como deve funcionar e qual a solução esperada para isso, mas nada disso parece estar funcionando para esse projeto específico.
Eu sou um desenvolvedor experiente de iOS, mas esse 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 possam 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.
Desde já, obrigado!
Se você definir os valores delta do iOS 6/7 no Interface Builder, lembre-se de configurar "Ver como" para "iOS 6" no Documento do Builder da interface, já que é o layout do iOS 6 que deseja replicar. Os deltas serão então usados ​​apenas no iOS 7 para empurrar o conteúdo abaixo da barra de status. Se você deixar o "Ver como" configurado para o iOS 7 (o padrão), os deltas, em vez disso, oferecerão o iOS 7 no iOS 6.
No entanto, os deltas não irão ajudá-lo se você reposicionar ou redimensionar visualizações de forma programática com base no quadro de exibição, já que o quadro não é responsável pelos deltas.
Em vez de usar os deltas, a melhor solução que encontrei é habilitar o Layout Automático em seu XIB principal e, em seguida, definir a restrição de espaço superior na sua visualização superior / conteúdo para seguir o Guia de Layout Superior. Este guia foi introduzido no iOS 7 e representa a posição abaixo da barra de status. Infelizmente, o guia não está disponível no Interface Builder quando não estiver usando Storyboards, mas você pode adicioná-lo de forma programática.
O que eu fiz foi adicionar uma restrição de espaço superior ao superview em vez do Interface Builder e crie uma saída para isso no código. Então, no viewDidLoad, se o TopLayoutGuide estiver disponível (iOS 7+), substitua a restrição nesta saída por uma versão usando o Guia de Layout Superior.
Para referência, a solução abaixo funcionou quando eu apliquei no meu ViewControllers. No entanto, não é ideal e um pouco complicado. Se é a única abordagem que eu posso tomar, então seja assim.
A Apple está empurrando você para usar o autolayout para realizar isso. Você precisa definir uma restrição no "Guia de Layout Superior" da subvista superior em sua exibição.
Veja este documento por exemplo:
Para fazer isso sem XIB, você precisará adicionar a restrição programaticamente. Os documentos da Apple 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:
1) A solução mais simples se você não se importar com uma barra de navegação opaca:
2) A resposta do svguerin3 não pode funcionar no caso geral. Por exemplo, se uma das suas sub-visualizações usar autosizing para ser enganchado na parte inferior do seu contêiner, sua nova posição será errada. E poderia sair da tela no pior caso.
Você tentou visualizar seus XIBs como fonte e remover qualquer linha que contenha bordas antes da extensão?
Tivemos que remover esta linha nas cenas do nosso storyboard, já que as visões principais das cenas do storyboard são representadas por XIBs.
O que estava acontecendo para nós era que, de alguma forma, em algumas cenas, o conteúdo XIB para a visão principal da cena estava sendo pressionado pelo alto da barra de status e da barra de navegação.
A remoção dessa linha permitiu que os XIBs fossem exibidos como se o seu topo se tivesse originado na mesma parte superior da cena do storyboard.
Infelizmente, não temos idéia do que desencadeou isso, mas eu vi isso acontecer ao mudar a ordem do conteúdo dentro da visão principal do XIB de modo que um UITextView apareceu primeiro. Reorganizar a ordem dos itens depois disso foi desencadeada não teve efeito na remoção desse comportamento indesejado.
Espero que isso ajude qualquer outra pessoa a correr para este tipo de problema.
Se você estiver usando o storyboard, depois de configurar o layout superior da sua visão, você pode desmarcar as barras "Under Opaque" no Inspetor de atributos.

Edgesforextendedlayout ios
Obter através da App Store Leia esta publicação em nosso aplicativo!
Explicando a diferença entre automaticAdjustsScrollViewInsets, extendedLayoutIncludesOpaqueBars, edgesForExtendedLayout no iOS7.
Eu tenho lido muito sobre a transição do IOS7 UI.
Não consigo obter o que estas três propriedades automaticamenteAdjustsScrollViewInsets, extendedLayoutIncludesOpaqueBars, edgesForExtendedLayout ??
Por exemplo, estou tentando fazer meus controladores de exibição começar abaixo da barra de status, mas não consigo alcançá-lo.
Começando no iOS7, os controladores de exibição usam o layout de tela inteira por padrão. Ao mesmo tempo, você tem mais controle sobre como ele expõe seus pontos de vista, e isso é feito com essas propriedades:
Basicamente, com esta propriedade, você define quais lados da sua visão podem ser estendidos para cobrir toda a tela. Imagine que você empurre um UIViewController para um UINavigationController. Quando a exibição desse controlador de visualização é estabelecida, ele iniciará onde a barra de navegação termina, mas essa propriedade irá definir quais lados da vista (superior, esquerda, inferior, direita) podem ser estendidos para preencher a tela inteira.
Vamos vê-lo com um exemplo:
Aqui você não está configurando o valor de edgesForExtendedLayout, portanto, o valor padrão é tomado (UIRectEdgeAll), então a exibição amplia seu layout para preencher toda a tela.
Este é o resultado:
Como você pode ver, o fundo vermelho se estende por trás da barra de navegação e da barra de status.
Agora, você vai definir esse valor para UIRectEdgeNone, então você está dizendo ao controlador de exibição para não estender a exibição para cobrir a tela:
Essa propriedade é usada quando sua exibição é UIScrollView ou similar, como um UITableView. Você quer que sua mesa comece onde a barra de navegação termina, porque você não verá todo o conteúdo se não, mas ao mesmo tempo você deseja que sua mesa cubra toda a tela quando se desloca. Nesse caso, a definição de bordasForExtendedLayout para Nenhum não funcionará porque sua tabela começará a rolar onde a barra de navegação termina e não vai atrasá-la.
Aqui é onde esta propriedade é útil, se você deixar o controlador de exibição ajustar automaticamente as inserções (configurando esta propriedade para SIM, também o valor padrão), ele irá adicionar inserções no topo da tabela, então a tabela começará onde a navegação A barra termina, mas o pergaminho cobrirá toda a tela.
É quando é definido como NÃO:
E SIM (por padrão):
Em ambos os casos, a tabela se desliza para trás da barra de navegação, mas no segundo caso (SIM), ele irá começar por baixo da barra de navegação.
Esse valor é apenas uma adição aos anteriores. Por padrão, esse parâmetro é definido como NO. Se a barra de status for opaca, as visualizações não serão estendidas para incluir a barra de status, mesmo se você estender sua visão para cobri-la (edgeForExtendedLayout para UIRectEdgeAll).
Se você definir o valor como SIM, isso permitirá que a visão vá novamente debaixo da barra de status.
Se algo não estiver claro, escreva um comentário e vou responder.
Como o iOS sabe o que o UIScrollView usa?
O iOS agarra a primeira sub-visualização na visão do ViewController, a do índice 0, e se é uma subclasse do UIScrollView, então aplica as propriedades explicadas a ela.
Claro, isso significa que o UITableViewController funciona por padrão (uma vez que o UITableView é a primeira visualização).
Não tenho certeza se você está usando storyboards, mas se você for, para fazer seus controladores de exibição começarem abaixo da barra de status (e acima da barra inferior):
Selecione o controlador de visualização no IB, no inspetor de atributos, desmarque 'Extendir bordas - Em barras superiores' e 'Ampliar bordas - em barras inferiores'.
Estou usando storyboards e usando o conselho acima, no entanto, não sabia exatamente como implementá-lo. Abaixo está um pequeno exemplo no modo como ele esclareceu o problema colocando a solução recomendada no ViewController.
Meu Problema: Auto Adjust definido como true por padrão causando uma diferença entre o design do storyboard e o simulador.
Resolvido: Código acima aplicado, desligando o ajuste automático.
Resolvi esse problema ao adicionar esta linha, mas meu problema estava relacionado a um UIView, não ao UIScrollView.
Basta ter em mente que a propriedade AutomaticAdjustsScrollViewInsets funciona somente se algum tipo de exibição de rolagem (exibição de tabela, exibição de coleção) for.
A visão do VC, ou Primeira subvisão desta visão.
Outro sugerido, que ele funciona, mesmo que seja a primeira subvisão, mas existem outras visualizações de rolagem na hierarquia de exibição.
EDITAR (extensão DIY)
Se você quiser um comportamento semelhante mesmo que não possa cumprir essas condições (por exemplo, você tem uma imagem de fundo abaixo da visualização de rolagem), você pode ajustar manualmente as inserções de exibição de rolagem. Mas, por favor, não configurá-lo como constante, como 44 ou 64 ou mesmo 20 como muitos sugerem em torno de SO. Você não pode conhecer o tamanho de todos. Pode haver notificação de incall / gps / audio, a barra de navegação não precisa estar sempre 44 pts, etc.
Eu acho que a melhor solução é usar o comprimento layoutGuide em didLayoutSubviews:
Você pode usar o guia bottomLayout da mesma maneira.

A vista é exibida na barra de status no iOS 7 e EdgesForExtendedLayout não ajuda.
Estou tendo um problema que minha visão é exibida na barra de status.
Depois de pesquisar, descobri que tinha que adicionar "this. EdgesForExtendedLayout = UIRectEdge. None;" para o ViewDidLoad () do ViewController, mas não funciona para mim.
Como referência, usei o exemplo hello_iPad de xamarin (docs. xamarin / samples / Hello_iPad)
Adicionou uma etiqueta colocando-a no topo da tela no IB.
No iOS6, ele é 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?
Tente usar este código.
Eu tenho um problema semelhante.
Estou checando a versão do iOS e se a versão for 7, eu estou configurando a variável "EdgesForExtendedLayout = UIRectEdge. None;"
Estou configurando essa variável para o controlador de exibição de raiz da janela no método viewDidLoad () após base. ViewDidLoad ().
Mas a exibição ainda aparece na barra de status.
Estou usando o Xamarin (4.0412 (build 3)),
Apple Developer Tools Xcode 5.0 (3332.25),
Xamarin. iOS Versão: 7.0.1.4 (Business Edition),
Mono 3.2.3 ((no / 8d3b4b7),
Sistema Operacional Mac OS X 10.8.5.
Isso também não funcionou para mim.
No final, eu resolvi projetando para iOS 7 e configurações delta's no Interface Builder para iOS 6, isso resolveu para mim.
Eu acho que pensou em tentar colocar a configuração EdgesForExtendedLayout no método viewwillappear.
Você poderia tentar isso e ver se isso funciona.
Em primeiro lugar, obrigado pela sua resposta.
@AndrewReed eu tento colocar EdgesForExtendedLayout configuração para viewwillappear, mas sem sorte.
@YvoNelemans vou tentar a sua sugestão, e vai escrever, se isso ajudou ou não.
Consegui trabalhar com uma tradução da solução aqui:
Coloque isso em ViewWillAppear (boolean):
Verifique se o código por @MatGiaimo só é executado uma vez. Se você retornar para a exibição não deve ser executado novamente, caso contrário, a visualização se moverá para baixo.
Eu corri para a questão @HugoLogmans traz um tempo atrás e acabou com uma simples bandeira bool para evitar fazê-lo repetidamente, o que pode acontecer ao alternar entre controladores em guias.
Em um projeto onde eu tenho todos os layouts feitos programaticamente, acabei com esse código no UIViewController. Ele também usa o TopLayoutGuide fornecido pelo iOS para evitar a codificação de todos os valores. (Nota: o Centro de ajuste em vez do quadro significa que a vista que está sendo movida não terá que se redesenhar.)
(Além disso, se você não estiver usando a API unificada, altere o CGPoint para PointF).
Eu corri para a questão @HugoLogmans traz um tempo atrás e acabou com uma simples bandeira bool para evitar fazê-lo repetidamente, o que pode acontecer ao alternar entre controladores em guias.
Em um projeto onde eu tenho todos os layouts feitos programaticamente, acabei com esse código no UIViewController. Ele também usa o TopLayoutGuide fornecido pelo iOS para evitar a codificação de todos os valores. (Nota: o Centro de ajuste em vez do quadro significa que a vista que está sendo movida não terá que se redesenhar.)
(Além disso, se você não estiver usando a API unificada, altere o CGPoint para PointF).
Sua solução colocou a vista abaixo do statusBar, no entanto, moveu o bit inferior da vista fora da vista. Qualquer indício de como posso limitar a exibição para ser visível de uma vez sem o statusBar sobrepundo.

bordas para layout estendido.
As bordas que você estende para seu controlador de exibição.
Declaração.
Discussão.
Em vez dessa propriedade, use a área segura da sua visão para determinar quais partes da sua interface estão ocluídas por outros conteúdos. Para obter mais informações, consulte o Guia de Layout de área seguro e as propriedades seguras da Área de inserções do UIView.
No iOS 10 e anterior, use esta propriedade para informar quais bordas do seu controlador de exibição se estendem por baixo das barras de navegação ou outras exibições fornecidas pelo sistema. O valor padrão dessa propriedade é tudo, e é recomendável que você não altere esse valor.
Se você remover um valor de borda dessa propriedade, o sistema não apresenta seu conteúdo por baixo de outras barras na mesma borda. Além disso, o sistema fornece um fundo padrão para que as barras translúcidas tenham uma aparência apropriada. O controlador de visualização raiz da janela não reage a essa propriedade.
Configurando o Comportamento de Layout da Visualização.
Um valor booleano que indica se o layout estendido inclui barras opacas.
Chamado a notificar o controlador de visualização de que sua exibição está prestes a criar suas sub-apresentações.
Chamado a notificar o controlador de visualização que a sua visão acabou de arquivar suas submissões.
Chamado quando a visão do controlador de exibição # ™27 precisa atualizar suas restrições.

UIView Controller.
Um objeto que gerencia uma hierarquia de exibição para seu aplicativo UIKit.
A classe UIView Controller define o comportamento compartilhado comum a todos os controladores de visualização. Você raramente cria instâncias da classe UIView Controller diretamente. Em vez disso, você subclasse UIView Controller e adicione os métodos e propriedades necessários para gerenciar a hierarquia de visão do controlador de exibição # x27.
As principais responsabilidades do controlador de visualização incluem o seguinte:
Atualizando o conteúdo das visualizações, geralmente em resposta a alterações nos dados subjacentes.
Respondendo às interações do usuário com visualizações.
Redimensionando visualizações e gerenciando o layout da interface geral.
Coordenando com outros objetos - incluindo outros controladores de exibição - no seu aplicativo.
Um controlador de visualização está fortemente ligado às visualizações que administra e participa no gerenciamento de eventos em sua hierarquia de exibição. Especificamente, os controladores de exibição são objetos UIResponder e são inseridos na cadeia de resposta entre a vista de raiz do controlador de exibição e a supervisão dessa visão, que tipicamente pertence a um controlador de exibição diferente. Se nenhuma das vistas do controlador de exibição lidar com um evento, o controlador de exibição tem a opção de manipular o evento ou passá-lo para o superview.
Os controladores de visualização raramente são usados ​​isoladamente. Em vez disso, você geralmente usa vários controladores de exibição, cada um dos quais possui uma parte da interface do usuário do seu aplicativo. Por exemplo, um controlador de exibição pode exibir uma tabela de itens enquanto um controlador de exibição diferente exibe o item selecionado dessa tabela. Normalmente, apenas as visualizações de um controlador de exibição são visíveis de cada vez. Um controlador de visualização pode apresentar um controlador de exibição diferente para exibir um novo conjunto de visualizações, ou pode atuar como um contêiner para o conteúdo de outros controladores de visualização e animar as visualizações, no entanto, ele quer.
Notas de subclasse.
Cada aplicativo contém pelo menos uma subclasse personalizada do UIView Controller. Mais frequentemente, os aplicativos possuem muitos controladores de visualização personalizados. Os controladores de visualização personalizados definem os comportamentos gerais do seu aplicativo, incluindo a aparência do aplicativo e como ele responde às interações do usuário. As seções a seguir fornecem uma breve visão geral de algumas das tarefas que sua subclasse personalizada executa. Para obter informações detalhadas sobre como usar e implementar controladores de exibição, consulte Exibir o Guia de Programação do Controlador para iOS.
Exibir gerenciamento.
Cada controlador de visualização gerencia uma hierarquia de exibição, cuja visão de raiz é armazenada na propriedade de exibição dessa classe. A vista de raiz age principalmente como um contêiner para o resto da hierarquia de exibição. O tamanho e a posição da vista de raiz são determinados pelo objeto que o possui, que é um controlador de exibição pai ou a janela do aplicativo. O controlador de exibição que é propriedade da janela é o controlador de visualização raiz do aplicativo e sua exibição é dimensionada para preencher a janela.
Os controladores de visualização carregam suas visualizações preguiçosamente. Acessar a propriedade view por primeira vez carrega ou cria as visualizações do controlador de exibição. Há várias maneiras de especificar as visualizações para um controlador de visualização:
Especifique o controlador de exibição e suas visualizações no Storyboard do seu aplicativo. Os storyboards são a maneira preferida de especificar suas visualizações. Com um storyboard, você especifica as visualizações e suas conexões para o controlador de exibição. Você também especifica os relacionamentos e segues entre seus controladores de visualização, o que torna mais fácil ver e modificar o comportamento do seu aplicativo.
Para carregar um controlador de visualização de um storyboard, chame o instantiate View Controller (com o método Identifier :) do objeto UIStoryboard apropriado. O objeto do storyboard cria o controlador de exibição e o retorna ao seu código.
Especifique as visualizações para um controlador de visualização usando um arquivo Nib. Um arquivo nib permite que você especifique as visualizações de um único controlador de visualização, mas não permite que você defina segues ou relações entre os controladores de exibição. O arquivo nib também armazena apenas informações mínimas sobre o próprio controlador de visualização.
Para inicializar um objeto do controlador de visualização usando um arquivo nib, crie sua classe de controlador de visualização de forma programática e inicialize-o usando o método init (nib Name: bundle :). Quando suas visualizações são solicitadas, o controlador de exibição os carrega do arquivo nib.
Especifique as visualizações para um controlador de visualização usando o método Load View (). Nesse método, crie sua hierarquia de visualizações de forma programática e atribua a vista de raiz dessa hierarquia à propriedade de exibição do controlador de exibição.
Todas essas técnicas têm o mesmo resultado final, que é criar o conjunto apropriado de visualizações e expô-las através da propriedade view.
Um controlador de visualização é o único proprietário de sua visão e todas as sub-estradas que ele cria. É responsável por criar esses pontos de vista e por renunciar à sua propriedade nos momentos apropriados, como quando o próprio controlador de exibição é lançado. Se você usa um storyboard ou um arquivo de nib para armazenar seus objetos de exibição, cada objeto de controle de exibição obtém automaticamente sua própria cópia dessas vistas quando o controlador de exibição as solicitar. No entanto, se você criar suas visualizações manualmente, cada controlador de exibição deve ter seu próprio conjunto exclusivo de visualizações. Você não pode compartilhar visualizações entre os controladores de exibição.
A vista de raiz do controlador de visualização sempre é dimensionada para se ajustar ao espaço atribuído. Para outras visualizações em sua hierarquia de exibição, use o Builder de Interface para especificar as restrições de Layout Automático que regem como cada visualização está posicionada e dimensionada dentro dos limites de sua supervisão. Você também pode criar restrições de forma programática e adicioná-las às suas visualizações em momentos apropriados. Para obter mais informações sobre como criar restrições, consulte o Guia de layout automático.
Manipulação de notificações relacionadas à exibição.
Quando a visibilidade de suas visualizações muda, um controlador de exibição chama automaticamente seus próprios métodos para que subclasses possam responder à alteração. Use um método como a visualização Aparecerá (_ :) para preparar suas visualizações para aparecer na tela, e use a visão desaparecerá (_ :) para salvar as alterações ou outras informações de estado. Use outros métodos para fazer as mudanças apropriadas.
A Figura 1 mostra os possíveis estados visíveis para as visualizações de um controlador de visualização e as transições de estado que podem ocorrer. Nem todos os métodos de retorno de chamada 'will' são emparelhados com apenas um método de retorno de chamada 'did'. Você precisa garantir que, se você iniciar um processo em um método de retorno de chamada 'will', você encerra o processo tanto no 'feito' quanto no método de retorno de chamada 'will'.
Transições de estado válidas.
Manipulação de rotações de visualização.
A partir do iOS 8, todos os métodos relacionados à rotação estão obsoletos. Em vez disso, as rotações são tratadas como uma alteração no tamanho da visualização do controlador de exibição e, portanto, são relatadas usando a opção Will Transition (para: com :). Quando a orientação da interface muda, UIKit chama esse método no controlador de visualização raiz da janela. Esse controlador de visualização notifica os controladores de exibição infantil, propagando a mensagem em toda a hierarquia do controlador de exibição.
No iOS 6 e no iOS 7, o seu aplicativo suporta as orientações da interface definidas no arquivo Info. plist da sua aplicação. Um controlador de visualização pode substituir o método de Orientação de Interface suportado para limitar a lista de orientações suportadas. Normalmente, o sistema chama este método apenas no controlador de vista de raiz da janela ou um controlador de exibição apresentado para preencher toda a tela; Os controladores de visualização infantil usam a parte da janela fornecida pelo controlador de exibição pai e não participam mais diretamente nas decisões sobre quais rotações são suportadas. A interseção da máscara de orientação do aplicativo ★ ★ ™ e a máscara de orientação do controlador de visualização € é usada para determinar quais orientações um controlador de exibição pode ser girado.
Você pode substituir a Orientação de interface preferencial para apresentação para um controlador de visualização que se destina a ser apresentado em tela cheia em uma orientação específica.
Quando ocorre uma rotação para um controlador de exibição visível, a opção Girar (para: duração :), Animar Rotação (para: duração :) e Rotação (a partir de :) métodos são chamados durante a rotação. O método View Will Layout Subviews () também é chamado depois que a vista é redimensionada e posicionada por seu pai. Se um controlador de visualização não estiver visível quando ocorrer uma alteração de orientação, os métodos de rotação nunca serão chamados. No entanto, o método Will Layout Subvers () é chamado quando a vista se torna visível. Sua implementação deste método pode chamar o método de orientação de barra de status para determinar a orientação do dispositivo.
No momento do lançamento, as aplicações sempre devem configurar sua interface em uma orientação vertical. Após o aplicativo (_: o método Finalizar o lançamento com Opções :) retorna, o aplicativo usa o mecanismo de rotação do controlador de visualização descrito acima para girar as visualizações para a orientação apropriada antes de exibir a janela.
Implementando um controlador de exibição de contêiner.
Uma subclasse personalizada do UIView Controller também pode atuar como um controlador de exibição de contêiner. Um controlador de exibição de contêiner gerencia a apresentação do conteúdo de outros controladores de exibição que possui, também conhecido como controladores de exibição infantil. A visualização de uma criança pode ser apresentada como-ou em conjunto com visualizações pertencentes ao controlador de exibição de contêiner.
Sua subclasse do controlador de exibição de contêiner deve declarar uma interface pública para associar seus filhos. A natureza desses métodos depende de você e depende da semântica do contêiner que você está criando. Você precisa decidir quantos filhos podem ser exibidos pelo seu controlador de visualização de uma só vez, quando essas crianças são exibidas e onde elas aparecem na hierarquia de visão do seu controlador de visualização & # x27; €. A sua classe de controlador de visualização define quais relacionamentos, se houver, são compartilhados pelas crianças. Ao estabelecer uma interface pública limpa para seu contêiner, você garante que as crianças usem suas capacidades logicamente, sem acessar muitos detalhes particulares sobre como seu contêiner implementa o comportamento.
Seu controlador de exibição de contêiner deve associar um controlador de exibição filho com ele próprio antes de adicionar a exibição de raiz da criança / x27; € ™ s para a hierarquia de exibição. Isso permite que o iOS encaminhe adequadamente eventos para controladores de exibição infantil e as visualizações que esses controladores gerenciam. Da mesma forma, depois que remove a visão de raiz de uma criança de sua hierarquia de exibição, ele deve desconectar esse controlador de exibição filho de si mesmo. Para criar ou quebrar essas associações, seu contêiner chama métodos específicos definidos pela classe base. Esses métodos não devem ser chamados pelos clientes de sua classe de contêiner; eles devem ser usados ​​apenas pela implementação do seu recipiente para fornecer o comportamento de contenção esperado.
Aqui estão os métodos essenciais que você pode precisar chamar:
Não é necessário substituir quaisquer métodos ao criar um controlador de exibição de contêiner.
Por padrão, os retornos de rotação e aparência são encaminhados automaticamente para crianças. Você pode, opcionalmente, substituir os métodos de rotação Automatically Forward Rotation () e deve encaminhar automaticamente os métodos de aparência métodos para assumir o controle deste comportamento você mesmo.
Gerenciamento de memória.
A memória é um recurso crítico no iOS, e os controladores de visualização fornecem suporte interno para reduzir a pegada da memória em momentos críticos. A classe UIView Controller fornece algum tratamento automático de condições de baixa memória através do método Receive Memory Warning (), que libera memória desnecessária.
Preservação e Restauração do Estado.
Se você atribuir um valor à propriedade de Identificação de restauração do controlador de visualização, o sistema pode solicitar que o controlador de visualização se codifique quando o aplicativo transitar para o plano de fundo. Quando preservado, um controlador de visualização preserva o estado de qualquer visualização em sua hierarquia de exibição que também possui identificadores de restauração. Os controladores de visualização não guardam automaticamente nenhum outro estado. Se você estiver implementando um controlador de exibição de contêiner personalizado, você deve codificar qualquer controlador de exibição infantil. Cada filho que você codifica deve ter um identificador de restauração exclusivo.
Para obter mais informações sobre como o sistema determina quais controladores de exibição preservar e restaurar, consulte o Guia de programação de aplicativos para iOS.
Criando um View Controller Programmatically.
Retorna um controlador de exibição recém-inicializado com o arquivo nib no pacote especificado.
Interagindo com Storyboards e Segues.
O storyboard do qual o controlador de visualização se originou.
Determina se o segue com o identificador especificado deve ser executado.
Notifica o controlador de visualização que um segue está prestes a ser executado.
Inicia o segue com o identificador especificado do arquivo de storyboard do controlador de visualização atual.
Retorna uma matriz de controladores de exibição infantil que devem ser procurados por um destino de destino desenrolado.
Retorna o controlador de exibição infantil que contém a fonte do desenrolar segue.
Chamado em um controlador de exibição para determinar se deseja responder a uma ação desenrolada.
Chamado quando um desenrolar segue transições para um novo controlador de visualização.
Gerenciando a Vista.
A visão que o controlador gerencia.
Um valor booleano que indica se a vista está atualmente carregada na memória.
Cria a visão que o controlador gerencia.
Chamado depois que a vista do controlador & # x27; € ™ s é carregada na memória.
Carrega a visualização do controlador de visualização se ela ainda não foi carregada.
A visualização do controlador de visualização, ou nil, se a vista ainda não estiver carregada.
Uma cadeia localizada que representa a exibição que este controlador gerencia.
O tamanho preferido para a visualização do controlador de exibição.
Apresentando View Controllers.
O estilo de apresentação para controladores de exibição apresentados de forma modular.
O estilo de transição a ser usado ao apresentar o controlador de exibição.
Um valor booleano que indica se o controlador de exibição deve ser apresentado de forma modificada por um popover.
Apresenta um controlador de visualização em um contexto primário.
Apresenta um controlador de visualização em um contexto secundário (ou detalhe).
Apresenta um controlador de visualização de forma modular.
Descarta o controlador de exibição que foi apresentado de forma modal pelo controlador de exibição.
Um valor booleano que indica se a visão do controlador de exibição # é exibida quando o controlador de exibição ou um de seus descendentes apresenta um controlador de exibição.
Um valor booleano que indica se o controlador de visualização especifica o estilo de transição para os controladores de exibição que ele apresenta.
Retorna um booleano indicando se a exibição de entrada atual é descartada automaticamente ao alterar os controles.
Apoiando transições e apresentações personalizadas.
O objeto delegado que fornece animador de transição, controlador interativo e objetos de controle de apresentação personalizados.
Retorna o objeto do coordenador de transição ativo.
Retorna o controlador de visualização que responde à ação.
O controlador de apresentação mais próximo que está gerenciando o controlador de exibição atual.
O controlador de apresentação popover mais próximo que gerencia o controlador de exibição atual.
Um valor booleano que indica se um item que anteriormente estava focado voltou a concentrar-se quando o controle de exibição do item & # x27; fica visível e focável.
Respondendo a Exibir Eventos.
Notifica o controlador de exibição que sua exibição está prestes a ser adicionada a uma hierarquia de exibição.
Notifica o controlador de exibição que sua exibição foi adicionada a uma hierarquia de exibição.
Notifica o controlador de visualização que sua exibição está prestes a ser removida de uma hierarquia de exibição.
Notifica o controlador de exibição que sua exibição foi removida de uma hierarquia de exibição.
Um valor booleano que indica se o controlador de exibição está sendo descartado.
Um valor booleano que indica se o controlador de exibição está sendo apresentado.
Um valor booleano que indica se o controlador de exibição está sendo removido de um controlador de exibição pai.
Um valor booleano que indica se o controlador de exibição está sendo movido para um controlador de exibição pai.
Estendendo a área de segurança do View & # x27; s.
Posicionando o Conteúdo Relativo à Área de Segurança.
Posicione as visualizações para que elas não sejam obstruídas por outros conteúdos.
Inspeções personalizadas que você especifica para modificar a área de segurança do controlador de visualização & # x27; s.
Chamado para notificar o controlador de visualização de que as inserções de área segura de sua exibição de raiz mudaram.
Gerenciando as Margens da Vista.
Posicionando o conteúdo dentro das margens de layout.
Posicione as visualizações para que elas não estejam lotadas por outros conteúdos.
Um valor booleano que indica se a vista do controlador de exibição & # x27; usa as margens mínimas de layout definidas pelo sistema.
As margens mínimas de layout para a vista de raiz do controlador de visualização & # x27; s.
Chamada para notificar o controlador de visualização que as margens de layout de sua exibição de raiz mudaram.
Configurando o Comportamento de Layout da Visualização.
As bordas que você estende para seu controlador de exibição.
Um valor booleano que indica se o layout estendido inclui barras opacas.
Chamado a notificar o controlador de visualização de que sua exibição está prestes a criar suas sub-apresentações.
Chamado a notificar o controlador de visualização que a sua visão acabou de arquivar suas submissões.
Chamado quando a visão do controlador de exibição # ™27 precisa atualizar suas restrições.
Configurando as Configurações de Rotação de Visualização.
Retorna um valor booleano indicando se o conteúdo do controlador de exibição # ™ deve rodar automaticamente.
Retorna todas as orientações da interface que o controlador de exibição suporta.
Retorna a orientação da interface para usar ao apresentar o controlador de exibição.
Tentativas de rodar todas as janelas para a orientação do dispositivo.
Adaptando-se às mudanças de ambiente.
Chamado quando um controlador de exibição dividida transita para uma classe de tamanho de largura compacta.
Chamado quando um controlador de exibição dividida transita para uma classe de tamanho de largura normal.
Ajustando o estilo da interface.
O estilo de interface preferido para este controlador de exibição.
O controlador de exibição infantil que oferece suporte ao estilo de interface de usuário preferido.
Notifica o controlador de visualização de que ocorreu uma alteração que pode afetar o estilo de interface preferido.
Constantes que indicam o estilo da interface para o aplicativo.
Gerenciando controladores de exibição infantil em um recipiente personalizado.
Uma série de controladores de visualização que são filhos do controlador de exibição atual.
Adiciona o controlador de visualização especificado como filho do controlador de exibição atual.
Remove o controlador de exibição de seu pai.
Transições entre dois dos controladores de visualização do controlador de exibição & # x27; € ™ s child view.
Retorna um valor booleano indicando se os métodos de aparência são encaminhados para controladores de exibição infantil.
Indica a um controlador filho que sua aparência está prestes a mudar.
Indica a um controlador filho que a aparência mudou.
Altera os traços atribuídos ao controlador de exibição filho especificado.
Recupera a coleção de traços para um controlador de exibição filho.
Respondendo aos eventos de contenção.
Chamado imediatamente antes de o controlador de exibição ser adicionado ou removido de um controlador de exibição de contêiner.
Chamado após o controlador de exibição ser adicionado ou removido de um controlador de exibição de contêiner.
Obtendo outros controladores de exibição relacionados.
O controlador de visualização que apresentou este controlador de exibição.
O controlador de exibição que é apresentado por este controlador de visualização, ou um dos seus antepassados ​​na hierarquia do controlador de exibição.
O controlador de exibição pai do destinatário.
O antepassado mais próximo na hierarquia do controlador de exibição que é um controlador de navegação.
O antepassado mais próximo na hierarquia do controlador de exibição que é um controlador de exibição dividida.
O antepassado mais próximo na hierarquia do controlador de exibição que é um controlador de barra de guia.
Manuseio de Avisos de Memória.
Enviado para o controlador de visualização quando o aplicativo recebe um aviso de memória.
Gerenciando a Restauração do Estado.
O identificador que determina se o controlador de exibição suporta a restauração do estado.
A classe responsável por recriar este controlador de visualização ao restaurar o estado do aplicativo.
Codifica informações relacionadas ao estado para o controlador de exibição.
Decodifica e restaura informações relacionadas ao estado para o controlador de exibição.
Chamado em controladores de exibição restaurados depois que outra decodificação de objeto é concluída.
Apoio às extensões de aplicativos.
Retorna o contexto de extensão do controlador de exibição.
Trabalhando com pré-visualizações em tela 3D e visualização de ações rápidas.
Os métodos neste grupo de tarefas estão disponíveis em dispositivos que suportam o 3D Touch. A terminologia do usuário final para as visualizações apresentadas durante as fases dos toques baseados na força inclui espingarda e pop. Por clareza aqui, e para alinhar com os nomes da API, este documento usa a visualização de termos e a confirmação de termos correspondentes. Para saber mais sobre o 3D Touch, leia Adoção do toque 3D no iPhone.
Registra um controlador de visualização para participar com a visualização 3D Touch (peek) e commit (pop).
Anula o registro de um controlador de visualização previamente registrado identificado pelo seu objeto de contexto.
As ações rápidas exibidas quando um usuário desliza para cima em uma visualização 3D Touch.
Coordenando com o System Gesture Recognizers.
As bordas da tela para as quais você deseja que seus gestos tenham precedência sobre os gestos do sistema.
Retorna o controlador de exibição infantil que deve ser consultado para ver se seus gestos devem ter precedência.
Ligue para este método quando você altera as bordas da tela que você usa para adiar os gestos do sistema.
Gerenciando a barra de status.
Chamado quando o sistema precisa do controlador de exibição para usar para determinar o estado da barra de status escondido / não encontrado.
Chamado quando o sistema precisa do controlador de exibição para usar para determinar o estilo da barra de status.
O estilo de barra de status preferido para o controlador de exibição.
Especifica se o controlador de visualização prefere que a barra de status seja oculta ou mostrada.
Especifica se um controlador de visualização, apresentado em tela cheia, assume o controle da aparência da barra de status do controlador de exibição de apresentação.
Especifica o estilo de animação a ser usado para ocultar e exibir a barra de status para o controlador de visualização.
Indica ao sistema que os atributos da barra de status do controlador de exibição mudaram.
Configurando Gestos.
Retorna um booleano indicando se o sistema pode ocultar o indicador visual para retornar à tela inicial.
Retorna o controlador de exibição infantil que é consultado sobre sua preferência por exibir um indicador visual para retornar à tela inicial.
Notifica à UIKit que o seu controlador de visualização atualizou sua preferência em relação ao indicador visual para retornar à tela inicial.
Configurando uma Interface de Navegação.
O item de navegação usado para representar o controlador de exibição na barra de navegação de um pai & # x27; € ™ s.
Um valor booleano que indica se a barra de ferramentas na parte inferior da tela está oculta quando o controlador de exibição é pressionado para um controlador de navegação.
Define os itens da barra de ferramentas a serem exibidos junto com o controlador de exibição.
Os itens da barra de ferramentas associados ao controlador de exibição.
Configurando itens da barra de tabulação.
O item da barra de tabulação que representa o controlador de exibição quando adicionado a um controlador de barra de guia.
Adicionando Edição de Comportamentos ao seu Controlador de Visualização.
Um valor booleano que indica se o controlador de visualização atualmente permite ao usuário editar o conteúdo da exibição.
Define se o controlador de visualização mostra uma visualização editável.
Retorna um item de botão de barra que alterna seu título e estado associado entre Editar e Concluído.
Acessando os Comandos da Chave Disponivel.
Associa o atalho de teclado especificado ao controlador de exibição.
Remove o comando de chave do controlador de exibição.
Obtendo informações do arquivo Nib.
O nome do arquivo de nib do controlador de exibição n # 27, se um foi especificado.
O pacote de nib da aplicação do controlador de visualização, se existir.
Estilos de apresentação modal disponíveis ao apresentar controladores de visualização.
Estilos de transição disponíveis ao apresentar controladores de exibição.
Opções de políticas que regem como e quando os anúncios intersticiais podem ser apresentados a partir de um controlador de exibição.
Exceções levantadas pelos controladores de exibição.
Constantes que especificam as bordas de um retângulo.
Notificações.
Postado quando um controlador de exibição dividida é expandido ou colapsado.
Descontinuada.
Retorna a exibição do cabeçalho para a transição durante uma mudança de orientação da interface.
Retorna a exibição do rodapé para a transição durante uma mudança de orientação da interface.
Propriedade de conveniência que fornece a orientação atual da interface, somente significativa se o controlador de visualização estiver ocupando a tela cheia.
Enviado para o controlador de visualização imediatamente antes da interface do usuário começar a girar.
Enviado para o controlador de visualização antes de executar uma rotação de interface de usuário de uma etapa.
Enviado para o controlador de visualização depois que a interface do usuário rota.
O controlador de exibição de pesquisa associado ao controlador de exibição.
Retorna um valor booleano indicando se os métodos de rotação são encaminhados para controladores de exibição infantil.
Apresenta o controlador de exibição do jogador de filme usando a transição do jogador de filme padrão.
Descarta um controlador de exibição de jogador de filme usando a transição padrão do jogador de filme.
Chamado quando uma ação de desenrolar segue quer pesquisar crianças de um recipiente para um controlador de exibição para lidar com a ação de desenrolar.
Chamado quando uma ação de desenrolar segue para transição entre dois controladores de exibição.
Indica a menor extensão vertical para o conteúdo na tela, para uso com restrições de Layout Automático.
Indica a maior extensão vertical para o seu conteúdo na tela, para uso com restrições de layout automático.
Um valor booleano que indica se o controlador de exibição deve ajustar automaticamente suas inserções de exibição de rolagem.
Um valor booleano que indica se o controlador de visualização está configurado para exibir banners.
A visualização de conteúdo originalmente configurada do controlador de visualização antes dos anúncios de banner foi ativada.
Um valor booleano que indica se o controlador de exibição está exibindo um anúncio em tela cheia.
Um valor booleano que indica se o controlador de exibição está exibindo um banner.
Prepara a estrutura do iAd para exibir anúncios intersticiais, que podem envolver a pré-busca de recursos de anúncios.
Determina se os interstícios devem ser apresentados e se o framework ou aplicativo deve gerenciar a apresentação.
Solicita a estrutura para exibir um anúncio intersticial.
Retorna se um anúncio intersticial deve ser exibido.
Relacionamentos.
Herdar de.
Conforme a.
Controladores de visualização personalizados.
Um controlador de visualização que se especializa na gestão de uma vista de tabela.
Um controlador de visualização que se especializa na gestão de uma visão de coleção.
Métodos para adaptar o conteúdo de seus controladores de exibição às mudanças de tamanho e características.

No comments:

Post a Comment