Sketch基本結構
MSTextLayer文字控制元件
MSShapePathLayer圖形基控制元件
SKetch只有文字和圖形的概念
像iOS上面的UIImageView,UIButton,TextField都是用基於MSShapePathLayer的子控制元件來表示的
MSSymbolInstance就是Symbol控制元件(重複使用控制元件)
OC屬性
你需要的很多屬性都是官方文件上面沒有標示出來的,只能通過標頭檔案和一些寫好的第三外掛的JS程式碼名稱來猜測,在動態除錯看是否是需要的屬性.
具體可以看我寫的sketch外掛專案來了解
SObject類是將Layer的所有屬性全部轉換成對應的屬性,後續程式碼邏輯就和Sketch沒有關係, 這個專案的目的就是將Sketch對應控制元件的屬性提取出來轉換Swift程式碼
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
複製程式碼