6.1 Quartz 2D->1.1 Quartz 2D

作者: 蓝田_Loto | 来源:发表于2016-04-22 19:58 被阅读119次

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正。


    本文相关目录:
    6.1 Quartz 2D->1.1 Quartz 2D 简介
    1.0 UIWindow ->1.0 NSWindow - 窗口
    1.0 UIWindow ->2.0 UIWindow简介和创建过程

    Quartz2D须知:

    (1)Quartz 2D是苹果官方的二维绘图引擎,同时支持iOS和Mac OS X系统(跨平台,纯 C 语言的)

    (2)Quartz2D的API是纯C语言的

    (3)Quartz2D的API来自于Core Graphics框架

    (4)数据类型和函数基本都以CG作为前缀

    • CGContextRef:图形上下文(相当于一个草稿纸)
    • CGPathRef:图形路径
    • CGContextStrokePath(cox):渲染

    Quartz 2D能完成的工作:

    (1) 绘制图形 : 线条/三角形/矩形/圆/弧等
    
    (2) 绘制文字:涂鸦/画板
    
    (3) 绘制图片/生成图片(图像)
    
    (4) 读取PDF/生成PDF
    
    (5) 截图/裁剪图片
    
    (6) 手势解锁
    
    (7) 报表:折线图/饼状图/柱状图 (查看 gif 动画图片)
    
    (8) 自定义UI控件(或者叫: 自定义 view)
    
    通过 Quartz2D绘制自己的控件 , 通过继承自 UIView,重写 drawRect:方法实现在控件上绘制各种内容
    
    举例:
    通过继承自 UIView 实现自定义的 UIImageView
    实现自定义的“下载进度条”控件
    幸运转盘控件
    ……
    

    注意:

    • Cocos2D(Cocos2D-x、Cocos2D-iPhone、Cocos2D-HTML5等), 是一个第三方开源的2D游戏框架
    • 做2D 游戏的 还有 Sprite Kit。 一般3D 游戏用 unity3D。

    Quartz2D api常用拼接路径函数

    //新建一个起点
    void CGContextMoveToPoint(CGContextRef c, CGFloat x, CGFloat y);
    
    //添加新的线段到某个点
    void CGContextAddLineToPoint(CGContextRef c, CGFloat x, CGFloat y);
    
    //添加一个矩形
    void CGContextAddRect(CGContextRef c, CGRect rect);
    
    //添加一个椭圆
    void CGContextAddEllipseInRect(CGContextRef context, CGRect rect);
    
    //添加一个圆弧
    void CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, CGFloat radius,
                         CGFloat startAngle, CGFloat endAngle, int clockwise);
    

    Quartz2D在iOS开发中的价值

    为了便于搭建美观的UI界面,iOS提供了UIKit框架,里面有各种各样的UI控件

    UILabel:显示文字
    UIImageView:显示图片
    UIButton:同时显示图片和文字(能点击)
    … …
    

    利用UIKit框架提供的控件,拼拼凑凑,能搭建和现实一些简单、常见的UI界面

    但是,有些UI界面极其复杂、而且比较个性化,用普通的UI控件无法实现,这时可以利用Quartz2D技术将控件内部的结构画出来,自定义控件的样子

    其实,iOS中大部分控件的内容都是通过Quartz2D画出来的

    因此,Quartz2D在iOS开发中很重要的一个价值是:自定义view(自定义UI控件)




    作者:蓝田(Loto)
    出处: 简书

    如果你觉得本篇文章对你有所帮助,请点击文章末尾下方“喜欢”
    如有疑问,请通过以下方式交流:
    评论区回复微信(加好友请注明“简书+称呼”)发送邮件shorfng@126.com



    本文版权归作者和本网站共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

    相关文章

      网友评论

        本文标题:6.1 Quartz 2D->1.1 Quartz 2D

        本文链接:https://www.haomeiwen.com/subject/vwexrttx.html