-[UIView addSubnode:], -[CALayer addSubnode:].

Bring back this convenience API -- it disappeared somewhere along the
line while we were building Paper.  This is totally trivial, but
conveniently won't break if you layer-back a leaf node.

Closes #278.
This commit is contained in:
Nadine Salter
2015-02-02 19:53:36 -08:00
parent c6a04ef8bd
commit f085f06ff3
5 changed files with 43 additions and 4 deletions

View File

@@ -520,3 +520,19 @@ typedef CALayer *(^ASDisplayNodeLayerBlock)();
*/
@interface ASDisplayNode (ASDisplayNodeAsyncTransactionContainer) <ASDisplayNodeAsyncTransactionContainer>
@end
@interface UIView (AsyncDisplayKit)
/**
* Convenience method, equivalent to [view addSubview:node.view] or [view.layer addSublayer:node.layer] if layer-backed.
*/
- (void)addSubnode:(ASDisplayNode *)node;
@end
@interface CALayer (AsyncDisplayKit)
/**
* Convenience method, equivalent to [layer addSublayer:node.layer].
*/
- (void)addSubnode:(ASDisplayNode *)node;
@end

View File

@@ -1751,3 +1751,26 @@ static const char *ASDisplayNodeAssociatedNodeKey = "ASAssociatedNode";
@implementation CALayer (ASDisplayNodeInternal)
@dynamic asyncdisplaykit_node;
@end
@implementation UIView (AsyncDisplayKit)
- (void)addSubnode:(ASDisplayNode *)node
{
if (node.layerBacked) {
[self.layer addSublayer:node.layer];
} else {
[self addSubview:node.view];
}
}
@end
@implementation CALayer (AsyncDisplayKit)
- (void)addSubnode:(ASDisplayNode *)node
{
[self addSublayer:node.layer];
}
@end

View File

@@ -51,7 +51,7 @@
{
[super viewDidLoad];
[self.view addSubview:_textNode.view];
[self.view addSubnode:_textNode];
[self.view addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]];
}

View File

@@ -61,7 +61,7 @@
{
[super viewDidLoad];
[self.view addSubview:_imageNode.view];
[self.view addSubnode:_imageNode];
[self.view addSubview:_textLabel];
[self start];

View File

@@ -89,8 +89,8 @@
// this placeholder will cover all subnodes while they are displaying, just a like a stage curtain!
_postNode.placeholderEnabled = NO;
[self.view addSubview:_imageNode.view];
[self.view addSubview:_postNode.view];
[self.view addSubnode:_imageNode];
[self.view addSubnode:_postNode];
}