Я пытаюсь создать плагин для XD, чтобы автоматизировать создание элементов дизайна. Я написал функцию для создания кнопки (первое изображение ниже), используя текстовый элемент и прямоугольник. Единственная проблема заключается в том, что форма прямоугольника не зависит от ширины текста, поэтому, когда текст длиннее, текст перекрывает прямоугольник (см. второе изображение ниже).
Я пытался выяснить, как получить значение ширины текстового элемента, чтобы я мог правильно определить размер прямоугольника. Кто-нибудь может мне с этим помочь?
Я выяснил, что, добавив строку console.log (selection.items);, я могу вывести в журнал полный список свойств, но как мне получить доступ к свойство ширины?
Вот вывод журнала, показывающий прямоугольник и текстовые элементы...
[ Text ('Submit Button') {
width: 113, height: 20
global X,Y: -3, -74
parent: Artboard ('iPad – 1')
fill: ff000000
},
Rectangle ('Rectangle 6') {
width: 100, height: 50
global X,Y: -3, -58
parent: Artboard ('iPad – 1')
stroke: ff2d3494
} ]
и вот мой полный код...
const {Rectangle, Color, Text, Selection} = require("scenegraph");
let commands = require("commands");
function createButton(selection) {
// Create the outline of the button
const newButtonOutline = new Rectangle();
newButtonOutline.width = 100;
newButtonOutline.height = 50;
newButtonOutline.stroke = new Color("#2D3494");
newButtonOutline.strokeWidth = 2;
newButtonOutline.cornerRadii = {
topLeft: 10,
topRight: 10,
bottomRight: 10,
bottomLeft: 10
};
// Create the text for the button
const newButtonLabel = new Text();
newButtonLabel.text = "Submit Button";
newButtonLabel.fontSize = 18;
newButtonLabel.fill = new Color("#000000");
// Add the text and outline to the artboard
selection.insertionParent.addChild(newButtonOutline);
newButtonOutline.moveInParentCoordinates(100, 100);
selection.insertionParent.addChild(newButtonLabel);
newButtonLabel.moveInParentCoordinates(100, 100);
selection.items = [newButtonLabel, newButtonOutline];
console.log (selection.items);
//align the button elements and group together
commands.alignHorizontalCenter();
commands.alignVerticalCenter();
commands.group();
}
Я надеюсь, что кто-то может помочь!