2013-06-06 13 views
26

Ho un'app per iOS in cui ho creato alcuni controller di vista nello storyboard, la vista del controller di visualizzazione ha alcune sottoview. Ora Voglio aggiungere qualche scrollview in quella vista e voglio spostare tutte quelle sottoview in quella scrollview. Ma il problema è quando trascino quelle viste a scrollview, il generatore di interfacce sta centrando quelle sottoview, tutte le informazioni sulla posizione sono perse.Spostando le visualizzazioni secondarie da una vista a un'altra vista senza modificare le informazioni sulla posizione nello storyboard?

Non voglio che il builder dell'interfaccia lo faccia. Non c'è un modo corretto per risolvere questo problema? Ho già cercato su questo problema e ho trovato queste due soluzioni, ma nessuna è utile nel mio caso.

Adding a subview to the current view without messing up positioning of objects in the view Non riesco a utilizzare questa soluzione perché, questo è aggiungere una vista in un'altra vista mentre voglio aggiungere scrollview.

XCode - Is there a way to drag a component from one view to another without losing its frame? Anche questa soluzione non è utile per me perché, il file storyboard è incasinato e danneggiato quando ho fatto questo.

risposta

56

Sì, c'è un modo semplice per farlo:

Fase 1: Selezionate le vostre opinioni

enter image description here

Fase 2: Go Editor>incorporare nel>Scroll View

enter image description here

Fatto!

enter image description here

PS. Questo è un modo molto pratico per raggruppare le viste in effetti. Puoi incorporare qualsiasi vista in una vista 'contenitore', spostarla ovunque desideri (anche a croce) mantenendo le relative informazioni di posizione e quindi puoi mantenerle come gruppo o estenderle.

+0

Ottima risposta! Grazie mille :) Solo un piccolo problema che ho trovato è quando incorporo sottoview in scrollview, la larghezza scrollview diventa 340 invece di 320. E a causa di questo ogni subview orgin.x diventa origin.x + 10. Quando cambio manualmente la dimensione della larghezza di scrollview da 340 a 320, l'indirizzo secondario orgin.x è ancora origin.x + 10. Quindi devo modificare manualmente il valore di orgin.x. C'è una soluzione anche per questo? Grazie ancora per la tua grande tecnica :) – iMemon

+1

Ciao, non sono sicuro di averlo capito correttamente ma devi notare due cose: 1. Ogni frame di 'UIView' è relativo alla sua vista genitore (quindi quando incorpori le viste sui frame stanno riflettendo la loro posizione relativamente alla scrollview). 2. Quando incorpori le viste in questo modo, IB aggiunge automaticamente un padding secondo HIG di Apple. Se vuoi ridimensionare una vista 'contenitore' senza cambiare le posizioni delle sue sottoview, deseleziona "Autoresize subviews" in IB. Spero che abbia senso ... – Alladinian

+0

Sì, hai ragione. L'hai capito come voglio io.So già del primo punto. Per quanto riguarda il secondo punto "IB aggiunge automaticamente un padding secondo HIG di Apple.", Cosa dovrei fare quando non voglio questo comportamento? – iMemon

3

Se qualcuno si imbatte in questa domanda cercando di trovare un modo per farlo a livello di codice (come ho fatto io), ecco cosa ho finito per usare:

for (UIView *view in [_viewAdd subviews]) { 
    [_viewMain addSubview:view]; 
} 

Nota: addSubview toglie la vista dalla sua superview precedente in modo non è necessario il codice per la rimozione

Problemi correlati