Como posso usar o Autolayout para definir restrições no meu UIScrollview?
Eu passei dois dias experimentando as várias soluções paraAbordagens de autolayout mistas e puras para conseguir o que era uma configuração de scrollview trivial antes do autolayout, e agora é oficial - eu devo ser muito estúpido. Eu estou configurando isso principalmente no Storyboard (bem, é apenas o jeito que é).
Então aqui está 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). Alguem podepor favor deixe-me saber como definir as restrições para conseguir isso usando o Autolayout puro ???
-
Eu tentei a abordagem mista, assim:
UIView
- UIView
- UIView
..-UIScrollview
...-UIView (contentview)
....-UIButton
....-UIButton
....-UIButton
... e definindo restrições de largura e altura fixas para ocontentview
e atranslatesAutoresizingMaskIntoConstraints
configurações como por TechNote da Apple. Os botões e scrollview são configurados usando restrições. Isto obtém a rolagem da rolagem (yay) mas, infelizmente, ela rola muito! Tanto quanto eu posso dizer, a largura de rolagem é de alguma forma duplicada do que eu definir o contentview em ???
Eu tentei a abordagem puramente autolayout também, ambos comcontentview
e sem.Todos as vistas sãotranslatesAutoresizingMaskIntoConstraints=NO
, exceto porself.view
. Os botões têm restrições de largura / altura fixas e são fixados em todas as quatro arestas da vista de rolagem. Nada rola.
Então eu estou totalmente perplexo porque eu não consigo fazer isso funcionar corretamente. Qualquer ajuda é muito apreciada, e se você precisar de qualquer outra informação, por favor, pergunte!
Screenshot ATUALIZADO com solução - restrições buttonZ:
EDITAR @ Jamie Forrest Então a solução acaba sendo a restrição errada 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 do Canvas Atual é negativo (levando a nenhum deslocamento) e a opção abaixo é positiva (rolagem de ativação). Isso significa que eu não sou burro, mas pelo menos meio cego, eu acho.Embora, em minha defesa, não seja um pouco preocupante que o XCode não mostre um erro para a configuração "incorreta"?
EDITADO NOVAMENTE Agora isso é engraçado ... alterar o valor à direita de -6441 (sem rolagem) para 6441 ativado. Mas meu velho amigo "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 de conteúdo correta foi definir a restrição à direita como ZERO! Isso não é óbvio quando se trabalha no Storyboard, mas olhando para o código do @Infinity James, é como deveria ser.