Merge pull request #485 from victormayorov/master

Fixed bounds in ASDisplayNode
This commit is contained in:
appleguy 2015-06-18 13:05:24 -07:00
commit 590063f421
2 changed files with 17 additions and 2 deletions

View File

@ -144,13 +144,17 @@
#endif #endif
if (_layer && ASDisplayNodeThreadIsMain()) { if (_layer && ASDisplayNodeThreadIsMain()) {
CGPoint oldBoundsOrigin = _layer.bounds.origin;
_layer.bounds = CGRectMake(oldBoundsOrigin.x, oldBoundsOrigin.y, rect.size.width, rect.size.height);
CGPoint anchorPoint = _layer.anchorPoint; CGPoint anchorPoint = _layer.anchorPoint;
_layer.bounds = CGRectMake(0, 0, rect.size.width, rect.size.height);
_layer.position = CGPointMake(rect.origin.x + rect.size.width * anchorPoint.x, _layer.position = CGPointMake(rect.origin.x + rect.size.width * anchorPoint.x,
rect.origin.y + rect.size.height * anchorPoint.y); rect.origin.y + rect.size.height * anchorPoint.y);
} else { } else {
CGPoint oldBoundsOrigin = self.bounds.origin;
self.bounds = CGRectMake(oldBoundsOrigin.x, oldBoundsOrigin.y, rect.size.width, rect.size.height);
CGPoint anchorPoint = self.anchorPoint; CGPoint anchorPoint = self.anchorPoint;
self.bounds = CGRectMake(0, 0, rect.size.width, rect.size.height);
self.position = CGPointMake(rect.origin.x + rect.size.width * anchorPoint.x, self.position = CGPointMake(rect.origin.x + rect.size.width * anchorPoint.x,
rect.origin.y + rect.size.height * anchorPoint.y); rect.origin.y + rect.size.height * anchorPoint.y);
} }

View File

@ -1680,5 +1680,16 @@ static bool stringContainsPointer(NSString *description, const void *p) {
[self checkNameInDescriptionIsLayerBacked:NO]; [self checkNameInDescriptionIsLayerBacked:NO];
} }
- (void)testBounds
{
ASDisplayNode *node = [[ASDisplayNode alloc] init];
node.bounds = CGRectMake(1, 2, 3, 4);
node.frame = CGRectMake(5, 6, 7, 8);
XCTAssert(node.bounds.origin.x == 1, @"Wrong ASDisplayNode.bounds.origin.x");
XCTAssert(node.bounds.origin.y == 2, @"Wrong ASDisplayNode.bounds.origin.y");
XCTAssert(node.bounds.size.width == 7, @"Wrong ASDisplayNode.bounds.size.width");
XCTAssert(node.bounds.size.height == 8, @"Wrong ASDisplayNode.bounds.size.height");
}
@end @end