2011-02-02 17 views
16

Mi piacerebbe sapere come creare un controllo iPhone personalizzato da zero o utilizzando una libreria o un framework esistente.Controllo personalizzato iPhone/iOS

Ho visto la libreria tre20, anche tapku e touch doganali che sono carini per controlli iOS specializzati come la visualizzazione tabella ecc., Ma sto parlando di realizzare controlli interattivi totalmente personalizzati qui.

Diciamo che volevo effettuare un controllo di composizione simile a quello di questa app: http://store.apple.com/us/product/H2654LL/A.

Dove dovrei iniziare?

  • Vorrei creare una sottoclasse di UIView e personalizzarlo?
  • Dovrei usare il quarzo 2d?
  • Vorrei utilizzare OpenGL ES per disegnare qualcosa come questo sullo schermo?
  • Posso ancora utilizzare IB per progettare/impaginare la mia vista personalizzata?

Sono solo un po 'confuso da che parte andare qui.

Sì - questa domanda è stata posta e risposta alcune volte prima, ma devo ancora trovare una risposta soddisfacente che affronti i punti precedenti.

risposta

23

Cosa sottoclasse Invece di UIView si sarebbe probabilmente desidera sottoclasse UIControl. Questa classe ha funzionalità per la build del modello Target/Action in cui è possibile utilizzare per rispondere alle azioni generate dal controllo personalizzato. La maggior parte degli elementi su pulsanti e cursori simili a UIKit ereditano da UIControl per questo motivo specifico.

Visualizzare la sottoclasse Disegno in realtà dipende da ciò che si vuole raggiungere e ciò che si desidera animare parti. Puoi usare le immagini, disegnare usando quarzo o OpenGL a seconda di cosa ti serve o cosa preferisci. Usa la tecnica per ottenere l'effetto desiderato nel modo più semplicistico. È possibile utilizzare più immagini per gestire stati diversi (premuto, ecc.) O per l'animazione di sprite. I CALAYER sono piacevoli da ruotare o spostare facilmente.

Indipendentemente dalla tecnologia utilizzata, probabilmente userete gli eventi tocco in entrata per controllare l'animazione. Nel caso di un controllo di composizione, si controllerebbe la quantità di rotazione in base al movimento delle coordinate y, ad esempio.

Per illustrare: Ad esempio, ho usato le immagini se il mio controllo aveva solo bisogno di cambiare quando premuto, ad esempio: basta scambiare le immagini. Mi piace anche usare CALayer un sacco che ti dà modi semplici per generare bordi, maschere, gradienti e un raggio d'angolo, tutti facilmente anche animati.

Utilizzo in Interface Builder Con Cocoa sul desktop è stato possibile creare palette IB personalizzate per i controlli personalizzati. iOS non ha mai avuto questa funzionalità e non ho idea dei plug-in IB disponibili per Xcode 4.

Quindi l'unico modo per gestire le sottoclassi personalizzate al momento è utilizzare un UIView in IB e impostare il campo "Classe personalizzata" nel Identity Inspector al nome della classe personalizzata. In questo modo hai una vista che puoi modificare e ridimensionare.In Interface Builder è solo un rettangolo, quando esegui la tua app, XIB lo deserializzerà effettivamente alla tua classe personalizzata.

Quando si utilizza uno UIControl si ottengono i meccanismi di destinazione/azione gratuitamente. Quindi puoi collegare i tuoi eventi touch a qualsiasi oggetto in IB come con qualsiasi altro controllo UIKit standard.

Una cosa da notare: se si dispone di selettori personalizzati - initWith....:, quelli non verranno chiamati. La tua classe è deserializzata dall'XIB, quindi dovresti usare - initWithCoder:(NSCoder *)aDecoder; come inizializzazione.

1

Inoltre ci sono alcuni controlli personalizzati su http://www.cocoacontrols.com/platforms/ios/controls. Sono open source quindi è possibile scaricare l'origine e giocare con loro.

+0

E questo è un buon tutorial http://www.thinkandbuild.it/how-to-build-a-custom-control-in-ios/ – MatterGoal

+0

https://www.cocoacontrols.com/controls/dwtaglist Per me va bene. –

Problemi correlati