I drew a few lines in the layer property of my UIView . But is there a way to clear all the lines that I drew?
I want to clear everything that is drawn on the layer of my view.
I draw a line with the following code:
- (void)drawLine :(UIView *)drawInView :(CGPoint)startPosition :(CGPoint)endPosition {
I found code to remove all the sublayers that I drew.
-(void)clearGraph :(UIView *)viewToClear { for (CALayer *layer in viewToClear.layer.sublayers) { [layer removeFromSuperlayer]; } }
But this will give an exception:
2013-08-28 21:10:18.877 ServerInfo[12861:3f03] *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <CALayerArray: 0x1f86b3b0> was mutated while being enumerated.' *** First throw call stack: (0x336ef3e7 0x3b3ea963 0x336eeec1 0x13f7d 0x158bb 0x340082fb 0x336c4857 0x336c4503 0x336c3177 0x3363623d 0x336360c9 0x33f5a5c3 0x33ffdc45 0x15843 0x34007231 0x3b8370e1 0x3b836fa8) libc++abi.dylib: terminate called throwing an exception (lldb)
I call the drawline method inside NSTread. (the doParsing method must be specific).
NSThread *myThread =[[NSThread alloc]initWithTarget:self selector:@selector(callTimer) object:nil]; [myThread start]; - (void)callTimer { NSRunLoop* runLoop = [NSRunLoop currentRunLoop]; [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(doParsing) userInfo:nil repeats:YES]; [runLoop run]; }
source share