OS SWIFT基本画图教程

其实这是以前做过的一个例子,方便自己参考的代码!希望对大家也有点参考.

首先,建立一个Swift类,继承UIView这个类,然后重写

  1. func drawRect(rect: CGRect)

其次,获取画笔的上下文

  1. var context:CGContextRef =  UIGraphicsGetCurrentContext();//获取画笔上下文
  2.  
  3. CGContextSetAllowsAntialiasing(context, true) //抗锯齿设置

下面我们就可以编写画图形的代码了

1 画点

//画点

  1. CGContextFillEllipseInRect(context, CGRectMake(75, 75, 50, 50))

2 画直线

  1. //画直线
  2. CGContextSetLineWidth(context, 5) //设置画笔宽度
  3. CGContextMoveToPoint(context, 10, 20);        
  4. CGContextAddLineToPoint(context, 100, 100);        
  5. CGContextStrokePath(context)

3 画圆

  1.  //画圆
  2. CGContextAddEllipseInRect(context, CGRectMake(50,50,100,100)); //画圆
  3. CGContextStrokePath(context) //关闭路径
  4.         
  5. //通过画弧画圆
  6. //弧度=角度乘以π后再除以180
  7. //角度=弧度除以π再乘以180
  8. CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor) //设置画笔颜色
  9. CGContextAddArc(context, 100, 100, 50, 0, CGFloat(270*M_PI/180), 0) //画弧
  10. CGContextStrokePath(context)//关闭路径

4 画字符串

  1. //画字符串
  2. var str:NSString = "我是吴统威";
  3. str.drawAtPoint(CGPointMake(100, 200), withAttributes: nil);

5 画图片

  1.  //画图片
  2. CGContextSetShadow(context, CGSizeMake(3, 3),10)
  3. var img:UIImage = UIImage(named: "8")!;
  4. img.drawAtPoint(CGPointMake(50, 250));
  5. CGContextSetShadow(context, CGSizeMake(0, 0), 0)

6 使用PATH画图 

  1. //使用path画图
  2.  let p1:CGMutablePathRef = CGPathCreateMutable();
  3.  CGPathMoveToPoint(p1, nil, 50, 250)
  4.  CGPathAddLineToPoint(p1, nil, 50, 350)
  5.  CGContextAddPath(context, p1)
  6.  CGContextStrokePath(context)//关闭路径

这里主要是介绍基本的用法,其他复杂的图形,可以参照API文档,去调用相关的方法,画出自己想要的图形

附完整代码:

  1. //
  2. //  DrawingView.swift
  3. //  study
  4. //
  5. //  Created by Tonway on 15/2/2.
  6. //  Copyright (c) 2015年 Tonway. All rights reserved.
  7. //
  8.  
  9. import UIKit
  10.  
  11. class DrawingView: UIView {
  12.     
  13.     
  14.     // Only override drawRect: if you perform custom drawing.
  15.     // An empty implementation adversely affects performance during animation.
  16.     override func drawRect(rect: CGRect) {
  17.         // Drawing code
  18.         
  19.         var context:CGContextRef =  UIGraphicsGetCurrentContext();//获取画笔上下文
  20.         
  21.         
  22.         CGContextSetAllowsAntialiasing(context, true) //抗锯齿设置
  23.         
  24.         //画点
  25.         //CGContextSetLineWidth(context, 50);
  26.         CGContextFillEllipseInRect(context, CGRectMake(75, 75, 50, 50))
  27.         
  28.         CGContextSetLineWidth(context, 5) //设置画笔宽度
  29.         
  30.         //画直线
  31.         CGContextMoveToPoint(context, 10, 20);
  32.         CGContextAddLineToPoint(context, 100, 100);
  33.         CGContextStrokePath(context)
  34.         
  35.         //画圆
  36.         CGContextAddEllipseInRect(context, CGRectMake(50,50,100,100)); //画圆
  37.         
  38.         CGContextStrokePath(context) //关闭路径
  39.         
  40.         
  41.         //通过画弧画圆
  42.         //弧度=角度乘以π后再除以180
  43.         //角度=弧度除以π再乘以180
  44.         CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor) //设置画笔颜色
  45.         
  46.         CGContextAddArc(context, 100, 100, 50, 0, CGFloat(270*M_PI/180), 0) //画弧
  47.         
  48.         
  49.         CGContextStrokePath(context)//关闭路径
  50.         
  51.         
  52.         
  53.         //画字符串
  54.         var str:NSString = "我是吴统威";
  55.         
  56.         str.drawAtPoint(CGPointMake(100, 200), withAttributes: nil);
  57.         
  58.         //画图片
  59.         
  60.         CGContextSetShadow(context, CGSizeMake(3, 3),10)
  61.         
  62.         var img:UIImage = UIImage(named: "8")!;
  63.         
  64.         img.drawAtPoint(CGPointMake(50, 250));
  65.         
  66.         
  67.         // CGContextDrawImage(context, CGRectMake(100, 250, 100, 100),img.CGImage)
  68.         
  69.         CGContextSetShadow(context, CGSizeMake(0, 0), 0)
  70.         
  71.         //使用path画图
  72.         let p1:CGMutablePathRef = CGPathCreateMutable();
  73.         
  74.         CGPathMoveToPoint(p1, nil, 50, 250)
  75.         
  76.         CGPathAddLineToPoint(p1, nil, 50, 350)
  77.         
  78.         CGContextAddPath(context, p1)
  79.         CGContextStrokePath(context)//关闭路径
  80.         
  81.         
  82.         
  83.         
  84.         
  85.         
  86.     }
  87.     
  88.     
  89. }

效果图

本文属于吴统威的博客原创文章,转载时请注明出处及相应链接:http://www.wutongwei.com/front/infor_showone.tweb?id=85

IOS SWIFT基本画图教程的更多相关文章

  1. Apple Swift编程语言入门教程

    Apple Swift编程语言入门教程 作者: 日期: 布衣君子 2015.09.22 目录 1   简介 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 ...

  2. ios Swift 之github

    1. 软件类 a) 作者集合 http://nondot.org/sabre/ b) swift for facebook SWIFT是一个易于使用的,基于注解的Java来创建勤俭节约序列化类型和服务 ...

  3. ios Swift 资源池

    Swift入门教程: http://www.cocoachina.com/applenews/devnews/2014/0604/8661.html Swift视频教程: http://www.coc ...

  4. 苹果Swift编程语言新手教程【中国版】

    Swift代码语言教程:在刚刚过去的WWDC2014大会上,苹果公司新公布了一种编程语言Swift.据悉.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.对于广 ...

  5. iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图

    iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图 使用ios9中的开关.滑块控件 开关和滑块也是用于和用户进行交互的控件.本节将主要讲解这两种控件. ios9开关 开关控件常用来控制某个功能的 ...

  6. iOS 9应用开发教程之多行读写文本ios9文本视图

    iOS 9应用开发教程之多行读写文本ios9文本视图 多行读写文本——ios9文本视图 文本视图也是输入控件,与文本框不同的是,文本视图可以让用户输入多行,如图2.23所示.在此图中字符串“说点什么吧 ...

  7. iOS 9应用开发教程之显示编辑文本标签文本框

    iOS 9应用开发教程之显示编辑文本标签文本框 ios9显示.编辑文本 在iOS,经常会看到一些文本的显示.文字就是这些不会说话的设备的嘴巴.通过这些文字,可以很清楚的指定这些设备要表达的信息.本节将 ...

  8. iOS 9应用开发教程之使用代码添加按钮美化按钮

    iOS 9应用开发教程之使用代码添加按钮美化按钮 丰富的用户界面 在iOS9中提供了很多的控件以及视图来丰富用户界面,对于这些视图以及控件我们在上一章中做了简单的介绍.本章我们将详细讲解这些视图. i ...

  9. iOS 9应用开发教程之编辑界面与编写代码

    iOS 9应用开发教程之编辑界面与编写代码 编辑界面 在1.2.2小节中提到过编辑界面(Interface builder),编辑界面是用来设计用户界面的,单击打开Main.storyboard文件就 ...

随机推荐

  1. 面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况

    题目:10. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输 ...

  2. BZOJ 4305: 数列的GCD( 数论 )

    对于d, 记{ai}中是d的倍数的数的个数为c, 那么有: 直接计算即可,复杂度O(NlogN+MlogM) --------------------------------------------- ...

  3. 使用iscroll4可能会遇到的问题(转:记录)

    1.在iscroll4的滚动容器范围内,点击input框.select等表单元素时没有响应这个问题原因在于iscroll需要一直监听用户的touch操作,以便灵敏的做出对应效果,所以它把其余的默认事件 ...

  4. fiddler---使用方法1--抓取手机app包

    1.首先fiddler设置

  5. VC++ win32 多线程 一边画圆一边画矩形

    // WinThreadTest.cpp : Defines the entry point for the application. // #include "stdafx.h" ...

  6. VC获取精确时间的做法

    声明:本文章是我整合网上的资料而成的,其中的大部分文字不是我所为的,我所起的作用只是归纳整理并添加我的一些看法.非常感谢引用到的文字的作者的辛勤劳动,所参考的文献在文章最后我已一一列出. 对关注性能的 ...

  7. 算法导论 6-2 d叉堆

    问题: d叉堆性质与二叉堆相似,但其每个非叶子结点有d个孩子: 1) 如何在一个数组中表示一个d叉堆? 2) 包含n个元素的d叉堆的高度是多少? 3) 给出 EXTRACT-MAX在d叉堆的有效实现, ...

  8. CocoaPods对于不同Target引入不同的第三方库Podfile的写法

    有的时候我们需要建立多个Target来完成不同的测试环境的区分,而多个Target之间可能会有第三方库的不同引用,如果我们在使用CocoaPods管理我们的第三方库的时候,我们就需要思考我们需要如何实 ...

  9. Raspberry 3安装docker

    SD卡制作 准备一张4GB或者以上的micro sd卡,下载系统镜像,例如raspbian-jessie-lite.img,并使用刷机工具,如Pi filler将其写入sd卡,当然也可以使用命令行的d ...

  10. python之列表生成式

    列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 1,比如:要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, ...