From cb9a31394fc86d4bc2fcff0ac49ad8b895514f2a Mon Sep 17 00:00:00 2001 From: Yury Popov Date: Thu, 14 May 2015 17:40:10 +0300 Subject: [PATCH] Pattern layer display fix --- pxSVG/pxSVGRenderPath.m | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/pxSVG/pxSVGRenderPath.m b/pxSVG/pxSVGRenderPath.m index 9d4fa98..1a40b55 100644 --- a/pxSVG/pxSVGRenderPath.m +++ b/pxSVG/pxSVGRenderPath.m @@ -35,8 +35,8 @@ @interface pxSVGRenderPath () @end @interface pxSVGPatternLayer : CALayer -@property CALayer *patternLayer; -@property CATransform3D patternTransform; +@property (nonatomic) CALayer *patternLayer; +@property (nonatomic) CATransform3D patternTransform; @end @implementation pxSVGPatternLayer @@ -49,11 +49,37 @@ + (instancetype)layer - (instancetype)init { self = [super init]; - self.delegate = self; [self setNeedsDisplayOnBoundsChange:YES]; + [self setNeedsDisplay]; return self; } +- (void)dealloc +{ + self.patternLayer = nil; +} + +- (void)setPatternLayer:(CALayer *)patternLayer +{ + _patternLayer = patternLayer; + [self setNeedsDisplay]; +} + +- (void)setPatternTransform:(CATransform3D)patternTransform +{ + _patternTransform = patternTransform; + [self setNeedsDisplay]; +} + +- (void)setNeedsDisplay +{ + if ([NSThread isMainThread]) return [super setNeedsDisplay]; + __weak id weakself = self; + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + if (weakself) [weakself setNeedsDisplay]; + }]; +} + - (void)drawInContext:(CGContextRef)ctx { CGRect r = CGContextGetClipBoundingBox(ctx);