设计师编程指南之Sketch插件开发 4

为什么写这个系列的文章,一是因为网上相关的 sketch 插件开发教程太少,官方的文档写得不算太清楚,二是因为本公众号长期在研究智能设计相关的内容,基于 sketch 做一些智能设计的辅助工具也在考虑的范围之内,于是就诞生了这个系列的文章。

ps:本系列教程基于最新版的 sketch 48

往期文章索引:

1 / 入门基本概念、page的相关操作

2 / artboard 、NSFileManager 和 NSString 关于文件及文件夹的相关操作

3 / DIY一个Sketch插件,生成猫猫狗狗的全家福

这期介绍 NSPasteboard 、text 的操作。

1

新建一个 text

var doc = context.document;
var page=doc.currentPage();

var textLayer=[MSTextLayer new];

var str='hello world';

textLayer.setStringValue(str);
textLayer.name=str;

textLayer.fontSize=20;

var textFrame=[textLayer frame];
textFrame.x=100;
textFrame.y=100;
textFrame.width=100;
textFrame.height=200;

page.addLayer(textLayer)

2

竖排文字

做设计的时候,经常会碰到如何输入竖排的文字吧?解决办法一般是把文本框的宽度缩小到一个字的宽度。实际上,我们还可以通过代码来解决~

var doc = context.document;
var page=doc.currentPage();

var textLayer=[MSTextLayer new];

var str='春色满园关不住,一枝红杏出墙来。';
var strs=[];

for(var i=0;i<str.length;i++){    
    var s=str[i];
    strs.push(s)
};

var newStr=strs.join('\n')
log(newStr)

textLayer.setStringValue(newStr);
textLayer.name=str;

var textFrame=[textLayer frame];
textFrame.x=100;
textFrame.y=100;
textFrame.width=10;
textFrame.height=200;

page.addLayer(textLayer)

当你有很多很多的字需要竖排的时候,代码的优势就体现出来啦~

3

剪切板 NSPasteboard 的相关操作

获取剪切板中的内容

var pasteBoard=NSPasteboard.generalPasteboard();
var stringFromPasteBoard = [pasteBoard stringForType:NSPasteboardTypeString];

log(stringFromPasteBoard)

清空剪切板

[pasteBoard clearContents];

写入剪切板

[pasteBoard setString:@'stringToWrite' forType:NSStringPboardType];

4

动手实验

现在你可以试着开发一个小功能啦,比如:复制任意一段文字,自动排成竖版的段落版面。效果如下图

另外,还可以结合第二期的 artboard ,把竖排的段落拷贝到新建的 artboard 上。

原文发布于微信公众号 - 科技Mix设计Lab(Design-AI-Lab)

原文发表时间:2018-02-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木宛城主

SharePoint 2013 Designer工作流——Parallel Block的应用

参考目录 安装和配置SharePoint 2013 Workflow SharePoint 2013 实现多级审批工作流 在自定义Workflow...

26610
来自专栏图像识别与深度学习

《Android》Lesson24-综合项目实战

2368
来自专栏小白课代表

学术党!EndNote 8.2 文献管理软件 中文汉化版 安装教程

1515
来自专栏我杨某人的青春满是悔恨

使用 MVVM 架构时页面跳转逻辑写在哪儿?

之前我一直在 ViewModel 中处理页面跳转逻辑,VC 直接拿到目标页面进行 push/present。前些天 Code Review 时,同事指出理论上 ...

1051
来自专栏菩提树下的杨过

Web开发感悟:数据绑定是一种技术,更是一门艺术

1、前言 作为一个多年从事b/s开发的程序猿,曾先后使用过asp、asp.net做为主要服务端语言。不管是相对低级的asp也好,还是高级的asp.net也罢,都...

2125
来自专栏精讲JAVA

订单系统中并发问题和锁机制的探讨

问题由来 假设在一个订单系统中(以火车票订单系统为例),用户A,用户B都要预定从成都到北京的火车票,A、B在不同的售票窗口均同时查询到了某车厢卧铺中、下铺位有空...

44711
来自专栏施炯的IoT开发专栏

PhoneFinder--寻找丢失的手机

    手机丢了怎么办?那就打电话给手机,如果运气好的话,捡到的好心人能够把手机还给你。如果手机是被偷的,那就没有办法了,即使手机开着,估计小偷也不会接电话。当...

2884
来自专栏技术总结

Python爬取电影天堂

摘取部分网友的回复: 1、之前在北京买房,谁想房价开始疯长,链家的房价等数据分析只给了一小部分,远远不能满足自己的需求。于是晚上花了几个小时的时间写了个爬虫,...

2053
来自专栏睿哥杂货铺

SDN 技术指南(四):Open vSwitch

由之前发布的文章知道 Open vSwitch(Open Source Virtual Switch) 是一款基于软件实现的开源虚拟交换机。

2996
来自专栏AI研习社

Github 项目推荐 | Twitter 开源数据分析工具 —— tinfoleak

Tinfoleak 是 OSINT (Open Source Intelligence) 和 SOCMINT (Social Media Intelligenc...

1843

扫码关注云+社区

领取腾讯云代金券