From 26bcc1e07200dcab6562f66b9c4d87e3acebdd89 Mon Sep 17 00:00:00 2001 From: Dustin Shahidehpour Date: Thu, 20 Oct 2016 09:27:49 -0700 Subject: [PATCH] Remove view.isHidden optimization from sizing/layout. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: Originally, we thought that skipping the measurement of views that were hidden would be a nice optimiatzion. Upon further review, we saw that according to Apple's `UIView` documentation: > A hidden view disappears from its window and does not receive input events. It remains in its superview’s list of subviews, however, and participates in autoresizing as usual. So, to keep parity with common iOS layout APIs, we are going to size and layout views, even if they are hidden. Reviewed By: emilsjolander Differential Revision: D4051225 fbshipit-source-id: 0794cbad293a7de83d109dad2b3983d83845d145 --- uikit/CSSLayout/Tests/CSSLayoutTests.m | 20 -------------------- uikit/CSSLayout/UIView+CSSLayout.m | 8 -------- 2 files changed, 28 deletions(-) diff --git a/uikit/CSSLayout/Tests/CSSLayoutTests.m b/uikit/CSSLayout/Tests/CSSLayoutTests.m index 2074b7c7..12d50933 100644 --- a/uikit/CSSLayout/Tests/CSSLayoutTests.m +++ b/uikit/CSSLayout/Tests/CSSLayoutTests.m @@ -46,24 +46,4 @@ XCTAssertEqual(0, CSSNodeGetInstanceCount()); } -- (void)testHiddenViewsAreNotMeasured -{ - const CGSize firstSize = CGSizeMake(100, 100); - UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; - [view css_setUsesFlexbox:YES]; - [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 abcd4ed0..aa9faebb 100644 --- a/uikit/CSSLayout/UIView+CSSLayout.m +++ b/uikit/CSSLayout/UIView+CSSLayout.m @@ -237,10 +237,6 @@ static CSSSize _measure( @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; @@ -273,10 +269,6 @@ 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;