From c3cda1794140ca49da832a6fba55039b0bdd180b Mon Sep 17 00:00:00 2001 From: aleclarsoniv Date: Thu, 13 Nov 2014 17:56:05 -0800 Subject: [PATCH] Add ASDisplayNode.cornerRadius --- AsyncDisplayKit/ASDisplayNode.h | 1 + AsyncDisplayKit/Details/UIView+ASConvenience.h | 1 + .../Private/ASDisplayNode+UIViewBridge.mm | 12 ++++++++++++ AsyncDisplayKit/Private/_ASPendingState.m | 16 ++++++++++++++++ 4 files changed, 30 insertions(+) diff --git a/AsyncDisplayKit/ASDisplayNode.h b/AsyncDisplayKit/ASDisplayNode.h index 5b4121e533..481d493f53 100644 --- a/AsyncDisplayKit/ASDisplayNode.h +++ b/AsyncDisplayKit/ASDisplayNode.h @@ -461,6 +461,7 @@ @property (atomic, assign) CGPoint anchorPoint; // default={0.5, 0.5} @property (atomic, assign) CGFloat zPosition; // default=0.0 @property (atomic, assign) CGPoint position; // default=CGPointZero +@property (atomic, assign) CGFloat cornerRadius; // default=0.0 @property (atomic, assign) CGFloat contentsScale; // default=1.0f. See @contentsScaleForDisplay for more info @property (atomic, assign) CATransform3D transform; // default=CATransform3DIdentity @property (atomic, assign) CATransform3D subnodeTransform; // default=CATransform3DIdentity diff --git a/AsyncDisplayKit/Details/UIView+ASConvenience.h b/AsyncDisplayKit/Details/UIView+ASConvenience.h index f75fdbafd6..5c4da6c2b5 100644 --- a/AsyncDisplayKit/Details/UIView+ASConvenience.h +++ b/AsyncDisplayKit/Details/UIView+ASConvenience.h @@ -18,6 +18,7 @@ @property (nonatomic, assign) CGFloat zPosition; @property (nonatomic, assign) CGPoint anchorPoint; @property (nonatomic, retain) id contents; +@property (nonatomic, assign) CGFloat cornerRadius; @property (nonatomic, assign) CGFloat contentsScale; @property (nonatomic, assign) CATransform3D transform; @property (nonatomic, assign) CATransform3D sublayerTransform; diff --git a/AsyncDisplayKit/Private/ASDisplayNode+UIViewBridge.mm b/AsyncDisplayKit/Private/ASDisplayNode+UIViewBridge.mm index 578e3a2880..18bfbbe050 100644 --- a/AsyncDisplayKit/Private/ASDisplayNode+UIViewBridge.mm +++ b/AsyncDisplayKit/Private/ASDisplayNode+UIViewBridge.mm @@ -78,6 +78,18 @@ _setToViewOrLayer(opacity, newAlpha, alpha, newAlpha); } +- (CGFloat)cornerRadius +{ + _bridge_prologue; + return _getFromLayer(cornerRadius); +} + +-(void)setCornerRadius:(CGFloat)newCornerRadius +{ + _bridge_prologue; + _setToLayer(cornerRadius, newCornerRadius); +} + - (CGFloat)contentsScale { _bridge_prologue; diff --git a/AsyncDisplayKit/Private/_ASPendingState.m b/AsyncDisplayKit/Private/_ASPendingState.m index 2a35a7908b..dd7d33c3a2 100644 --- a/AsyncDisplayKit/Private/_ASPendingState.m +++ b/AsyncDisplayKit/Private/_ASPendingState.m @@ -22,6 +22,7 @@ CGColorRef backgroundColor; id contents; CGFloat alpha; + CGFloat cornerRadius; UIViewContentMode contentMode; CGPoint anchorPoint; CGPoint position; @@ -65,6 +66,7 @@ int setContents:1; int setHidden:1; int setAlpha:1; + int setCornerRadius:1; int setContentMode:1; int setNeedsDisplay:1; int setAnchorPoint:1; @@ -112,6 +114,7 @@ @synthesize autoresizingMask=autoresizingMask; @synthesize tintColor=tintColor; @synthesize alpha=alpha; +@synthesize cornerRadius=cornerRadius; @synthesize contentMode=contentMode; @synthesize anchorPoint=anchorPoint; @synthesize position=position; @@ -156,6 +159,7 @@ needsDisplayOnBoundsChange = NO; autoresizesSubviews = YES; alpha = 1.0f; + cornerRadius = 0.0f; contentMode = UIViewContentModeScaleToFill; _flags.needsDisplay = NO; anchorPoint = CGPointMake(0.5, 0.5); @@ -296,6 +300,12 @@ _flags.setAlpha = YES; } +- (void)setCornerRadius:(CGFloat)newCornerRadius +{ + cornerRadius = newCornerRadius; + _flags.setCornerRadius = YES; +} + - (void)setContentMode:(UIViewContentMode)newContentMode { contentMode = newContentMode; @@ -573,6 +583,9 @@ if (_flags.setAlpha) layer.opacity = alpha; + if (_flags.setCornerRadius) + layer.cornerRadius = cornerRadius; + if (_flags.setContentMode) layer.contentsGravity = ASDisplayNodeCAContentsGravityFromUIContentMode(contentMode); @@ -673,6 +686,9 @@ if (_flags.setAlpha) view.alpha = alpha; + if (_flags.setCornerRadius) + layer.cornerRadius = cornerRadius; + if (_flags.setContentMode) view.contentMode = contentMode;