Come rimuovere tutte le visualizzazioni secondarie da un UIScrollview?Rimuovere tutte le visualizzazioni secondarie da un UIScrollView?
risposta
Lasciare scrollView
essere un'istanza di UIScrollView
.
In Objective-C, è piuttosto facile. Basta chiamare makeObjectsPerformSelector:
, in questo modo:
Objective-C:
[scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
In Swift, non si ottiene che l'accesso runtime, quindi bisogna gestire in realtà l'iterazione da soli.
Swift:
Una versione concisa, from here:
scrollview.subviews.map { $0.removeFromSuperview() }
Un modo più descrittivo per fare questo (da here) assume scrollview.subviews
:
let subviews = self.scrollView.subviews
for subview in subviews{
subview.removeFromSuperview()
}
io ti penso solo fare attenzione e non cancellare le barre dell'indicatore di scorrimento.
Il codice fornito da Adam Ko è breve ed elegante ma può eliminare gli indicatori di scorrimento orizzontale e verticale.
faccio di solito
for (UIView *v in scrollView.subviews) {
if (![v isKindOfClass:[UIImageView class]]) {
[v removeFromSuperview];
}
}
Suposing non si dispone di UIImageView aggiunto il rotolo manualmente.
Non sto usando gli indicatori comunque. Buon punto però.+1 – Moshe
Per quanto ho testato, il mio codice non ha rimosso gli indicatori di scorrimento, credo che sia perché UIScrollView carica gli indicatori pigramente ogni volta che deve essere visualizzato, ma è comunque un buon punto da notare. – koo
In realtà penso che questa non sia una buona soluzione, perché se si dispone di sottoview UIImageView che si desidera rimuovere? – Tony
Se si desidera rimuovere le immagini uguali in scrollview.subviews e si desidera mantenere anche gli indicatori verticali e orizzontali. È possibile impostare un "tag" speciale per identificare le viste ed escludere gli indicatori verticali e orizzontali i cui tag sono 0 per impostazione predefinita.
Oltre a Ricardo de Cillo, nel mio caso ho avuto una vista tabella che aveva immagini nelle sottoview che volevo rimuovere.
for (UIView *v in self.tableview.subviews) {
if ([v isKindOfClass:[UIImageView class]]) {
[v removeFromSuperview];
}
}
La rimozione di! nel comando if, e modificare scrollview
a self.tableview
rimosso tutte le immagini, ma ha lasciato intoccata la vista tabella.
A complemento della versione concisa Swift da una risposta precedente (Swift 3.0 pronto):
_ = scrollView.subviews.filter { $0 is UIImageView }.map { $0.removeFromSuperview() }
- 1. Escludi le visualizzazioni secondarie da UIGestureRecognizer
- 2. come rimuovere le viste secondarie
- 3. Come rimuovere solo le visualizzazioni secondarie aggiunte dall'utente dal mio UIView
- 4. Monotouch: Rimuovi tutte le sottoview da una vista
- 5. Tocca in avanti e gesti alle visualizzazioni da UIScrollview
- 6. Esiste un modo efficace per rilevare le modifiche al primo soccorritore nelle visualizzazioni secondarie?
- 7. Come rimuovere tutte le tracce di un file da Subversion?
- 8. come rimuovere tutte le righe da un data.frame in r
- 9. Spostando le visualizzazioni secondarie da una vista a un'altra vista senza modificare le informazioni sulla posizione nello storyboard?
- 10. Le visualizzazioni secondarie di UITableViewCell riportano larghezza errata quando si utilizzano le classi di dimensioni
- 11. Entity Framework oggetto duplicato e tutte le proprietà secondarie
- 12. iPhone: come rimuovere tutti gli oggetti da un UIScrollView
- 13. Come rendere scorrevole un UIScrollView?
- 14. rimuovere tutte le variabili tranne le funzioni
- 15. Come rimuovere tutte le classi di test da Pharo?
- 16. Rimuovere tutte le classi da SVG usando jQuery
- 17. Come rilevare iOS 6 e tutte le versioni secondarie da user-agent?
- 18. Objective-C controlla se le visualizzazioni secondarie di UIViews ruotate si intersecano?
- 19. (layout automatico) la vista del contenitore viene ridimensionata ma le visualizzazioni secondarie non sono
- 20. cambia carattere di tutte le visualizzazioni di testo
- 21. Ridimensiona le visualizzazioni secondarie nella vista tabella quando si modifica utilizzando il layout automatico
- 22. C'è un modo per rimuovere tutte le connessioni client Redis?
- 23. Django: rimuovere tutte le relazioni m2m
- 24. Rimuovere tutte le occorrenze tranne l'ultima?
- 25. Eliminare tutte le viste da SQL Server
- 26. Come posso rimuovere tutte le istanze di un elemento da un elenco in Python?
- 27. Git: il modo migliore per rimuovere tutte le modifiche da un determinato file per un ramo
- 28. Come rimuovere tutte le celle in un tablewidget pyqt4?
- 29. Come rimuovere tutte le annotazioni da MKMapView senza rimuovere il punto blu?
- 30. UIScrollView e CATiledLayer da zero
versione __Swift__ è [qui] (http://stackoverflow.com/a/27065076/607368) –