2014-12-03 6 views
6

in modalità portrait (disegno prima volta)completamente cancellazione UIBezierPath & CAShapeLayer articoli disegnati

enter image description here

Dopo la rotazione di paesaggio, perché sono le forme più vecchie:

enter image description here

sto usando UIBezierPath & CAShapeLayer per disegnare cerchi & righe in un livello personalizzato UIView. Il problema è nonostante sia in grado di disegnare nuove linee & con successo dopo aver ruotato il dispositivo, non riesco a rimuovere le forme disegnate più vecchie. Le nuove forme disegnate dopo la rotazione del dispositivo sono perfette, ho solo bisogno di rimuovere dallo schermo quelle forme più vecchie che si attaccano allo schermo. Immagini allegate.

+0

Si prega di includere il codice pertinente (ad es. Cosa si fa a rotazione). – Rob

risposta

9

È anche possibile rimuovere la precedente CAShapeLayer (con removeFromSuperlayer) o sostituire il path del precedente CAShapeLayer. Sembra che tu stia aggiungendo un nuovo livello senza rimuovere quello vecchio, ma ovviamente è impossibile dirlo senza codice sorgente.

+0

grazie per il tuo suggerimento, mi ha spinto sulla giusta traccia – ystack

3

aah! ha trovato la soluzione utilizzando rootView.layer.sublayers = nil rimosso tutte le forme precedenti

+4

Mi piacerebbe che la tua tecnica funzionasse, ma mi piacerebbe comunque mantenere i tuoi riferimenti deboli ai livelli che hai aggiunto e quindi chiamare 'removeFromSuperlayer 'su di essi . Questa tecnica di impostare 'sottolivelli' a' nil' sembra un po 'pesante per me. Inoltre ho visto post riguardanti problemi relativi a tale tecnica (potrebbero esserci alcune varianti della versione del sistema operativo nel comportamento di questa tecnica). Comunque, sono felice che tu abbia risolto il tuo problema. – Rob