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];