yogakit项目使用

公司使用的RN库是删减掉yogakit的oc接口文件的。

所以把以上接口文件加回来,就可以直接使用了。因为yoga.h肯定是有的,这是RN布局的基础。 简答试了个case。代码如下

 view.backgroundColor = [UIColor whiteColor];
    [view configureLayoutWithBlock:^(YGLayout * _Nonnull layout) {
        layout.isEnabled = YES;
        layout.flexDirection = YGFlexDirectionRow;
        layout.marginTop = YGPointValue(100);
        layout.width = YGPointValue(CURRENTSCREEN_WIDTH);
        layout.marginBottom = YGPointValue(0);
    }];
    UILabel *label1 = [UILabel new];
    label1.text = @"111111111111144444444444444";
    label1.numberOfLines = 0;
    label1.lineBreakMode = NSLineBreakByWordWrapping;
    [label1 configureLayoutWithBlock:^(YGLayout * _Nonnull layout) {
        layout.isEnabled = YES;
        layout.marginRight = YGPointValue(20);
        layout.marginTop = YGPointValue(10);
        layout.marginLeft = YGPointValue(10);
    }];
    [view addSubview:label1];
    UILabel *label2 = [UILabel new];
    label2.text = @"2222222222223333333333333";
    label2.numberOfLines = 0;
    label2.lineBreakMode = NSLineBreakByWordWrapping;
    [label2 configureLayoutWithBlock:^(YGLayout * _Nonnull layout) {
        layout.isEnabled = YES;
        layout.marginTop = YGPointValue(10);
        layout.marginRight = YGPointValue(10);
        layout.marginLeft = YGPointValue(10);
    }];
    
    [view addSubview:label2];
    [view.yoga applyLayoutPreservingOrigin:NO];
复制代码

效果如上,对于label的自动换行还是没法支持,可能是我姿势不对。

不过新增的代码行数也不超过500行,对于已经支持RN的项目来说,多一种布局支持也不见得是一种坏事

update: 按照评论所说加上 layout.flexShrink = 1;

查了下flexShrink的定义如下

谢谢yun1467723561418的指点。

转载于:https://juejin.im/post/5bf29d1b5188254caf185099

你可能感兴趣的:(yogakit项目使用)