OS SWIFT基本画图教程

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

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

func drawRect(rect: CGRect)

其次,获取画笔的上下文

var context:CGContextRef =  UIGraphicsGetCurrentContext();//获取画笔上下文

CGContextSetAllowsAntialiasing(context, true) //抗锯齿设置

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

1 画点

//画点

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

2 画直线

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

3 画圆

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

4 画字符串

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

5 画图片

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

6 使用PATH画图 

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

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

附完整代码:

//
//  DrawingView.swift
//  study
//
//  Created by Tonway on 15/2/2.
//  Copyright (c) 2015年 Tonway. All rights reserved.
// import UIKit class DrawingView: UIView {
    
    
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func drawRect(rect: CGRect) {
        // Drawing code
        
        var context:CGContextRef =  UIGraphicsGetCurrentContext();//获取画笔上下文
        
        
        CGContextSetAllowsAntialiasing(context, true) //抗锯齿设置
        
        //画点
        //CGContextSetLineWidth(context, 50);
        CGContextFillEllipseInRect(context, CGRectMake(75, 75, 50, 50))
        
        CGContextSetLineWidth(context, 5) //设置画笔宽度
        
        //画直线
        CGContextMoveToPoint(context, 10, 20);
        CGContextAddLineToPoint(context, 100, 100);
        CGContextStrokePath(context)
        
        //画圆
        CGContextAddEllipseInRect(context, CGRectMake(50,50,100,100)); //画圆
        
        CGContextStrokePath(context) //关闭路径
        
        
        //通过画弧画圆
        //弧度=角度乘以π后再除以180
        //角度=弧度除以π再乘以180
        CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor) //设置画笔颜色
        
        CGContextAddArc(context, 100, 100, 50, 0, CGFloat(270*M_PI/180), 0) //画弧
        
        
        CGContextStrokePath(context)//关闭路径
        
        
        
        //画字符串
        var str:NSString = "我是吴统威";
        
        str.drawAtPoint(CGPointMake(100, 200), withAttributes: nil);
        
        //画图片
        
        CGContextSetShadow(context, CGSizeMake(3, 3),10)
        
        var img:UIImage = UIImage(named: "8")!;
        
        img.drawAtPoint(CGPointMake(50, 250));
        
        
        // CGContextDrawImage(context, CGRectMake(100, 250, 100, 100),img.CGImage)
        
        CGContextSetShadow(context, CGSizeMake(0, 0), 0)
        
        //使用path画图
        let p1:CGMutablePathRef = CGPathCreateMutable();
        
        CGPathMoveToPoint(p1, nil, 50, 250)
        
        CGPathAddLineToPoint(p1, nil, 50, 350)
        
        CGContextAddPath(context, p1)
        CGContextStrokePath(context)//关闭路径
        
        
        
        
        
        
    }
    
    
}

效果图

本文属于吴统威的博客原创文章,转载时请注明出处及相应链接: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. virtualbox中新版本Ubuntu安装软件增强包后重启无限登录界面的解决办法

    原来我虚拟机版本是4.2.10,装的Ubuntu3.3,因为版本过老使用出现了一些问题,于是换成14.04,安装成功,但是装增强包的时候,装完重启,无限登录界面,密码是对的. 看了网上的很多方法,什么 ...

  2. Java 网络编程(一) 网络基础知识

    链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951826.html 网络基础知识 网络编程的目的:直接或间接地通过网络协议与其他计算机 ...

  3. android sdk Manager path

  4. apache域名重定向301跳转 .htaccess的写法

    RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^baidu.com$ [NC] RewriteRule ^(.*)$ http://w ...

  5. jmeter cookie管理器 使用方法---新手学习记录1

    首先得抓包: 我已post方法为例: POST /api/datasources/lemontest/jaql HTTP/1.1 Host: 192.168.1.107:8081 Content-Le ...

  6. GDI+ 中发生一般性错误(在 OutputStream 中保存 PNG 格式图像时遇到的问题)

    在将图片以 PNG 格式保存至 Response.OutputStream 时,会碰到如下错误: GDI+ 中发生一般性错误. 原因: 在写 PNG 格式的图像时,指针需要在存储的位置来回移动.而 R ...

  7. poj 3264 Balanced Lineup(线段树、RMQ)

    题目链接: http://poj.org/problem?id=3264 思路分析: 典型的区间统计问题,要求求出某段区间中的极值,可以使用线段树求解. 在线段树结点中存储区间中的最小值与最大值:查询 ...

  8. [置顶] P2P网贷对推动社会发展的影响

    P2P网贷对推动社会发展的影响 1 真正的支持了实体经济,一般借款人就在几万或者50万以下 2 关照小微经济,新型行业.一般小微经济的创新更高,对社会的发展最大化. 3盘活存量 放到银行.保险.国债一 ...

  9. 如何在同一系统中启动多个 TOMCAT

    <Server port="8005" shutdown="SHUTDOWN"> 接受server关闭指令的port号.我们叫关闭指令port. & ...

  10. Android 中文API (66) —— BluetoothClass.Device

    前言 本章内容是android.bluetooth.BluetoothClass.Device,为Android蓝牙部分的章节翻译,版本为Android 2.3   r1,翻译来自中山大学的" ...