CATiledLayer și UIScrollView, caching date vechi pentru unele niveluri de zoom

Am un CATiledLayer creat pentru a redimensiona dinamic o grafică pe care o creez cu Quartz.

Această vizualizare este adăugată ca vizualizare de conținut a unei vizualizări de defilare și, pe măsură ce derotez și măresc graficul, redesenăm la rezoluția corectă și facem exact cum mă așteptam.

Problema mea este că dacă schimbe valorile care generează graficul (este o vizualizare a unei structuri asemănătoare graficului), apoi setNeedsDisplay în vizualizare, modificările se vor aplica și se vor afișa la anumite niveluri de zoom, dar dacă depărtați arată graficul vechi care a fost generat. Mărirea din nou revine la grafica corespunzătoare.

Presupun că diferite niveluri de zoom în stratul de țiglă sunt stocate în cache, deci actualizarea nu este aplicată nivelurilor de zoom deja memorate.

Întrebarea mea este că, dacă este cazul, există vreo modalitate de a forța CATiledLayer să nu se redreseze din datele cache? Și dacă nu, știe cineva ce ar putea provoca problema?

1

1 răspunsuri

Nu sunteți sigur dacă aveți în continuare această problemă, dar recent am făcut parte din ea. Aceasta pare a fi aceeași problemă din Ștergeți cache-ul CacheLayers când schimbați imaginile Răspunsul pare pentru a seta layer.content la zero și apoi apelați la o reîmprospătare cu setNeedsDisplay sau setNeedsDisplayInRect :. Deci, ori de câte ori ați fi sunat setNeedsDisplay pentru a reîmprospăta vizualizarea după ce ați dorit să fie șters, ați folosi în schimb:

layer.content = nil;
[layer setNeedsDisplay];

Acest lucru pare să funcționeze pentru mine, deși în comentariile pentru răspunsul la întrebarea legată mai sus există avertismente împotriva stabilirii directe a proprietății layer.content. În afară de eventuala eliminare și re-adăugare a stratului, deși nu am reușit să vină cu alte opțiuni.

0
adăugat
Multumesc pentru sfat, nu folosesc CatiledLayer pentru asta, dar este bine sa stii pentru proiectele viitoare. Voi incerca :).
adăugat autor Jeames Bone, sursa
iOS dezvoltatori, România — Moldova
iOS dezvoltatori, România — Moldova
21 participanți

Parteneri: ciupacabra.com, @php_ro, @js_ro, @node_ro, @seo_ro Android: @ro_android