【问题标题】:How to use setImage in Sketch Plugins如何在 Sketch 插件中使用 setImage
【发布时间】:2016-06-14 04:15:23
【问题描述】:

我目前正在编写一个 Sketch 插件。

我正在做这样的事情:

fill.setFillType(4);
fill.setPatternImage( imageData );
fill.setPatternFillType(1);

控制台输出: setPatternImage:已弃用。使用 setImage: 代替 MSImageData «Scripting Legacy»

我该如何解决这个问题?这会导致崩溃。

fill.setImage( imageData )

提前致谢。

【问题讨论】:

    标签: javascript scripting-bridge sketchapp cocoascript


    【解决方案1】:

    你看过关于新版本的草图吗? https://github.com/abynim/Sketch-Headers

    如果您想构建一个支持所有版本的插件,您可以更改您的代码:

    首先,您需要将您的草图版本作为变量捕获。

    function getSketchVersionNumber() {
        const version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]
        var versionNumber = version.stringByReplacingOccurrencesOfString_withString(".", "") + ""
        while(versionNumber.length != 3) {
            versionNumber += "0"
        }
        return parseInt(versionNumber)
    }
    
    var sketchVersion = getSketchVersionNumber()
    
    fill.setFillType(4)
    
    if (sketchVersion > 370) {
      // you need to grab the image with MSImageData like this one
      var image = [[MSImageData alloc] initWithImage: imageData convertColorSpace: false]]
      fill.setImage(image)
    
    } else if(sketchVersion < 350) {
     [fill setPatternImage:imageData collection:[[fill documentData] images]]
    } else {
     fill.setPatternImage(imageData)
    }
    fill.setPatternFillType(1)
    

    【讨论】:

    • 哦,太好了,我明天去看看。提前致谢
    • 你试过了吗? @qudrat
    猜你喜欢
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多