diff --git a/uikit/CSSLayout/Tests/CSSLayoutTests.m b/uikit/CSSLayout/Tests/CSSLayoutTests.m index 08a71416..cd550bb3 100644 --- a/uikit/CSSLayout/Tests/CSSLayoutTests.m +++ b/uikit/CSSLayout/Tests/CSSLayoutTests.m @@ -16,11 +16,24 @@ @implementation CSSLayoutTests -- (void)testSmoke +- (void)testHiddenViewsAreNotMeasured { + const CGSize firstSize = CGSizeMake(100, 100); UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; [view css_setUsesFlexbox:YES]; - XCTAssertTrue([view css_usesFlexbox]); + [view css_setWidth:firstSize.width]; + [view css_setHeight:firstSize.height]; + + [view css_applyLayout]; + XCTAssertTrue(CGSizeEqualToSize(firstSize, view.frame.size)); + + const CGSize newSize = CGSizeMake(200, 200); + [view css_setWidth:newSize.width]; + [view css_setHeight:newSize.height]; + view.hidden = YES; + + [view css_applyLayout]; + XCTAssertFalse(CGSizeEqualToSize(newSize, view.frame.size)); } @end diff --git a/uikit/CSSLayout/UIView+CSSLayout.m b/uikit/CSSLayout/UIView+CSSLayout.m index 194e08ca..8fc582c5 100644 --- a/uikit/CSSLayout/UIView+CSSLayout.m +++ b/uikit/CSSLayout/UIView+CSSLayout.m @@ -226,6 +226,10 @@ static void _updateFrameRecursive(UIView *view); @end static void _attachNodesRecursive(UIView *view) { + if (view.isHidden) { + return; + } + CSSNodeRef node = [view cssNode]; const BOOL usesFlexbox = [view css_usesFlexbox]; const BOOL isLeaf = !usesFlexbox || view.subviews.count == 0; @@ -258,6 +262,10 @@ static void _attachNodesRecursive(UIView *view) { } static void _updateFrameRecursive(UIView *view) { + if (view.isHidden) { + return; + } + CSSNodeRef node = [view cssNode]; const BOOL usesFlexbox = [view css_usesFlexbox]; const BOOL isLeaf = !usesFlexbox || view.subviews.count == 0;