Thursday, 6 December 2018

Edgesforextendedlayout scrollviewdidendzooming


Eu tentei por algum tempo construir um cabeçalho de exibição de tabela de estilo paralaxe que seja composto por uma imagem, semelhante ao Yahoo News Digest App, ou ao visualizar um negócio em Maps. app. (Quando você tira a tabela da imagem, a altura da imagem cresce e, ao deslizar para baixo, a imagem parece rolar um pouco mais devagar). Heres um vídeo demonstrativo cortesia de APParallaxHeader: O melhor tutorial que consegui encontrar foi esse tutorial. Que basicamente consiste em adicionar a visualização da imagem como uma subvisão da exibição da tabela. Embora isso funcione principalmente, adicionar como uma subvisão ao UITableView é bastante indocumentado, e no meu teste não parece funcionar com o Layout Automático e, portanto, a rotação não funciona muito bem. A biblioteca que eu liguei acima, APPARallaxHeader. Parece funcionar, mas a sua implementação é realmente confusa, e parece ser swizzling, se eu não for errado. Existe uma maneira simples de fazer isso. Estou simplesmente ignorando completamente. Depois de pensar mais nesse problema, acho que a melhor maneira de duplicar esse aspecto É com um scrollview contendo uma visão de imagem que está por trás (no sentido de ordem z) e se estende por baixo (no sentido de direção y) na parte superior de uma vista de tabela. No teste que fiz, eu dei a tabela ver um cabeçalho (em IB) com 100 pontos de altura, e com uma cor de fundo clara (a tabela também precisa de uma cor de fundo clara). A exibição de rolagem e a exibição de tabela foram fixadas aos lados da visão principal dos controladores e ao guia de layout superior (o controlador está incorporado em um controlador de navegação, que estava configurado para que sua visão não fosse na barra superior). A vista da tabela também foi fixada na parte inferior da vista, e a vista de rolagem foi dada uma altura fixa de 200. Eu dei a exibição de rolagem um deslocamento inicial de 50 pontos, de modo que quando você começa a puxar para baixo na tabela, o A exibição de rolagem pode rolar mais conteúdo para exibição desde o topo, ao mesmo tempo em que revela mais conteúdo na parte inferior (o deslocamento de vistas de deslocamento está em movimento a 12 a taxa de deslocamento das vistas de tabela). Uma vez que o deslocamento das vistas da tabela chega a -50, paro de alterar o deslocamento das vistas de rolagem e começar a aumentar o zoom. Eu carreguei uma cópia deste projeto aqui, jmp. shLRKF0nM respondeu Jan 4 15 às 17:39 Isso é bom. Mas, com sua imagem, é preferível que ele expanda a altura máxima antes de ampliar, com a forma como a altura da visualização da imagem normalmente seria operada. Além disso, obviamente, parece estranho quando você puxa para longe demais na vista da tabela e o cabeçalho continua a fazer zoom sem alterar a altura. É isso evitável ndash Doug Smith Jan 4 15 às 20:05 DougSmith, com certeza, você pode ajustar o quão longe ele percorre antes de zooms. Quanto ao segundo ponto, estou certo de que você pode mudar isso também, mexendo com os parâmetros. Você alcançou a altura da exibição de rolagem, a altura da exibição de cabeçalho e onde você tem o deslocamento inicial da visão de rolagem para jogar. Ndash rdelmar Jan 4 15 at 21:28 Eu pensei que eu descarte outra idéia que não usa uma visão de rolagem separada. Eu acho que isso funciona um pouco melhor com a forma como ele se expande. Então, nesta tentativa, eu apenas adiciono a exibição de imagem como uma subvista da vista principal, e colocou-a de modo que 12 tanto da visualização de imagem está acima da parte superior do cabeçalho (fora de vista) como abaixo do cabeçalho (inicialmente escondido Pelas linhas da tabela). Ao puxar para baixo a tabela, a visão é movida para baixo à metade da taxa de pull down (ajustando uma restrição), de modo que a parte superior e inferior da imagem aparecem em conjunto, então, daí, eu faço a expansão usando Uma transformação. Respondeu Jan 6 15 às 2:09 Eu tentei este código e isso não parece funcionar de forma alguma. O meu principal problema com o uso da visão de cabeçalho (e talvez eu esteja errado sobre isso, mas parece presente neste código também) é que, quando você puxa para baixo e a tabela exibe quotrubber bandsquot a vista de tabela e seu cabeçalho são fisicamente traduzidos para baixo como Bem, então, o cabeçalho não deveria ser desenhado fora dos limites da vista da mesa ou algo ndash Doug Smith 3 de janeiro de 15 às 18:36 DougSmith, quando a exibição de rolagem rola, as submissões de italia permanecem fixas em relação a sua superview (a exibição de rolagem). As submissões se movem em relação à superview39 view viewers, mas isso não importa. Deixe-me pensar sobre isso mais. Eu posso tentar realmente implementar isso para se divertir hoje ou amanhã. Se eu fizer, atualizarei a resposta aqui. Ndash danh 3 de janeiro 15 às 18:47 Ok, heres uma resposta que tem o benefício de construir e experimentar. Eu achei muito difícil manipular o quadro das tabelas de exibição de cabeçalho real, então adicionei uma sub-visualização à tabela acima das linhas. Para que essa exibição apareça como um cabeçalho de tabela normal, eu dei à mesa uma exibição de cabeçalho de tamanho fixo e transparente. A idéia principal é como o que eu respondi acima: usando o deslocamento de conteúdo de tabelas como o parâmetro para modificar o quadro de exibição de imagem e o modo de conteúdo imageViews (corrigido para UIViewContentModeScaleAspectFill) para fornecer o efeito de zoom à medida que o quadro muda. Heres o controlador da visão inteira. Isso é construído a partir de um storyboard onde o controlador de exibição está dentro de um controlador de navegação. Não tem nada mais do que uma vista de tabela que enche sua exibição, com a fonte de dados e o conjunto de delegados. Respondeu Jan 3 15 em 21: 25- (void) scrollViewDidScroll :( UIScrollView) scrollView - (void) scrollViewDidZoom :( UIScrollView) scrollView - (void) scrollViewWillBeginDragging :( UIScrollView) scrollView - (void) scrollViewWillEndDragging :( UIScrollView) scrollView withVelocity: (CGPoint) velocidade targetContentOffset :( inout CGPoint) targetContentOffset - (void) scrollViewDidEndDragging :( UIScrollView) scrollView willDecelerate :( BOOL) desacelera - (void) scrollViewWillBeginDecelerating: (UIScrollView) scrollView - (void) scrollViewDidEndDecelerating :( UIScrollView) scrollView - (void ) ScrollViewDidEndScrollingAnimation :( UIScrollView) scrollView - (UIView) viewForZoomingInScrollView :( UIScrollView) scrollView - (void) scrollViewWillBeginZooming: (UIScrollView) scrollView withView :( UIView) view - (void) scrollViewDidEndZooming: (UIScrollView) scrollView withView :( UIView) view atScale :( CGFloat) escala, minimumZoomScalemaximumZoomScale - (BOOL) scrollViewShouldScrol LToTop :( UIScrollView) scrollView - (void) scrollViewDidScrollToTop :( UIScrollView) scrollView

No comments:

Post a Comment