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.
E questo è un buon tutorial http://www.thinkandbuild.it/how-to-build-a-custom-control-in-ios/ – MatterGoal
https://www.cocoacontrols.com/controls/dwtaglist Per me va bene. –