Edgesforextendedlayout scrollview ios


edgesForExtendedLayoutautomaticallyAdjustsScrollViewInsetsextendedLayoutIncludesOpaqueBars edgesForExtendedLayoutUIRectEdgeTop childviewcontrollerUINavigationController sub ViewController edgesForExtendedLayoutUIRectEdgeTopchildVCviewNavigationbaroffsetY automaticallyAdjustsScrollViewInsetsUINavigationControllerUIToolbarViewControllerViewScrollviewedgesForExtendedLayouttopScrollViewContentInsectScrollviewstatubarnavigation baredgesForExtendedLayouttopnavigation barstatubarautomaticallyAdjustsScrollViewInsets - ndashNavigationControllerYESscrollviewcontentInsectsPSviewtableviewscrollviewchildviewcontroller Postado por chesterlee 2017/08/24 23:58 iosYou têm o direito de ser confundido. É um pouco contra-intuitivo, mas os guias de layout superior e inferior são irrelevantes para configurar um UIScrollView para que seu conteúdo rolável subjugará a barra de navegação translúcida, que é o efeito que você está tentando alcançar. O que fazer Dada a hierarquia de exibição que você exibiu na segunda imagem, isso é o que você precisa fazer no iOS8: Configure o controlador de exibição para que Extend Edges Under Top Bar esteja marcado (no código, use edgesForExtendedLayout). Isso garantirá que os controladores de exibição estabeleçam sua visão de raiz para que ela suba a barra de navegação. Configure as restrições de exibição de rolagem para que o deslocamento veja a borda superior tenha um deslocamento de zero da borda superior de sua supervisão, e não espaço zero do guia de layout superior. Isto assegurará que a vista de coleção preenche a vista de raiz e, portanto, subintexe a barra de navegação, o que é necessário para que o conteúdo do visor de rolagem seja capaz de rolar sob a barra de navegação. (IB pode lutar com você sobre isso. Consulte a nota de rodapé abaixo.) Então, agora, como você se certifica de que a visão de rolagem tem alguma idéia de onde a barra de navegação é, de modo que (por exemplo) ela não posicione sempre seu conteúdo sob a barra de navegação A resposta não tem nada a ver com guias de layout. No controlador de exibição, marque a caixa Ajustes Inspeções de rolagem (ou no código, automaticamenteAdjustsScrollViewInsets). Isso fará com que o controlador de exibição ajuste automaticamente a propriedade contentInset das exibições de rolagem para que a exibição de rolagem posicione seu conteúdo apropriadamente. O que está acontecendo Então, por que essa é a resposta? E por que é tão confuso, é fácil confundir porque os guias de layout superior e inferior nos são apresentados de forma proeminente como elementos que transmitem informações de layout sobre elementos sobrepostos translúcidos. No entanto, eles não são o único mecanismo de layout compatível com a translucidez. Eles são diretamente relevantes apenas para o posicionamento de submissões normais, ou seja, não a vista de raiz dos controladores de exibição e não o conteúdo dentro de um UIScrollView. O conteúdo dentro de uma exibição de rolagem (ou uma subclasse como UICollectionView e UITableView) sempre será posicionado de forma mais complicada, envolvendo a rolagem da própria exibição, afetada por propriedades como o ContentInset. ContentOffset. Etc. (Realmente, se o layout de exibição de rolagem fosse direto, por que a Apple deveria ter sessões dedicadas da WWDC para exibir o layout de visualização nos últimos quatro anos). Para resumir, como os passos acima indicam, os três mecanismos distintos de translucidez para gerenciar O layout é o seguinte: Extensões Os Bordos determinam se o controlador de exibição posiciona sua exibição de raiz para que ele suba a barra de navegação. Os Guias de layout fornecem uma métrica que informa onde a área de conteúdo principal é, tendo em conta as barras translúcidas. Você pode usar estes com Layout Automático para posicionar visualizações normais para que eles não se subponham. Ou você pode acessar os valores numéricos no código. Scroll View Insets são o caminho certo para garantir que um conteúdo de visualizações de rolagem possa subjugar, mas nem sempre é subjacente. A propriedade automaticAdjustsScrollViewInsets no controlador de visualização pode fazer isso automaticamente para você em casos simples. (Presumivelmente, esta propriedade apenas faz com que o controlador de exibição atualize as visualizações de rolagem contentInset com base nos mesmos valores que expõe através dos guias de layout. Então, se você precisasse gerenciar as inserções você mesmo, é assim que você faria isso.) Combate o guia de layout do IBs Mania Uma nota de rodapé sobre Fighting with IB: Infelizmente, o Interface Builder pode lutar contra você quando você tenta restringir a borda de exibição de rolagem para a borda de superviews. Se você fizer um ctrl-arrastar da exibição de rolagem para o superview, quando aparecer o menu de restrições possíveis para adicionar entre essas visualizações, ele pode tentar fazer você restringir a exibição de rolagem dos guias de layout dos controladores de exibição. Isso ocorre porque o IB definitivamente não possui guias de layout para supervisionar bordas, quando o superview é a visão de raiz. Mas quando você está trabalhando com um scrollview, esta é a coisa errada. Por que, por exemplo, suponha que você aceite uma restrição contra o guia de layout. Então você acabará com uma restrição superior em seu scrollview que o restringe a topLayoutGuide-64.0. Esse -64.0 é um valor codificado que compensa a altura exata de uma barra de navegação. Então, o que acontece quando um bom dia a barra de navegação não é igual a 64pt Ou quando você simplesmente desliga a barra de navegação inteiramente ou quer voltar a usar esta cena em um contexto sem uma barra de navegação. Resposta: então você obtém um layout quebrado. Então, como você força o IB para adicionar uma restrição da exibição de rolagem para a borda de superviews, em oposição ao guia de layout. Tanto quanto eu posso dizer, a resposta é que você não pode adicionar essa restrição corretamente no IB fazendo um ctrl-drag Entre visualizações. Em vez disso, você precisa selecionar a exibição e, em seguida, usar o controle Pin na parte inferior da tela. Este é o que parece um capital H com uma caixa em seu meio. Na seção superior da caixa de diálogo popa Pin, a seção com o pequeno diagrama que mostra as restrições de espaço supervisionado, você pode usar os controles desdobráveis ​​ao lado dos campos de texto para configurar se a restrição de espaço vincula um guia de layout ou um superview. Isso é mostrado abaixo:

Comments

Popular Posts