Edgesforextendedlayout Scrollviewdidendzooming




Edgesforextendedlayout ScrollviewdidendzoomingEu tentei por algum tempo construir um cabecalho de exibicao de tabela de estilo paralaxe que seja composto por uma imagem, semelhante ao Yahoo News Digest App, ou ao visualizar um negocio em Maps. app. (Quando voce 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 video demonstrativo cortesia de APParallaxHeader: O melhor tutorial que consegui encontrar foi esse tutorial. Que basicamente consiste em adicionar a visualizacao da imagem como uma subvisao da exibicao da tabela. Embora isso funcione principalmente, adicionar como uma subvisao ao UITableView e bastante indocumentado, e no meu teste nao parece funcionar com o Layout Automatico e, portanto, a rotacao nao funciona muito bem. A biblioteca que eu liguei acima, APPARallaxHeader. Parece funcionar, mas a sua implementacao e realmente confusa, e parece ser swizzling, se eu nao 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 E com um scrollview contendo uma visao de imagem que esta por tras (no sentido de ordem z) e se estende por baixo (no sentido de direcao y) na parte superior de uma vista de tabela. No teste que fiz, eu dei a tabela ver um cabecalho (em IB) com 100 pontos de altura, e com uma cor de fundo clara (a tabela tambem precisa de uma cor de fundo clara). A exibicao de rolagem e a exibicao de tabela foram fixadas aos lados da visao principal dos controladores e ao guia de layout superior (o controlador esta incorporado em um controlador de navegacao, que estava configurado para que sua visao nao fosse na barra superior). A vista da tabela tambem foi fixada na parte inferior da vista, e a vista de rolagem foi dada uma altura fixa de 200. Eu dei a exibicao de rolagem um deslocamento inicial de 50 pontos, de modo que quando voce comeca a puxar para baixo na tabela, o A exibicao de rolagem pode rolar mais conteudo para exibicao desde o topo, ao mesmo tempo em que revela mais conteudo na parte inferior (o deslocamento de vistas de deslocamento esta 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 comecar a aumentar o zoom. Eu carreguei uma copia deste projeto aqui, jmp. shLRKF0nM respondeu Jan 4 15 as 17:39 Isso e bom. Mas, com sua imagem, e preferivel que ele expanda a altura maxima antes de ampliar, com a forma como a altura da visualizacao da imagem normalmente seria operada. Alem disso, obviamente, parece estranho quando voce puxa para longe demais na vista da tabela e o cabecalho continua a fazer zoom sem alterar a altura. E isso evitavel ndash Doug Smith Jan 4 15 as 20:05 DougSmith, com certeza, voce pode ajustar o quao longe ele percorre antes de zooms. Quanto ao segundo ponto, estou certo de que voce pode mudar isso tambem, mexendo com os parametros. Voce alcancou a altura da exibicao de rolagem, a altura da exibicao de cabecalho e onde voce tem o deslocamento inicial da visao de rolagem para jogar. Ndash rdelmar Jan 4 15 at 21:28 Eu pensei que eu descarte outra ideia que nao usa uma visao de rolagem separada. Eu acho que isso funciona um pouco melhor com a forma como ele se expande. Entao, nesta tentativa, eu apenas adiciono a exibicao de imagem como uma subvista da vista principal, e colocou-a de modo que 12 tanto da visualizacao de imagem esta acima da parte superior do cabecalho (fora de vista) como abaixo do cabecalho (inicialmente escondido Pelas linhas da tabela). Ao puxar para baixo a tabela, a visao e movida para baixo a metade da taxa de pull down (ajustando uma restricao), de modo que a parte superior e inferior da imagem aparecem em conjunto, entao, dai, eu faco a expansao usando Uma transformacao. Respondeu Jan 6 15 as 2:09 Eu tentei este codigo e isso nao parece funcionar de forma alguma. O meu principal problema com o uso da visao de cabecalho (e talvez eu esteja errado sobre isso, mas parece presente neste codigo tambem) e que, quando voce puxa para baixo e a tabela exibe quotrubber bandsquot a vista de tabela e seu cabecalho sao fisicamente traduzidos para baixo como Bem, entao, o cabecalho nao deveria ser desenhado fora dos limites da vista da mesa ou algo ndash Doug Smith 3 de janeiro de 15 as 18:36 DougSmith, quando a exibicao de rolagem rola, as submissoes de italia permanecem fixas em relacao a sua superview (a exibicao de rolagem). As submissoes se movem em relacao a superview39 view viewers, mas isso nao importa. Deixe-me pensar sobre isso mais. Eu posso tentar realmente implementar isso para se divertir hoje ou amanha. Se eu fizer, atualizarei a resposta aqui. Ndash danh 3 de janeiro 15 as 18:47 Ok, heres uma resposta que tem o beneficio de construir e experimentar. Eu achei muito dificil manipular o quadro das tabelas de exibicao de cabecalho real, entao adicionei uma sub-visualizacao a tabela acima das linhas. Para que essa exibicao apareca como um cabecalho de tabela normal, eu dei a mesa uma exibicao de cabecalho de tamanho fixo e transparente. A ideia principal e como o que eu respondi acima: usando o deslocamento de conteudo de tabelas como o parametro para modificar o quadro de exibicao de imagem e o modo de conteudo imageViews (corrigido para UIViewContentModeScaleAspectFill) para fornecer o efeito de zoom a medida que o quadro muda. Heres o controlador da visao inteira. Isso e construido a partir de um storyboard onde o controlador de exibicao esta dentro de um controlador de navegacao. Nao tem nada mais do que uma vista de tabela que enche sua exibicao, 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