Como configurar o UIScrollView no interface Builder com elementos da interface do usuário fora da visualização principal do iPhone?
-
27-09-2019 - |
Pergunta
Estou criando um formulário de entrada de dados no meu aplicativo para iPhone e há mais campos de dados do que caberá na tela. Imaginei que deveria colocá -los em um UIScrollView para que o usuário possa percorrer o formulário. Qual é a melhor maneira de construir isso no interface Builder? Sei que posso fazer isso programaticamente, mas gostaria de fazê -lo no Builder de Interface, se puder. O problema é, Como posso colocar Uilabels, Uitextfields, etc. Se eles ficarem fora da tela principal do iPhone-na parte da tela para a qual o UIScrollView se torna útil?
Solução
Clique duas vezes para abrir o UIScrollView
Ele próprio no IB e aumenta o tamanho para o tamanho que você precisa ou maior (você sempre pode encolher em tempo de execução). Em seguida, basta adicionar os elementos.
Editar: não funciona - veja aqui em vez de.
Outras dicas
A melhor solução alternativa que encontrei para esse problema (que considero embaraçoso para o interface construtor) é o seguinte:
- Coloque um uiview "contêiner" dentro do UIScrollView, defina o tamanho do contêiner uiview para o que é necessário (por exemplo, 320 x 1200) com o inspetor e adicione seu conteúdo dentro da visualização do contêiner. (seus botões, campos de texto, etc.).
- Defina o ContentSize para o UIScrollView, no código, como o mesmo que o tamanho do seu contêiner uiview. Em algum lugar em ViewDidload, por exemplo (por exemplo, scrollView.contentsize = contentieView.frame.size;)
- Para modificar o conteúdo além dos limites do ScrollView no interface Builder, você deve arrastar a visualização do seu contêiner para fora da visualização de rolagem a cada vez, fazer suas modificações e arrastar a visualização do contêiner de volta para dentro do UIScrollView e construir.
Isso é realmente direto:
Crie uma nova classe View Controller, por exemplo, MyScrollViewController
Crie um novo XIB com um UISCROLLVIEW como a visualização superior e defina a classe do proprietário do arquivo no MyScrollView Controller
Defina o atributo de visualização do proprietário do arquivo na visualização de rolagem
Arraste a parte inferior do ScrollView para criar o tamanho desejado.
Posicione seus vários outros elementos da interface do usuário como subvisões da visualização de rolagem
Crie e conecte um iboutlet em myscrollViewController.h para a visualização de rolagem, por exemplo
@property (retain, nonatomic) IBOutlet UIScrollView *scrollView;
No método ViewDidload do MyScrollViewController, adicione a seguinte linha de código:
self.scrollView.contentSize = self.scrollView.frame.size;
TH-TH-TH-ASSILHO É TODAS AS PESSOAS!
Configure "Inserções de conteúdo" de "Tamanho da exibição de rolagem" no "Inspetor de tamanho": Bottom = YourFrameHeight - ScreenHeight. Isso permitirá que você role em faixas de de cima para baixo, de baixo para o fundo do seu UIScrollView
Eu tive o mesmo problema também. O que acabei fazendo foi colocar outra visão dentro dele e definir a altura para o que eu quisesse. Então eu coloquei todos os meus elementos da interface do usuário dentro dele. Isso permite que você arraste a visão interna para cima e para baixo.
O que funcionou para mim no Xcode5 (sem storyboard, usando o AUTOLAYOUT) está usando a resposta de 7 etapas acima das extremidades com 'Th-Th-Th-Th que é todas as pessoas!' e adicionando duas etapas.
8) Arraste um novo UIView para interface Builder. Não na visualização de rolagem. Apenas por conta própria. Coloque todos os seus controles/visualização nisso e torne -o tão grande quanto quiser. Eu conectei essa visualização como ContentView.
@Property (fraco, não atômico) iboutlet uiview *contentView;
9) depois em - (void) ViewDidload
self.MainsCrollView AddSubView: self.contentView]; [self.MainsCrollView setContentSize: CGSIZEMAKE (self.contentview.frame.size.width, self.contentview.frame.size.height)];
Apenas dizendo que isso fez funcionar para mim.
Finalmente, existe uma solução sensata para tudo isso e é colocar uma exibição de contêiner dentro do UIScrollView. Como o interface Builder exibe o UIViewController dentro da exibição do contêiner separadamente, você pode finalmente ver como será o seu conteúdo do UIScrollView sem cruzar os dedos e ficar de pé na sua cabeça.
Você ainda precisa definir programaticamente o tamanho do seu conteúdo, mas pelo menos agora pode visualizar o que está acontecendo.