标签:释放 graphic 使用 bsp contexts init 改变 tca iter
public func UIGraphicsBeginImageContextWithOptions( size: CGSize, opaque: Bool, _ scale: CGFloat)
size是要截图的大小,opaque是否不透明,不透明生成的图片小点,scale代表比例,1倍按照size的分辨率进行输出,n倍乘以n,如果需要输出当前设备的分辨率,使用UIScreen.main.scale来获取最合适的比例,也可以直接传0,系统会自动获取合适的scale。沃日。这么简单。。。如果是录视频的话,就得用UIScreen.main.scale
CG框架的内存需要我们手动管理,记得结束的时候释放内存,比如UIGraphicsEndImageContext();
|
|
如果是用UIKit方法获取到的context,那么坐标系原点在左上,否则用CG方法获取到的context坐标系原点在左下.调整左下坐标系到左上坐标系
|
|
画虚线方法的各参数含义
|
|
坐标系转换方法例如下面一种
|
|
有一个前提,就是两个View必须在同一个Window中.
Transform
transform形变的原点都是(0,0)如果想要以中点进行形变,需要改变这个默认原点
|
|
如果绘图的context不是UIGraphicsBeginImageContextWithOptions(rect.size, true, 0.0);那么所绘制的一切用let image = UIGraphicsGetImageFromCurrentImageContext();这个方法截图是只是一张黑色图片,相反如果绘图的context时ImageContext,那么截图可以正常显示出来,但是真实的屏幕上则只显示黑色。
为了截图不是黑色的图
|
|
UIRectFill:给自定rect填充一个矩形 UIRectFrame:给自定rect画一个边框
path.usesEvenOddFillRule. usesEvenOddFillRule顾名思义就是even-奇 odd-偶,奇偶规则
画阴影
|
|
对文字的动画
关键点在于用CoreText创建出文字的路径,CoreText提供了对应的方法,代码如下
|
|
TransparencyLayer透明图层.待研究
layerx的drawInContext方法
|
|
如果不选择UIGraphicsPushContext(ctx);
这种方法,那么需要用到C的API画图
|
|
这样就不会依赖UIGraphicsGetCurrentContext.
标签:释放 graphic 使用 bsp contexts init 改变 tca iter
原文地址:https://www.cnblogs.com/lijianming180/p/12286155.html