CoreGraphics

iOS开发CoreGraphics核心图形框架之一——CGPath的应用

老子叫甜甜 提交于 2020-04-14 16:55:08
【推荐阅读】微服务还能火多久?>>> iOS开发CoreGraphics核心图形框架之一——CGPath的应用 一、引言 CoreGraphics核心图形框架相较于UIKit框架更加偏于底层。在Objective-C工程中,CoreGraphics其中方法都是采用C语言风格进行编写的,同时其并不支持Objective-C的自动引用计数,在使用这个框架进行编程时,开发者要手动对内存进行管理。在Swift工程中,Apple使用Swift语言对CoreGraphics矿建进行了重构,将CGPath,CGMutablePaht等都重新定义为了类。CGPath可以理解为图形的路径,在Objective-C工程中,其实系统定义的一个内部结构体,开发者不可以直接使用,开发者CGPathRef和CGMutablePathRef别名作为CGPath的引用,实际上,CGPathRef和CGMutablePathRef都是CGPath结构体类型的指针,不同的是一个是const类型不可修改的,一个是可以修改的,系统定义如下: typedef struct CGPath *CGMutablePathRef; typedef const struct CGPath *CGPathRef; 二、CGPath创建与内存管理的相关方法 关于CGPath的创建与内存管理的相关方法,列举如下: /

iOS之CoreGraphics使用(1)

荒凉一梦 提交于 2019-12-07 11:18:08
CoreGraphics.framework 是iOS 内置的用于画图的框架,可以画自定义的几何图形,它支持图形上下文、加载图像、绘制图像,等等。 下面是我今天练习的代码: (1)代码1:绘制字符串 - (void)drawRect:(CGRect)rect { // Drawing code UIColor * magentaColor = [UIColor colorWithRed:0.5f green:0.0f blue:0.5f alpha:1.0f]; [magentaColor set]; UIFont * helveticaBold = [UIFont fontWithName:@"HelveticaNeue-Bold" size:30.0f]; NSString * myString = @"I Learn Really Fast"; [myString drawAtPoint:CGPointMake(25, 190) withFont:helveticaBold]; } (2)代码2:绘制图像 -(void)drawRect:(CGRect)rect { UIImage * image = [UIImage imageNamed:@"xcode.png"]; if(image != nil) { NSLog(@"Successfully loaded the

iOS开发CoreGraphics核心图形框架之六——梯度渐变

半腔热情 提交于 2019-12-04 06:00:13
iOS开发CoreGraphics核心图形框架之六——梯度渐变 一、引言 关于颜色梯度渐变视图的创建,CoreGraphics框架中提供了两个类型CGShadingRef与CGGradientRef。CoreGraphics框架在绘制梯度渐变时,有两种绘制方式,分别为轴向绘制与径向绘制。轴向绘制是指确定两个点,起点与终点连接的直线作为梯度渐变的轴,垂直于此轴的线共享相同的颜色,由起点向终点进行颜色渐变。径向渐变是指由两个圆连接成圆台,在同一圆周上的所有点共享相同的颜色,由起始圆向终点圆进行颜色渐变。 轴向渐变: 径向渐变: 前面说到,CGShadingRef与CGGradientRef都可以用于创建梯度渐变视图,这两个类型在使用使又有一些不同,CGShadingRef在使用使需要开发者为其提供一个颜色计算方法,CGGradientRef则不需要,相比之下,CGGradientRef更像是为了方便开发者使用而从CGShadingRef中扩展出的一个类型。 二、使用CGGradientRef创建梯度渐变视图 创建一个UIView子类,在其drawRect:方法中编写如下测试代码: -(void)drawRect:(CGRect)rect{ CGGradientRef gradientRef; CGColorSpaceRef colorSpaceRef; CGFloat locs[2]