Edgesforextendedlayout ios 6
bordas para layout estendido.
As arestas que você estende para o controlador de exibição.
Declaração.
Discussão.
Em vez dessa propriedade, use a área segura de sua visualização para determinar quais partes da sua interface estão ocluídas por outro conteúdo. Para obter mais informações, consulte o Guia de Layout de Área seguro e as propriedades de Inserções de Área seguras do UIView.
No iOS 10 e versões anteriores, use essa propriedade para informar quais bordas do controlador de exibição estendem sob as barras de navegação ou outras exibições fornecidas pelo sistema. O valor padrão desta 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 colocará seu conteúdo abaixo de outras barras nessa 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.
Configurar o comportamento de layout da vista.
Um valor booleano que indica se o layout estendido inclui ou não barras opacas.
Chamado para notificar o controlador de visualização de que sua visualização está prestes a estruturar suas subvisualizações.
Chamado para notificar o controlador de visualização de que sua visualização acabou de exibir suas subvisualizações.
Chamado quando a view do controller view precisa atualizar suas restrições.
A visualização é exibida na barra de status no iOS 7 e o EdgesForExtendedLayout não ajuda.
Estou tendo um problema que minha visão é mostrada sob a barra de status.
Depois de pesquisar, descobri que tinha de 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)
Adicionado um rótulo posicionando-o 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 do iOS7, o rótulo é exibido na barra de status.
O que estou fazendo de errado?
Tente usar este código.
Eu tenho problema semelhante.
Eu estou verificando a versão do iOS e se a versão é 7, eu estou definindo a variável "EdgesForExtendedLayout = UIRectEdge. None;"
Eu estou configurando essa variável para o controlador de visualização de raiz da janela no método viewDidLoad () após base. ViewDidLoad ().
Mas a visualização ainda aparece na barra de status.
Estou usando Xamarin (4.0412 (build 3)),
Ferramentas para Desenvolvedores da Apple Xcode 5.0 (3332.25),
Xamarin. iOS Versão: 7.0.1.4 (Business Edition),
Mono 3.2.3 ((não / 8d3b4b7),
Sistema operacional Mac OS X 10.8.5.
Não funcionou para mim também.
No final, resolvi isso projetando para o iOS 7 e delta de configurações no Interface Builder para iOS 6, isso resolveu para mim.
Eu acho que houve um pensamento sobre a tentativa de colocar a configuração EdgesForExtendedLayout no método viewwillappear.
Você poderia tentar isso e ver se funciona.
Em primeiro lugar obrigado pela sua resposta.
@AndrewReed Eu tento colocar configuração EdgesForExtendedLayout para viewwillappear, mas sem sorte.
@ YvoNelemans Vou tentar a sua sugestão, e vai escrever, se isso ajudou ou não.
Consegui fazer isso funcionar com uma tradução da solução aqui:
Coloque isso em ViewWillAppear (boolean):
Certifique-se de que o código de @MatGiaimo seja executado apenas uma vez. Se você voltar para a visão não deve ser executado novamente, caso contrário, a visão irá se mover para baixo.
Eu me deparei com o problema que o @HugoLogmans traz um tempo atrás e acabei com um simples sinalizador de bool para não repeti-lo repetidamente, o que pode acontecer ao alternar entre controladores em abas.
Em um projeto onde tenho todos os layouts feitos programaticamente, acabei com esse código no UIViewController. Ele também usa o TopLayoutGuide fornecido pelo iOS para evitar codificar quaisquer valores. (Nota: ao ajustar o Centro em vez do Quadro, a visão que está sendo movida não terá que ser redesenhada.)
(Além disso, se você não estiver usando a API unificada, altere CGPoint para PointF.)
Eu me deparei com o problema que o @HugoLogmans traz um tempo atrás e acabei com um simples sinalizador de bool para não repeti-lo repetidamente, o que pode acontecer ao alternar entre controladores em abas.
Em um projeto onde tenho todos os layouts feitos programaticamente, acabei com esse código no UIViewController. Ele também usa o TopLayoutGuide fornecido pelo iOS para evitar codificar quaisquer valores. (Nota: ao ajustar o Centro em vez do Quadro, a visão que está sendo movida não terá que ser redesenhada.)
(Além disso, se você não estiver usando a API unificada, altere CGPoint para PointF.)
Sua solução colocou a visualização abaixo do statusBar, mas moveu a parte inferior da vista para fora da vista. Qualquer pista sobre como posso limitar a visualização a ser visível de uma só vez sem que o statusBar se sobreponha.
Edgesforextendedlayout ios 6
A partir do iOS7, os controladores de visualização usam layout de tela inteira por padrão. Ao mesmo tempo, você tem mais controle sobre como expõe seus pontos de vista e isso é feito com essas propriedades:
Basicamente, com essa propriedade, você define quais lados da sua exibição podem ser estendidos para cobrir toda a tela. Imagine que você envie um UIViewController para um UINavigationController. Quando a visualização desse controlador de exibição é exibida, ele será iniciado onde a barra de navegação termina, mas essa propriedade definirá quais lados da exibição (superior, esquerda, inferior, direita) podem ser estendidos para preencher a tela inteira.
Vamos ver isso com um exemplo:
Aqui você não está definindo o valor de edgesForExtendedLayout, portanto, o valor padrão é obtido (UIRectEdgeAll), portanto, a exibição estende 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 visão para cobrir a tela:
Esta propriedade é usada quando sua visã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 verá todo o conteúdo se não, mas ao mesmo tempo você quer que sua tabela cubra toda a tela ao rolar. Nesse caso, configurar edgesForExtendedLayout para None não funcionará porque sua tabela iniciará a rolagem onde a barra de navegação termina e não passará por ela.
Aqui é onde esta propriedade vem a calhar, se você deixar o controlador de visualização ajustar automaticamente as inserções (definindo essa propriedade como YES, também o valor padrão), ele adicionará inserções à parte superior da tabela, portanto a tabela iniciará onde a navegação a barra termina, mas o pergaminho cobrirá a tela inteira.
É quando está definido como NO:
E SIM (por padrão):
Em ambos os casos, a tabela rola atrás da barra de navegação, mas no segundo caso (YES), ela será iniciada abaixo da barra de navegação.
Este valor é apenas um acréscimo aos anteriores. Por padrão, esse parâmetro está 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 exibição para cobri-la (edgesForExtendedLayout para UIRectEdgeAll).
Se você definir o valor como YES, isso permitirá que a visualização passe por baixo da barra de status novamente.
Se algo não estiver claro, escreva um comentário e eu responderei.
Como o iOS sabe o que o UIScrollView deve usar?
O iOS captura a primeira subvisualização na visualização do seu ViewController, aquela no índice 0, e se for uma subclasse do UIScrollView, aplica as propriedades explicadas a ele.
Obviamente, isso significa que o UITableViewController funciona por padrão (já que o UITableView é a primeira visualização).
Xamarin Blog.
iOS 6 e # 038; 7 dicas de compatibilidade.
Em apenas alguns meses, o iOS 7 encontrou seu caminho para mais de 80% de todos os dispositivos iOS. A Xamarin anunciou o suporte no mesmo dia quando o iOS 7 foi lançado e é fácil atualizar seu aplicativo ao desenvolver com o Xamarin. iOS. A Apple recomenda primeiro redesenhar seu aplicativo para o iOS 7 e, em seguida, se você tiver alterações estruturais ou de navegação para trazê-los para a versão 6 do iOS, onde eles são apropriados. A Apple não recomenda o restyling de sua versão iOS 6 do seu aplicativo com elementos de design do iOS 7, como botões de barra sem borda. Aqui estão algumas dicas rápidas de interface de usuário para ajudá-lo com sua transição e compatibilidade.
Números de versão:
Determinar a versão do iOS é importante quando você está acessando novas APIs. Se você tentar chamar uma API do iOS 7 em um dispositivo que executa uma versão mais antiga, isso pode causar falha no aplicativo se não for manipulado corretamente. Portanto, é importante sempre verificar o número correto da versão usando este método auxiliar simples:
Para facilitar, você pode tornar isso um método estático em uma classe de utilitário. Eu chamei o meu Util. cs e adicionei o seguinte método para verificar se o dispositivo atual é o iOS 7 ou mais recente.
Isso permitirá que você faça chamadas específicas com base na versão do sistema operacional:
Carregando recursos:
Em alguns casos, você pode precisar carregar recursos ou recursos diferentes para versões mais antigas do iOS. Nos ícones do iOS 7, siga um estilo de design fino em comparação com versões mais antigas do iOS. Para garantir que seus usuários tenham os ícones corretos com base em sua versão, você pode considerar a marcação de todos os seus ativos específicos do iOS com um prefixo como & # 8220; ios7 _ & # 8221 ;. Isso permitirá que você carregue os ícones condicionalmente, como adicionar um UIBarButtonItem ao NavigationBar:
Além disso, você pode criar um método auxiliar para retornar o nome correto.
Visualizar as alterações do controlador:
As visualizações no iOS 7 usam layouts de tela cheia, se você estiver atualmente especificando WantsFullScreenLayout = true, o controlador de exibição poderá exibir seu conteúdo em um local de tela inesperado quando for executado no iOS 7. No entanto, você pode ajustar como um controlador de exibição exibe suas visualizações . Todos os UIViewController fornecem estas propriedades:
Se você criou UIViewControllers personalizados, este será seu novo melhor amigo. Já que o iOS 7 UIViewControls passa para o NavigationBar. É comum que sua interface de usuário possa estar escondida sob ela. Definir essa propriedade como UIRectEdge. None forçará o iOS 7 a não colocar seu conteúdo sob o NavigationBar.
Se você estiver usando barras opacas, defina não apenas EdgesForExtendedLayout, mas também defina ExtendedLayoutIncludesOpaqueBars como true, pois o valor padrão é false.
ScrollViews agora ajusta automaticamente suas inserções no iOS 7. Se você não deseja isso, você vai querer definir essa propriedade como false.
Para todos esses, você deve garantir que você esteja agrupando as propriedades em uma verificação de versão:
Edgesforextendedlayout ios 6
Eu tenho um projeto que foi construído no ano passado e usa XIBs, sem storyboards. Os XIBs não usam Layout automático, mas usam algum dimensionamento automático. Eu tenho um problema ao executar com o iOS7, em que todas as vistas estão escondidas sob a barra de status. Compreendo perfeitamente que este é um novo recurso do 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 aparece na barra de status e não estou usando barras de navegação ou algo assim.
Eu tentei atualizar os deltas Y no XIB (eles não têm nenhum efeito sobre a exibição), tentei definir o edgesForExtendedLayout para UIRectEdgeNone (não faz nada) e uma infinidade de outras coisas. Toda vez, a barra de status é mostrada com a visão sob ela, não importando o que eu faça ... isto é, a menos que eu mova manualmente a visão no XIB para dar espaço à barra de status (mas essa solução não funciona porque não parece certo no iOS6, é claro).
O que é estranho é que mesmo quando eu tento uma linha de código para hackear um view-shift, isso não funciona (como o seguinte):
..Não que eu iria com esse tipo de solução, mas é apenas estranho que não funcionou (a única vez que eu normalmente vejo que não funciona é se Auto Layout está no lugar, o que não é neste caso).
É um requisito de design que a barra de status mostra, e estou apenas perplexo com o motivo pelo qual não posso definir a exibição para estar sob a barra de status do iOS7. Li todas as postagens do Stack Overflow sobre o assunto, bem como as guias / transição da Apple. Mais uma vez, para reiterar, compreendo perfeitamente como deve funcionar e qual deve ser a solução esperada para isso, mas nada disso parece estar funcionando para esse projeto em particular.
Eu sou um experiente iOS dev, mas este projeto foi construído por outra equipe, então eu 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 possa ser analisado, ou mais informações que posso fornecer.
Eu tenho um projeto que foi construído no ano passado e usa XIBs, sem storyboards. Os XIBs não usam Layout automático, mas usam algum dimensionamento automático. Eu tenho um problema ao executar com o iOS7, em que todas as vistas estão escondidas sob a barra de status. Compreendo perfeitamente que este é um novo recurso do 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 aparece na barra de status e não estou usando barras de navegação ou algo assim.
Eu tentei atualizar os deltas Y no XIB (eles não têm nenhum efeito sobre a exibição), tentei definir o edgesForExtendedLayout para UIRectEdgeNone (não faz nada) e uma infinidade de outras coisas. Toda vez, a barra de status é mostrada com a visão sob ela, não importando o que eu faça ... isto é, a menos que eu mova manualmente a visão no XIB para dar espaço à barra de status (mas essa solução não funciona porque não parece certo no iOS6, é claro).
O que é estranho é que mesmo quando eu tento uma linha de código para hackear um view-shift, isso não funciona (como o seguinte):
..Não que eu iria com esse tipo de solução, mas é apenas estranho que não funcionou (a única vez que eu normalmente vejo que não funciona é se Auto Layout está no lugar, o que não é neste caso).
É um requisito de design que a barra de status mostra, e estou apenas perplexo com o motivo pelo qual não posso definir a exibição para estar sob a barra de status do iOS7. Li todas as postagens do Stack Overflow sobre o assunto, bem como as guias / transição da Apple. Mais uma vez, para reiterar, compreendo perfeitamente como deve funcionar e qual deve ser a solução esperada para isso, mas nada disso parece estar funcionando para esse projeto em particular.
Eu sou um experiente iOS dev, mas este projeto foi construído por outra equipe, então eu 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 possa ser analisado, ou mais informações que posso fornecer.
Комментарии
Отправить комментарий