分享

设计师编程指南之Sketch插件开发 8 之Cocoa基础知识

 Mixlab交叉学科 2020-11-07

往期文章索引:

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

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

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

4 / NSPasteboard 、text 的操作

5/ Shape 的一些操作,主要介绍 line 及 rect

6/ Shape的curve操作

7/ GUI

Cocoa 提供了自己的数据结构来操作基本的几何信息,如点和矩形。包括如下:

NSPoint、NSSize、NSRect

01

NSPoint 点数据类型由一个 和 值组成。例如,用点来定义直线,指定矩形的起点,指定弧的角度等等。

2 种方法可以定义 NSPoint

var p1=NSMakePoint(1,2); log(p1)
var p2=NSPointFromString('{20,30}');
log(p2)

打印出来看下

CGPoint {    x = 1,    y = 2
}
CGPoint {
   x = 20,
   y = 30
}

NSPoint 其实就是 CGPoint

02

NSSize 大小数据类型由 width 和 height 组成。例如,指定矩形或椭圆的宽度和高度。

log(NSMakeSize(200,100))
log(NSSizeFromString('{100,2}'))

打印出来是:

CGSize {    width = 200,    height = 100
} CGSize {    width = 100,    height = 2
}

03

NSRect 矩形数据类型是由原点和大小组成的复合结构。该 size 字段指定相对于原点的矩形高度和宽度。

var rect=NSMakeRect(0,0,12,12); log(rect)

var rect2=NSRectFromString('{20,10,330,90}'); log(rect2)

结果:

CGRect {    origin = CGPoint {        x = 0,        y = 0    },    size = CGSize {        width = 12,        height = 12    } } CGRect {    origin = CGPoint {        x = 20,        y = 10    },    size = CGSize {        width = 330,        height = 90    } }

NSRect 有几个方法蛮有用的:

NSContainsRect 判断一个 NSRect 是否包含另一个 NSRect

var rect=NSMakeRect(30,30,12,12);

var rect2=NSRectFromString('{20,10,330,90}'); log(NSContainsRect(rect2,rect))

NSIntegralRect 取整 NSRect

var rect=NSMakeRect(30,30.2,12.12,12.89); log(NSIntegralRect(rect))

NSIntersectionRect 求 个 NSRect 的交集

var rect=NSMakeRect(10,30,103,25); log(rect)

var rect2=NSRectFromString('{20,10,330,90}'); log(rect2) log(NSIntersectionRect(rect2,rect))

如下图所示:

NSOffsetRect 偏移 NSRect ,有兴趣自己做下实验。

    04

路径

NSBezierPath

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多