[YogaKit] Fix layout view with yoga disabled #951

Closed
lucasaraujo wants to merge 3 commits from master into main
2 changed files with 27 additions and 2 deletions

View File

@@ -465,8 +465,8 @@ static void YGApplyLayoutToViewHierarchy(UIView* view, BOOL preserveOrigin) {
const YGLayout* yoga = view.yoga;
if (!yoga.isIncludedInLayout) {
return;
if (!yoga.isEnabled || !yoga.isIncludedInLayout) {
return;
}
YGNodeRef node = yoga.node;

View File

@@ -746,4 +746,29 @@
XCTAssertEqual(view.yoga.borderEndWidth, 7);
}
- (void)testLayoutWithYogaNotEnabled
{
UIView *container = [[UIView alloc] initWithFrame:CGRectMake(0,0,50,75)];
container.yoga.isEnabled = YES;
UIView *view = [[UIView alloc] initWithFrame:CGRectZero];
view.yoga.isEnabled = YES;
view.yoga.flexBasis = YGPointValue(0);
view.yoga.flexGrow = 1;
[container addSubview:view];
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(10, 20, 30, 40)];
[container addSubview:view2];
[container.yoga applyLayoutPreservingOrigin:YES];
XCTAssertEqual(50, view.frame.size.width);
XCTAssertEqual(75, view.frame.size.height);
XCTAssertEqual(10, view2.frame.origin.x);
XCTAssertEqual(20, view2.frame.origin.y);
XCTAssertEqual(30, view2.frame.size.width);
XCTAssertEqual(40, view2.frame.size.height);
}
@end