这篇教程主要内容展示如何利用Core Graphics Framework画圆圈,当用户点击屏幕时随机生成不同大小的圆,这篇教程在Xcode6和iOS8下编译通过。

打开Xcode,新建项目选择Single View Application,Product Name填写iOS8SwiftDrawingCirclesTutorial,Organization Name和Organization Identifier根据自己填写,选择Swift语言与iPhone设备。

File->New File->iOS->Source -> CocoTouch Class.选择swift 语言,创建继承于UIViewCirleView类,如下图

CircleView中增加如下init 方法:

override init(frame: CGRect) {super.init(frame: frame) self.backgroundColor = UIColor.clearColor() } required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } 

将cirecle view的背景颜色清除掉,这样多个圆圈可以相互重叠在一起,下面实现drawRect方法:

override func drawRect(rect: CGRect) {   // Get the Graphics Context var context = UIGraphicsGetCurrentContext(); // Set the circle outerline-width CGContextSetLineWidth(context, 5.0); // Set the circle outerline-colour UIColor.redColor().set() // Create Circle CGContextAddArc(context, (frame.size.width)/2, frame.size.height/2, (frame.size.width - 10)/2, 0.0, CGFloat(M_PI * 2.0), 1) // Draw CGContextStrokePath(context); } 

drawRect方法中,我们将圆圈的边框线设置为5并居中显示,最后调用CGContextStrokePath画出圆圈.现在我们打开ViewController.swift文件,在viewDidLoad方法中将背景颜色设置为ligthgray.

override func viewDidLoad() {super.viewDidLoad()self.view.backgroundColor = UIColor.lightGrayColor() } 

现在当用户点击屏幕时我们需要创建一个cirecle view,接下来在ViewController.swift中重载touchesBegan:withEvent方法中实现

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { // loop through the touches for touch in touches { // Set the Center of the Circle // 1 var circleCenter = touch.locationInView(view) // Set a random Circle Radius // 2 var circleWidth = CGFloat(25 + (arc4random() % 50)) var circleHeight = circleWidth // Create a new CircleView // 3 var circleView = CircleView(frame: CGRectMake(circleCenter.x, circleCenter.y, circleWidth, circleHeight)) view.addSubview(circleView) } } 
  • 1.circle圆圈设置在用户的点击位置
  • 2.circle高度与宽度随机产生,数值在25-75之间
  • 3.创建circleView并添加至main view中

编译运行项目后,点击屏幕可以看到类似如下效果:

原文:http://www.ioscreator.com/tutorials/drawing-circles-uitouch-ios8-swift

转载于:https://www.cnblogs.com/Free-Thinker/p/4946904.html

在UITouch事件中画圆圈-iOS8 Swift基础教程相关推荐

  1. python中的正则表达式语法_Python基础教程之正则表达式基本语法以及re模块

    什么是正则: 正则表达式是可以匹配文本片段的模式. 正则表达式'Python'可以匹配'python' 正则是个很牛逼的东西,python中当然也不会缺少. 所以今天的Python就跟大家一起讨论一下 ...

  2. 在python中使用sort_Python中的sort()方法使用基础教程

    一.基本形式 sorted(iterable[, cmp[, key[, reverse]]]) iterable.sort(cmp[, key[, reverse]]) 参数解释: (1)itera ...

  3. matlab中画圆圈,如何在Matlab中绘制圆圈?

    不要笑,但最简单的是使用 rectangle功能,确实;) %// radius r = 2; %// center c = [3 3]; pos = [c-r 2*r 2*r]; rectangle ...

  4. html 甘特图_甘特图怎么画?甘特图基础教程,小白快速入门简单易懂

    甘特图是什么?可能你是第一次听到,甘特图是通过活动顺序和时间间隔表示某一特定项目其顺序与时间的关系.不同于时间表,或日程规划表,甘特图可以使使用者更直观的知道在某一时间的工作内容和进度. 甘特图常见用 ...

  5. groovy怎样从sql语句中截取表名_SQL基础教程学习笔记

    点击上方SQL数据库开发,关注获取SQL视频教程 SQL专栏 SQL数据库基础知识汇总 SQL数据库高级知识汇总 1.数据库和SQL RDBMS:关系数据库管理系统 比较代表性的有:Oracle(甲骨 ...

  6. python绘制三维地形_【学习笔记】Python科学计算三维可视化(黄天羽、嵩天)(学习中。。)|python基础教程|python入门|python教程...

    0 导学 目的:掌握利用三维效果表达科学和工程数据的能力 传播一种思想:可视化技术是数据之眼 内容组织: 流体数据的标量可视化.矢量可视化实例 三维扫描数据(模型/地形)可视化实例 三维地球场景可视化 ...

  7. c语言中整型常量ox,C语言基础教程:数字常量

    C语言中,数字常量包括整型常量和浮点型常量,浮点型常量又称实数. 1.整型常量 C语言中整型常量有三种不同的表示形式:十进制.八进制和十六进制. (1)十进制.这是一种常用的表示形式,它将直接给出数字 ...

  8. java中使用tika_【Tika基础教程之中的一个】Tika基础教程

    一.高速入门 1.Tika是一个用于文本解释的框架.其本身并不提供不论什么的库用于解释文本,而是调用各种各样的库,如POI,PDFBox等. 使用Tika.能够提取文件里的作者.标题.创建时间.正文等 ...

  9. python中的real函数_RealPython基础教程:Python 基本数据类型介绍

    数据是业务的核心,任何编程语言都要支持各种数据类型.我们一起来学习一下 Python 支持的数据类型. Python 内置了 numeric.string 和 Boolean 等基本数据类型,同时也提 ...

最新文章

  1. 二分法典例:木棒切割问题
  2. 状压DP Hiho-1044 状态压缩
  3. pg多行合并为逗号分隔一行_postgresql 将逗号分隔的字符串转为多行的实例_PostgreSQL_数据库...
  4. 基于相似学习的目标跟踪方法
  5. Fat Jar Eclipse Plug-In Tutorial
  6. 找出性能消耗是第一步,如何解决问题才是关键
  7. android 回退函数,android浏览器研究-回退和前进
  8. Spring连接数据库的几种常用的方式
  9. 头发mod_《巫师3》:新MOD为三个大妹子,4K超清贴图看过来
  10. Coaching 企业教练
  11. Yarn install报错 【错误: 找不到或无法加载主类 install】
  12. 数字图像处理-美图秀秀:大眼算法
  13. [转]数据恢复 文件恢复工具 DiskGenius v4.9.1 绿色专业版及单文件
  14. jade linux 安装教程,ROS-Jade版在UbuntuKylin15.04上的安装
  15. java中榨汁机的代码_《榨汁机食谱大全》(不断更新中)
  16. 企业erp系统对企业预算和采购环节的作用
  17. 大型网站技术架构核心原理与案例分析(李智慧)学习笔记2--大型网站架构五大核心要素
  18. 小象学院 nlp 自然语言处理项目实战
  19. android设置输入数字英文,android 安卓editext默认弹出英文输入法,只能输入英文与数字(示例代码)...
  20. oracle语句查询时间范围

热门文章

  1. 将gcc/g++链接到指定版本
  2. 【C++grammar】断言与表达式常量
  3. scala 函数调用_在Scala中按名称调用函数
  4. Eclipse和Tomcat绑定并且将上传资源到Tomcat上
  5. 怎样看虚拟主机的服务器,虚拟主机怎么查看服务器类型
  6. php调用shell脚本安全,从PHP调用的shell脚本问题
  7. IIC通信---EEPROM24C02---STMF4
  8. 焊接空间臂_焊接烟尘净化器设备哪种好
  9. 466. 统计重复个数 golang[转]
  10. c++中STL实现演讲比赛流程