Passei dois dias testando as várias soluções para abordagens de Autolayout misto e puro para obter o que era uma configuração trivial de scrollview antes do autolayout, e agora é oficial - devo ser muito estúpido. Estou configurando isso principalmente no Storyboard (bem, é do jeito que está).
Então aqui está o meu pedido de ajuda.
Viewtree:
UIView
-UIView
-UIView
..-UIScrollview
...-UIButton
...-UIButton
...-UIButton
Os botões devem rolar horizontalmente (da esquerda para a direita e vice-versa). Alguém pode por favor deixe-me saber como definir as limitações para alcançar este objectivo usando puro AutoLayout ???
-
Eu tentei a abordagem mista, assim:
UIView
- UIView
- UIView
..-UIScrollview
...-UIView (contentview)
....-UIButton
....-UIButton
....-UIButton
... e definir restrições fixas de largura e altura para contentview
as translatesAutoresizingMaskIntoConstraints
configurações e de acordo com a Nota técnica da Apple. Os botões e a visualização de rolagem são configurados usando restrições. Isso obtém a rolagem do scrollview (yay), mas, infelizmente, ele rola muito longe! Tanto quanto eu posso dizer, a largura da rolagem é de alguma forma duplicada do que eu defini a visualização do conteúdo em ??? !!!
Tentei também a abordagem de autolayout puro, com contentview
e sem. Todas as visualizações são translatesAutoresizingMaskIntoConstraints=NO
, exceto self.view
. Os botões têm restrições fixas de largura / altura e são fixados nas quatro arestas da visualização de rolagem. Nada rola.
Por isso, estou totalmente perplexo porque não consigo fazê-lo funcionar corretamente. Qualquer ajuda é muito apreciada, e se você precisar de outras informações, pergunte!
ATUALIZADO Screenshot com solução - restrições buttonZ:
EDIT @ Jamie Forrest Portanto, a solução acaba sendo a restrição à direita no último botão. Em vez de 6441, o valor que eu havia definido era negativo, -6441. O mais complicado é que, ao definir o valor no storyboard, há duas opções na barra de ferramentas Pin:
O valor atual da tela é negativo (levando a nenhuma rolagem), e a opção abaixo é positiva (ativação da rolagem). Isso significa que eu não sou estúpido, mas pelo menos meio cego, eu acho. Embora, em minha defesa, não seja um pouco perturbador o fato de o XCode não mostrar um erro para a configuração "incorreta"?
EDITADO NOVAMENTE Agora, isso é engraçado ... alterar o valor à direita de -6441 (sem rolagem) para 6441 rolagem ativada. Mas meu velho amigo, o "muito conteúdo" estava de volta, levando a um tamanho de conteúdo duas vezes maior do que deveria ser! A solução para obter a rolagem correta do conteúdo foi definir a restrição à direita como ZERO! Isso não é óbvio ao trabalhar no Storyboard, mas ao olhar para o código do @Infinity James, é o que deveria ser.
contentSize
um de UIScrollView
apenas usando o layout automático. E é isso contentSize
que define quanto você pode rolar. Então, você precisará definir isso manualmente em algum lugar eventualmente. De resto, você pode usar restrições de layout para configurar os quadros de vista um em relação ao outro.