Sono alle prese con setNeedsDisplay
. Ho pensato che avrebbe dovuto attivare chiamate di drawRect:
per la vista per la quale è stato chiamato e la gerarchia sotto quella se è all'interno dei limiti della vista, ma non lo trovo. Ecco il mio setup:setNeedsDisplay non attiva drawRect nelle sottoview come previsto
Dal delegato dell'applicazione, creo una vista la cui dimensione è un quadrato che copre essenzialmente l'intero spazio dello schermo. Questa vista è denominata TrollCalendarView
. Non succede molto a TrollCalendarView
tranne per una rotazione innescata dalla bussola.
Ci sono 7 sottoview di TrollCalendarView
chiamati PlatformView
destinati a contenere oggetti di disegno 2D disposti attorno al centro di TrollCalendarView
in una disposizione a 7 lati. Quindi, quando l'iPad viene ruotato, queste 7 viste ruotano in modo tale da essere sempre orientate con le direzioni cardinali.
Ciascuna sottoview di PlatformView
contiene 3 sottopagine chiamate Tower
. Ogni torre contiene oggetti di disegno 2D implementati in drawRect:
.
Così, in sintesi, ho TrollCalendarView
con vuoto drawRect:
e subviews PlatformView
e Platformview
-> Torre che ogni hanno implementazioni drawRect. Inoltre, Tower si trova all'interno dei limiti della piattaforma e Platform si trova all'interno dei limiti di TrollCalendarView.
In TrollCalendarView
Ho aggiunto un indicatore di scorrimento. Quando si esegue lo scorrimento, una proprietà viene aggiornata e io chiamo [self setNeedsDisplay]
ma non sembra che accada nulla. Ho aggiunto voci NSLog al metodo drawRect:
in ciascuna di queste visualizzazioni e viene chiamato solo il metodo . Ironicamente, questa è l'unica vista il cui metodo drawRect
sarà vuoto.
Non esiste un file xib.
Cosa devo fare per garantire che venga chiamato il metodo drawRect
nelle altre visualizzazioni secondarie? C'è documentazione da qualche parte che descrive tutte le sfumature che potrebbero influenzare questo?
Ho avuto questa idea dalle risposte a domande simili proprio qui su StackOverflow. Basta cercare sottoview setNeedsDisplay per i campioni. Ce ne sono diversi. –
Seguirò questo suggerimento a meno che non impari in un altro modo. Almeno corrisponde alle mie conclusioni nei test. –
Sfortunatamente c'è un sacco di rumore in SO e in molti ciechi. Le domande che stai guardando hanno pochissimi voti, quindi probabilmente non molte persone li hanno visti o hanno avuto la possibilità di correggerli. Se hai appena iniziato, i documenti Apple sono molto più affidabili. –