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