ExDraw 0.1.0

ExDraw 0.1.0

Daniel Wang 维护。



ExDraw 0.1.0

  • 王渊鸥

ExDraw

CoreGraphics 扩展库。添加一些功能使编程变得合适。

安装

  • 使用源代码,下载源代码将其拖入您的项目。

  • 使用 CocoaPods,在您的 Podfile 中写入一行:pod 'ExDraw'

构建器

  • 功能

创建一个 CGRect 结构

ex_rect(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) -> CGRect

创建一个 CGPoint 结构

ex_point(_ x:CGFloat, _ y:CGFloat) -> CGPoint

创建一个 CGSize 结构

ex_size(_ w:CGFloat, _ h:CGFloat) -> CGSize

获取两个点的中心点

ex_center(point1:CGPoint, point2:CGPoint) -> CGPoint

获取两个点的长度

ex_length(point1: CGPoint, point2: CGPoint) -> CGFloat

获取通过两个点连接的线的角度

ex_angle(point1: CGPoint, point2: CGPoint) -> CGFloat

  • 扩展 - CGRect

使用中心点和大小创建一个 CGRect 结构

init(center p:CGPoint, size:CGSize)

使用角点和大小创建一个 CGRect 结构

init(leftTop p:CGPoint, size:CGSize)

init(rightTop p:CGPoint, size:CGSize)

init(leftBottom p:CGPoint, size:CGSize)

init(rightBottom p:CGPoint, size:CGSize)

使用两个点创建一个 CGRect 结构

init(point1:CGPoint, point2:CGPoint)

部分

  • 扩展 - CGRect

属性部分

left:CGFloat -- 获取/设置

right:CGFloat -- 获取/设置

top:CGFloat -- 获取/设置

bottom:CGFloat -- 获取/设置

shortBorderLength:CGFloat -- 获取

longBorderLength:CGFloat -- 获取

hypotenuseLength:CGFloat -- 获取

矩形的点

center:CGPoint -- 获取/设置

leftTop:CGPoint -- 获取/设置

rightTop:CGPoint -- 获取/设置

leftBottom:CGPoint -- 获取/设置

rightBottom:CGPoint -- 获取/设置

topCenter:CGPoint -- 获取/设置

bottomCenter:CGPoint -- 获取/设置

leftCenter:CGPoint -- 获取/设置

rightCenter:CGPoint -- 获取/设置

变换

  • 扩展 - CGRect

创建一个偏移移动的矩形或移动矩形

mutating func move(offset:(CGFloat, CGFloat))

func moved(offset:(CGFloat, CGFloat)) -> CGRect

用边缘内衬裁剪矩形。将边缘内边距中的数字设置为负数可排除矩形。

mutating func clip(edge:UIEdgeInsets)

func cliped(edge:UIEdgeInsets) -> CGRect

缩放矩形或获取缩放后的矩形,有两种缩放方法,关于固定大小裁剪或比率裁剪。

mutating func scale(size:(CGFloat, CGFloat))

mutating func scale(rate:(CGFloat, CGFloat))

func scaled(size:(CGFloat, CGFloat)) -> CGRect

func scaled(rate:(CGFloat, CGFloat)) -> CGRect

获取内部或外部关系矩形。

var innerSqure : CGRect

var outterSqure : CGRect

var innerCycle : CGRect

var outterCycle : CGRect

将矩形分成两个矩形。固定或比率分割。结果中的第一项是靠近边缘的矩形,第二项是远离边缘的矩形。

func devided(from edge:CGRectEdge, fix:CGFloat) -> (CGRect, CGRect)

func devided(from edge:CGRectEdge, rate:CGFloat) -> (CGRect, CGRect)

调整矩形大小或获取调整后的矩形。

mutating func resize(fixCorner:RectCorner, size:CGSize)

func resized(fixCorner:RectCorner, size:CGSize) -> CGRect

网格

  • 扩展 - CGRect

一个结构,用于描述高度与宽度之间的关系。

HeightWidthRate

一个数字,用于标记高度分成宽度。

heightDWidth

将额外的数字加到高度乘以heightDWidth的结果上。

constant

获取高度宽度。

func widthOf(height: CGFloat) -> CGFloat

获取宽度的高度。

func heightOf(width: CGFloat) -> CGFloat

在一个矩形中构建固定网格的矩形。

func buildGrids(rowCount: Int, itemsInRow: Int, edge: UIEdgeInsets = UIEdgeInsets.zero, hSpace: CGFloat = 0, vSpace: CGFloat = 0) -> [CGRect]

在一个矩形中构建流网格的矩形。

func buildHFlowGrids(rowCount: Int, hwRate: HeightWidthRate, itemsCount: Int, edge: UIEdgeInsets = UIEdgeInsets.zero, hSpace: CGFloat = 0, vSpace: CGFloat = 0) -> [CGRect]

func buildVFlowGrids(itemsInRow: Int, hwRate: HeightWidthRate, itemsCount: Int, edge: UIEdgeInsets = UIEdgeInsets.zero, hSpace: CGFloat = 0, vSpace: CGFloat = 0) -> [CGRect]

在rect中获取流网格的矩形

func itemAtHFlowGrids(rowCount: Int, hwRate: HeightWidthRate, item: Int, edge: UIEdgeInsets = UIEdgeInsets.zero, hSpace: CGFloat = 0, vSpace: CGFloat = 0) -> CGRect

func itemAtVFlowGrids(itemsInRow: Int, hwRate: HeightWidthRate, item: Int, edge: UIEdgeInsets = UIEdgeInsets.zero, hSpace: CGFloat = 0, vSpace: CGFloat = 0) -> CGRect

方向

  • 枚举 -- ExDirection

在一个正方形中获取方向箭头。

正方形的四条边。

向Top

向Right

向Bottom

向Left

正方形的四个角落。

向TopRight

向TopLeft

向BottomRight

向BottomLeft

获取当前方向的相反方向。

opsite: ExDirection

获取由方向标记在矩形中的像素点。

func point(of rect: CGRect) -> CGPoint

渐变

  • 扩展 -- CGGradient

获取两种颜色的渐变

static func dual(_ color0: UIColor, _ color1: UIColor) -> CGGradient?

获取两种颜色以上(大于或等于两种)的渐变

static func multi(colorList: [UIColor]) -> CGGradient?

在路径中填充渐变,设置线性方向或为nil以设置为循环模式。

func fill(inPath path: UIBezierPath, direction: ExDirection = .toBottom)

获取渐变的图像对象,设置线性方向或为nil以设置为循环模式。

func image(size: CGSize, direction: ExDirection? = .toRight) -> UIImage

上下文

  • 扩展 -- CGContext

获取当前上下文

static var current: CGContext?

翻转上下文本 canvas 的原点

func flipV(height: CGFloat)

字符串

  • 扩展 -- String

计算字符串大小

func size(attribute: ExAttributes) -> CGSize

func size(font: UIFont) -> CGSize

func size(fitSize: CGSize, attribute: ExAttributes) -> CGSize

func size(fitSize: CGSize, font: UIFont, wordwarp: NSLineBreakMode, kern: CGFloat? = nil) -> CGSize

生成文本的图像

func image(canvasSize: CGSize, textFrame: CGRect, attribute: ExAttributes) -> UIImage

AttributedString

  • 类 -- ExAttributes

删除线或下划线的线宽类型

enum LineWidth: Int { case none = 0x00 case single = 0x01 case thick = 0x02 case double = 0x09 }


Type of line style of strike throgh or underline

> ```
enum LineStyle: Int {
    case solid = 0x000
    case dot = 0x0100
    case dash = 0x0200
    case dashDot = 0x0300
    case dashDotDot = 0x0400
}

字符串属性的属性

var font:UIFont?

var textColor:UIColor?

var backColor:UIColor?

var ligature:Bool?

var kern:CGFloat?

var strikethrough:(LineWidth, LineStyle, UIColor)?

var underline:(LineWidth, LineStyle, UIColor)?

var textStroke:(CGFloat, UIColor)?

var shadow:NSShadow?

var attachment:NSTextAttachment?

var baseline:CGFloat?

var expansion:CGFloat?

var link:URL?

var obliqueness:CGFloat?

var vertical:Bool?

var alignment:NSTextAlignment?

var firstLineHeadIndent:CGFloat?

var headIndent:CGFloat?

var tailIndent:CGFloat?

var lineBreakMode:NSLineBreakMode?

var maximumLineHeight:CGFloat?

var minimumLineHeight:CGFloat?

var lineSpacing:CGFloat?

var paragraphSpacing:CGFloat?

var paragraphSpacingBefore:CGFloat?

var baseWritingDirection:NSWritingDirection?

var lineHeightMultiple:CGFloat?

var defaultTabInterval:CGFloat?

默认初始化

init()

通过图像初始化

init(image: UIImage, size: CGSize?)

获取属性字典

var dict: [NSAttributedString.Key: AnyObject]

将两个属性对象合并为一个

func combine(_ attr: ExAttributes) -> ExAttributes

static func + (attr0: ExAttributes, attr1: ExAttributes) -> ExAttributes

static func += (attr0: inout ExAttributes, attr1: ExAttributes)

如果属性中有图像附件,则获取该附件

var imageString : NSAttributedString?

  • 扩展 -- NSAttributedString

字符串和属性的初始化

init(text: String, attribute: ExAttributes)

init(text: String, font: UIFont, color: UIColor, backColor: UIColor? = nil)

将两个富文本字符串合并为一个

static func + (s0: NSAttributedString, s1: NSAttributedString) -> NSAttributedString

static func += (s0:inout NSAttributedString, s1:NSAttributedString)

  • 扩展 -- UIImage

获取此图像的富文本属性字符串

func attributeString(size: CGSize? = nil) -> NSAttributedString?

  • 扩展 -- String

获取此图像的富文本属性字符串

func attributeString(_ attribute: ExAttributes) -> NSAttributedString

  • 功能

获取HTML字符串的富文本属性字符串

func ex_html(text: String) -> NSAttributedString?

获取rtf文件的富文本属性字符串

func ex_rtf(fileName: String) -> NSAttributedString?

获取rtfd文件的富文本属性字符串

func ex_rtfd(filename: String) -> NSAttributedString?

TextFrame

  • 扩展 -- CTFrame

在上下文中绘制ctframe

draw(inContext:CGContext)

通过字符串生成ctframe

static func create(byText text:NSAttributedString, point:CGPoint) -> CTFrame

  • 扩展 -- CTFramesetter

通过字符串生成ctframe setter

静态函数 create(byText text:NSAttributedString) -> CTFramesetter

建议 ctframe 设置器的框架大小

func suggestSize(_ range:NSRange, size:CGSize) -> (NSRange, CGSize)

建议 ctframe 设置器的页面

func suggestPages(_ size:CGSize) -> [(NSRange, CGSize)]

建议 ctframe 设置器的框架

func suggestFrames(_ size:CGSize) -> [CTFrame]

func suggestRangerAndFrames(_ size:CGSize) -> [(NSRange, CTFrame)]

获取 ctframe 设置器中的行框架

func lineFrame(charCount:Int, rect:CGRect) -> CTFrame

路径

  • 扩展 - CGPath

从文本生成路径

static func from(text:String) -> CGPath

将路径转换为文本

var text:String

作者

WangYuanou

2018-07-27