【问题标题】: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)