Como configurar o UIScrollView no interface Builder com elementos da interface do usuário fora da visualização principal do iPhone?

StackOverflow https://stackoverflow.com/questions/3458937

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?

Foi ú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:

  1. 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.).
  2. 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;)
  3. 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:

  1. Crie uma nova classe View Controller, por exemplo, MyScrollViewController

  2. Crie um novo XIB com um UISCROLLVIEW como a visualização superior e defina a classe do proprietário do arquivo no MyScrollView Controller

  3. Defina o atributo de visualização do proprietário do arquivo na visualização de rolagem

  4. Arraste a parte inferior do ScrollView para criar o tamanho desejado.

  5. Posicione seus vários outros elementos da interface do usuário como subvisões da visualização de rolagem

  6. Crie e conecte um iboutlet em myscrollViewController.h para a visualização de rolagem, por exemplo

    @property (retain, nonatomic) IBOutlet UIScrollView *scrollView;
    
  7. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top