SketchPlugins開發筆記

xixinRunBoy發表於2018-02-28

Sketch基本結構

MSTextLayer文字控制元件

MSShapePathLayer圖形基控制元件

SKetch只有文字和圖形的概念

像iOS上面的UIImageView,UIButton,TextField都是用基於MSShapePathLayer的子控制元件來表示的

MSSymbolInstance就是Symbol控制元件(重複使用控制元件)

OC屬性

你需要的很多屬性都是官方文件上面沒有標示出來的,只能通過標頭檔案和一些寫好的第三外掛的JS程式碼名稱來猜測,在動態除錯看是否是需要的屬性.

具體可以看我寫的sketch外掛專案來了解

SObject類是將Layer的所有屬性全部轉換成對應的屬性,後續程式碼邏輯就和Sketch沒有關係, 這個專案的目的就是將Sketch對應控制元件的屬性提取出來轉換Swift程式碼

github連結

JS屬性

content: Application就是整個應用

selection: Represents the layers that the user has selected.

layer: 基本物件等於UIView

style: layer物件的樣式

fills: style的集合

files有fillType,color方法

Text一般為UILabel

Group一般為UIButton

Group為Button時,可以遍歷其item然後拿到text

//Style
fill.fillType() == 0 //表示的是顏色??
fillType表明的是border,背景顏色或者什麼的
複製程式碼
// groupLayer
Button.iterate(function(item) {
  if (item.isText) { // 拿到Button的TextLayer,然後可以拿到字型樣式,大小,顏色
    
  }
}
// ShapeLayer
// 背景顏色 fills是array,每個代表一個style
item.sketchObject.style().fills()[0].color()
layer.style().fills().firstObject().color()
複製程式碼
//Sketch程式碼片段
// 獲取選擇的layers
var selection = context.api().selectedDocument.selectedLayers
// 遍歷layers
selection.iterate(function(item) {
    
});
// 判斷layer型別
item.isText, item.isShape, item.isImage, item.isGroup
item.isPage, item.isArtboard
// 首字母小寫
string.charAt(0).toLowerCase() + string.slice(1);
// 移除空格
str.replace(/\s+/g, '');
// 獲取Text的text屬性
item.text
// 獲取字型名稱
item.sketchObject.fontPostscriptName()
// 獲取字型大小
item.sketchObject.fontSize()
// 字型顏色
item.sketchObject.textColor()
// 字型對齊格式
item.alignment
// 背景顏色
item.sketchObject.backgroundColor()
// frame
item.frame

複製程式碼

相關文章