sketch开发之Json2View(三) 获取选中控件

2019-01-19  本文已影响20人  西博尔

sketch工程下载地址:github

因为sketch没有iOS控件的概念 ,没有UILabel, 没有UIImageView, 所以需要自己构建控件

1.我用Group 组来代替控件名, 修改group的名称实现
2.imageView ,label , 都是由两部分组成 , 一个是Rectange外框, 和相对应的内容
3.group可以包含group, 就形成了父子视图的关系

1.获取选中的控件(不分层级结构版本)

什么是不分层级的呢??

就是图片, 标题 , 还有广告 ,以及背景 没有父子视图的关系, 属于同一级别


image.png
function getControls() {
    log('-----------' + init.selection.count())


    // log('控件数 =======++++++++++++^^^^^^^^^^^ ' + init.selection.count()) // 模板 

    // openProperty.settingsPanel()

    // log('打印:' + options.controls);

    for (var i = 0; i < init.selection.count(); i++) {
        var layerGroup = init.selection[i]

        // log('GroupType ===' + layerGroup)
        var layers = layerGroup.layers().objectEnumerator(), layer;


        while (layer = layers.nextObject()) {
            // log('*******************:' + layer.name())
            options.data.controls.push(layer.name().UTF8String());
        }

    }
    // log('arr ==============:' + options.data.controls);
    return options.data.controls;
}

就是遍历一下选中选中的Group里面有多少图层

2.获取选中的图层(有上下级关系)

上面的绘制方式局限性太大了 , 毕竟如果涉及到覆盖关系的话, 谁在上面, 谁在下面?所有要有这样的层级关系, 毕竟决定了代码addSubview的时候谁在上面

image.png

function getControls(layerGroup) {
    // log('-----------' + init.selection.count())
    // log('控件数 =======++++++++++++^^^^^^^^^^^ ' + init.selection.count()) // 模板 
    // log('GroupType ===' + layerGroup)
    var layers = layerGroup.layers().objectEnumerator(), layer;


    while (layer = layers.nextObject()) {
        // log('*******************:' + layer.name())

        // log('-------------:name:' + layer.name() + '        class:' + layer.class());

        if (layer.class() == 'MSLayerGroup') {
            //添加到一个数组里
            options.data.controls.push(layer.name().UTF8String());
            getControls(layer)
        }

    }


    return options.data.controls;


    // log('arr ==============:' + options.data.controls);
}

用了一个递归 , 这个递归如果写的有问题, 欢迎给改正下, 递归很少用, 总感觉写的不对, 但是结果对就暂时没有管

上一篇 : sketch开发之Json2View(二) 初始化

下一篇:sketch开发之Json2View(四) 创建资源绑定弹框

上一篇下一篇

猜你喜欢

热点阅读