Na minha visualização de rolagem, quero obter a página atual que está sendo exibida (talvez página não seja o termo correto). Não consigo encontrar nenhuma variável que contenha isso. Mas acho que deve ser mantido em algum lugar, já que o indicador é capaz de mostrar qual subvisualização da exibição de rolagem está sendo exibida no momento.
Isso está completamente oculto para nós ou há uma maneira de eu acessá-lo?
ios
objective-c
iphone
cocoa-touch
uiscrollview
TheNeil
fonte
fonte
UIScrollViewDelegate
para obter a página atual quando o usuário rolar!Eu realmente recomendo que você use este código
mas se você usar este código, sua visualização não precisa estar exatamente na página que o indexOfPage oferece. É porque eu também recomendo que você use este código apenas neste método
que é chamado quando seu scrollView termina de rolar e para ter o número de sua página realmente nítido
Eu recomendo que você defina seu scrollView como paged habilitado com este código
Então, finalmente, deve ser assim
fonte
Rapidamente, eu faria isso em extensão:
Depois é só ligar:
fonte
Como acima, mas como uma categoria
fonte
Outra maneira :
fonte
Basta dividir o deslocamento atual pelo tamanho da página:
fonte
Já existem boas respostas aqui. No entanto, para cenários onde o conteúdo não se encaixa exatamente em uma página - e se, como eu, você deseja usar o resultado para um
UIPageControl
, então é essencial usar oceil
função.Vejamos um exemplo em que tenho "quatro e um pouco" páginas de conteúdo.
Vou basear isso no meu exemplo atual da vida real. A largura do tamanho do conteúdo é 3140 pontos. Com base no tamanho do quadro da visualização da minha coleção, a largura da página é 728.
Portanto, o número de páginas é igual a:
Meu
numberOfPages
vai fazer cinco anos. Quatro dos quais serão exibidos na íntegra, e o último dos quais - página cinco - irá mostrar o restante0.313
do conteúdo.Agora,
numberOfPages
ser cinco significa que os índices da página serão 0, 1, 2, 3 e 4.Quando eu deslizo para a direita, indo em direção ao deslocamento final, o
scrollViewDidEndDecelerating
método fornece um deslocamento X final de 2412.Aplicando o cálculo de arredondamento:
Isso está incorreto. A página que o usuário está visualizando por deslocamento deve ser:
O cálculo correto usando
ceil
:fonte
Para o rápido, eu apenas usaria isso
Bastante simples, basicamente pega a posição x da scrollview, divide pela largura da scrollview e depois a arredonda.
fonte
No xCode 7.x swift 2.x você pode fazer:
fonte
A solução do Aoakenfo é incrível, esta é outra solução combinando seu código com a função scrollViewDidScroll e PageController
fonte
Eu extraí isso de alguns de nossos aplicativos ...
Fonte completa aqui
fonte
Você está usando um UIPageControl? Nesse caso, isso tem uma
currentPage
propriedade. Do contrário, acho que você precisará calcular o índice da página a partir do deslocamento de scrollView.fonte
Se alguém está procurando uma maneira de fazer em C # para Xamarin
Este getter e Setter devem fornecer a você a página atual e também permitir que você role para a página especificada
fonte
Extensão UIScrollView do Swift 5.1+ (omitindo a palavra-chave de retorno)
fonte