ios - working - xcode auto layout scrollview




Programaticamente role um UIScrollView (7)

Eu tenho um UIScrollView que tem várias exibições. Quando um usuário move o dedo, a exibição rola para a direita ou para a esquerda, dependendo da direção do movimento do dedo. Basicamente, meu código funciona de maneira semelhante ao aplicativo de fotos do iPhone. Agora, existe uma maneira que eu possa programaticamente fazer a mesma coisa para que eu termine com uma apresentação de slides que roda sozinha com um clique de um botão e uma pausa configurável entre cada pergaminho?

Como você realmente faz slideshows com o UIScrollView ?


Com animação no Swift

scrollView.setContentOffset(CGPointMake(x, y), animated: true)

Estou surpreso que este tópico tenha 9 anos de idade e a verdadeira resposta direta não esteja aqui!

O que você está procurando é scrollRectToVisible(_:animated:) .

Exemplo:

extension SignUpView: UITextFieldDelegate {
    func textFieldDidBeginEditing(_ textField: UITextField) {
        scrollView.scrollRectToVisible(textField.frame, animated: true)
    }
}

O que ele faz é exatamente o que você precisa, e é muito melhor do que o contentOffset

Esse método rola a visualização de conteúdo para que a área definida por ret seja visível apenas dentro da exibição de rolagem. Se a área já estiver visível, o método não faz nada.

De: https://developer.apple.com/documentation/uikit/uiscrollview/1619439-scrollrecttovisible


Outra maneira é

scrollView.contentOffset = CGPointMake(x,y);

Se você quer controlar a duração e o estilo da animação, você pode fazer:

[UIView animateWithDuration:2.0f delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
    scrollView.contentOffset = CGPointMake(x, y);
} completion:NULL];

Ajuste a duração ( 2.0f ) e as opções ( UIViewAnimationOptionCurveLinear ) a gosto!


Você pode rolar para algum ponto em uma exibição de rolagem com uma das seguintes instruções em Objective-C

[scrollView setContentOffset:CGPointMake(x, y) animated:YES];

ou Swift

scrollView.setContentOffset(CGPoint(x: x, y: y), animated: true)

Consulte o guia " Rolagem do conteúdo da exibição de rolagem " também da Apple .

Para fazer apresentações de slides com o UIScrollView , você organiza todas as imagens na exibição de rolagem, configura um temporizador repetido e, em seguida, -setContentOffset:animated: quando o temporizador é disparado.

Mas uma abordagem mais eficiente é usar duas visualizações de imagem e trocá-las usando transições ou simplesmente trocando de lugar quando o timer é disparado. Veja o slideshow da imagem do iPhone para mais detalhes.


scrollView.setContentOffset(CGPoint(x: y, y: x), animated: true)

[Scrollview setContentOffset:CGPointMake(x, y) animated:YES];






scroll