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

SketchMac 系统才有的软件,可以理解为精简版的 PS ,比 PS 更适合 UI 设计,Sketch 插件开发的语言是类 Javascript ,而 Sketchup 是一款三维建模软件,一般用于建筑设计、景观设计还有游戏场景设计等,插件开发是用的 ruby 语言。完成 Sketch 的插件开发指南这个系列,我也会开始写 Sketchup 插件开发指南。

本期介绍 artboard 、NSFileManagerNSString 关于文件及文件夹的相关操作。

1

新建 artboard

新建一个 artboard ,并设置其位置,宽、高。记得最后需要添加到 page 里。

var doc = context.document;
var page=doc.currentPage();
var newArtboard=[MSArtboardGroup new];

log(newArtboard)

newArtboard.name='new';

var artboardFrame = [newArtboard frame];

  artboardFrame.setX(0);
  artboardFrame.setY(0);
  artboardFrame.setWidth(100);
  artboardFrame.setHeight(100);

page.addLayers([newArtboard])

2

文件及文件夹相关的操作

此部分涉及到 IOS 原生开发的 NSFileManagerNSString ,主要用到 NSString stringWithContentsOfFile 方法,而 NSFileManager iOS 中的文件管理类,关于详细的 NSFileManager 建议查看 IOS 官方开发文档。

Objective-C Cocoascript 写法的差异在上一篇已经说明过。下面的 js 也可以改写成 OC 的形式。

2.1 创建一个目录

var path='/Users/zhank/Downloads/draw';

NSFileManager.defaultManager().createDirectoryAtPath_withIntermediateDirectories_attributes_error(path, !0, {}, null);

2.2 读取文件的内容

var path='/Users/zhank/Downloads/undraw_create_f05x.svg';

var data=NSString.stringWithContentsOfFile_encoding_error(path, NSUTF8StringEncoding, nil);

log(data)

2.3 新建文件,并写入内容

var str='abc',
    path='/Users/zhank/Downloads/draw/test.txt'; 
    
NSString.stringWithString(str).writeToFile_atomically_encoding_error(path, !0, NSUTF8StringEncoding, nil);

2.4 文件改名及移动位置

var from='/Users/zhank/Downloads/draw/test.txt',
    to='/Users/zhank/Downloads/draw/test2.txt';

var isExist=NSFileManager.defaultManager().fileExistsAtPath(from);

if(isExist){
    NSFileManager.defaultManager().moveItemAtPath_toPath_error(from, to, null);
}else{
    NSApp.displayDialog(@"文件不存在");
}

2.5 删除文件或文件夹

var path='/Users/zhank/Downloads/draw/test2.txt';

NSFileManager.defaultManager().removeItemAtPath_error(path, null);

关于文件及文件夹的相关操作,这个要注意下删除的文件或文件夹 mac 的废纸篓里是不存在的哦,千万别误删!从这个角度看,网上随意装的 sketch 插件并不一定安全,有可能代码里就会有删除文件夹的命令,或者窃取文件的命令。

sketch 插件的权限还是很高的哦~用代码删除文件啥的并没有什么提示。

3

动手实验

现在你可以试着开发一个小功能啦,比如:

读取一个保存了各种设计图尺寸的 json 文件,并生成多个尺寸的 artboard 。效果如下图:

这个实验留给你自己来动手,相关的代码已经在上文讲述过啦。

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏祝威廉

Spark Streaming 数据产生与导入相关的内存分析

我这篇文章会分几个点来描述Spark Streaming 的Receiver在内存方面的表现。

1023
来自专栏我是攻城师

Spark历险记之编译和远程任务提交

4479
来自专栏企鹅号快讯

大数据入门基础系列之浅谈Hive和HBase的区别

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 在前面的博文里,我已经介绍了 Hive和HBase分别是什么? Apache Hive是一个构建...

2296
来自专栏美图数据技术团队

Spark Streaming VS Flink

本文从编程模型、任务调度、时间机制、Kafka 动态分区的感知、容错及处理语义、背压等几个方面对比 Spark Stream 与 Flink,希望对有实时处理...

1481
来自专栏分布式系统和大数据处理

安装和配置Spark(单节点)

Apache Spark被称为第三代大数据处理平台,也当前应用最广泛的大数据处理方案,这篇文章将介绍如何在Linux系统(Cent OS7)上以单机模式(Sta...

6825
来自专栏LuckQI

惊心动魄的Hadoop-6小时350T数据恢复

1324
来自专栏一名叫大蕉的程序员

Spark你一定学得会(三)No.10

大家好我是小蕉。 今天跟大家分享一下Spark的运行机制以及运行模式。 从运行机制来看,长下面这样子。 ? Spark任务由Driver提交Applicatio...

1859
来自专栏Hadoop实操

如何给Hadoop集群划分角色

Fayson在之前的文章中介绍过《CDH网络要求(Lenovo参考架构)》,《如何为Hadoop集群选择正确的硬件》和《CDH安装前置准备》,而我们在搭建Had...

5427
来自专栏蒋专的专栏

Spark 以及 spark streaming 核心原理及实践

作者在接触spark以及spark streaming之后,对spark技术的使用的经验积累以及心得体会,在此分享给大家。本文依次从spark生态,原理,基本概...

2.4K4
来自专栏Spark学习技巧

Spark Structured Streaming的高效处理-RunOnceTrigger

传统意义上,当人们想到流处理时,诸如”实时”,”24*7”或者”always on”之类的词语就会浮现在脑海中。生产中可能会遇到这种情况,数据仅仅会在固定间隔到...

3098

扫码关注云+社区

领取腾讯云代金券