7

Ho già creato una sottoclasse UIViewController con un gruppo di controlli e ho appena realizzato che se ruoto l'iPhone, metà dei controlli diventa invisibile. Quindi, vorrei in qualche modo rendere lo UIViewController'sUIView scorrevole in modo che quando il dispositivo (o il simulatore) ruota, l'utente può scorrere la vista per vedere tutti i controlli.Come posso modificare un UIViewController esistente per consentire lo scorrimento?

Speravo di fare tutto questo in Interface Builder. Ho provato a modificare la classe della vista da UIView a UIScrollView nell'editor Classe identità, ma non scorre nulla. La classe base del mio controller di visualizzazione è un semplice UIViewController<UIScrollViewDelegate>.

C'è un modo semplice per rendere scorrevole la vista principale nella mia vista controller senza dover ricreare il tutto in IB?

+0

Ho lo stesso problema, nessuno sembra sapere – Maysam

risposta

2

Aggiungi un UIScrollView e crea tutti i tuoi controlli e widget e le sottoview delle etichette della vista di scorrimento trascinandoli da qualsiasi punto in cui sono "dentro" o "all'interno" della vista di scorrimento. Questo li rende sottoview della vista di scorrimento, che è ciò che vuoi.

+0

Provato anche questo. Aggiunto UIScrollView, spostato i controlli in quello, rimosso UIView, reso il mio controller un UIScrollViwDelegate e reso controller il delegato e scrollview la sua vista. Nessuna scroll – Paul

+0

Non puoi semplicemente mettere la vista all'interno della vista di scorrimento? Perché cancellare l'UIView originale? –

+0

Perché il downvote? –

0

Sarebbe utile capire che cosa l'interfaccia è la visualizzazione, ma io suggerirei una delle seguenti opzioni:

  1. Non permettere la rotazione restituendo NO da shouldAutorotateToInterfaceOrientation
  2. Usa Interface Builder per adjust your springs and struts in modo che tutti gli elementi dell'interfaccia si adattino alla vista orizzontale
  3. Aggiungi un nuovo UIScrollView in Interface Builder e trascina il tuo UIView in esso, quindi riassegna la proprietà di visualizzazione del proprietario del file alla visualizzazione di scorrimento.
+0

1. Voglio rotazione. 2. Non c'è spazio. Fidati di me. 3. Provato. Nessuna scroll È un problema di delegati? – Paul

+0

Hai provato ad aggiornare il contenuto di UIScrollView quando ruota? –

1

sono stato in grado di fare questo con l'aggiunta di una vista di scorrimento per la visualizzazione in IB, rendendo il controller della vista di un UIScrollViewDelegate, agganciando lo ScrollView a un oggetto UIScrollView in IB, agganciando il delegato fino al file proprietario, e aggiungendo questa riga nel viewDidLoad:

- (void) viewDidLoad { 
     scrollView.contentSize = CGSizeMake(1280, 960); 
    } 
1

comportamento scorrimento viene richiamato solo se il contentSize di un UIScrollView è maggiore di suoi limiti.

2

È possibile farlo nel modo seguente:

  1. Aprire il file pennino e Creare un oggetto UIScrollView sotto l'UIView oggetto.
  2. spostare tutti i controlli sul UIScrollView
  3. aprire il file di intestazione (h) e aggiungere una nuova proprietà per la vista di scorrimento:

@property (nonatomic, conservano) IBOutlet UIScrollView * ScrollView;

  1. Aprire il file di implementazione (.m) e inserire il seguente:

@synthesize scrollView;

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    // Enable scrolling for portrait 
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, 600); 

} 
  1. tornare al vostro file di pennino e cablare l'ScrollView sul proprietario del file al vostro oggetto UIScrollView.

Il vero trucco qui è impostare scrollView.contentSize. Una volta impostato, lo scorrimento dovrebbe avvenire.

Se si voleva consentire lo scorrimento quando il dispositivo è in orientamento verticale, è possibile utilizzare questo:

// Enable scrolling for landscape orientation 
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, scrollView.frame.size.height); 

Questo dovrebbe dare una certa struttura di riferimento.

Flea

0

Aggiungere una barra di scorrimento in un file Xib e poi trascinare & goccia controlli alla barra di scorrimento. All'interno load view utilizzare

scrollView.contentSize = CGSizeMake(CONTENT_WIDTH, CONTENT_HEIGHT); 
+0

Per migliorare la qualità del tuo post, ti preghiamo di includere come/perché questo codice risolverà il problema. –

5

Per le persone che utilizzano storyboard, questo è abbastanza facile da fare

  • nella Struttura documento selezionare il più alto View del UIViewController
  • quindi in Identity inspecter, in classe personalizzata , per la classe immettere UIScrollView

Questo è tutto.

+0

Questa è la risposta per Xcode 7.2 –

+0

Questo ha appena rotto il mio layout. –