这篇教程主要内容展示如何利用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

在UITouch事件中画圆圈-iOS8 Swift基础教程的更多相关文章

  1. iOS8使用Core Graphics实现渐变效果-Swift基础教程

    Core Graphics是一个强大的底层API,在这篇教程中我们主要使用Core Graphics来实现渐变效果,为了简单起见,我们采用线性渐变.线性渐变是从起点到终点颜色进行顺序渐变.教程在iOS ...

  2. swift基础教程笔记

    http://www.imooc.com/learn/127 <玩儿转swift> 慕课网教程笔记,自己根据2.1的语法做了更新. I. 1.通过playground来学习.熟悉swift ...

  3. Swift基础--通知,代理和block的使用抉择以及Swift中的代理

    什么时候用通知,什么时候用代理,什么时候用block 通知 : 两者关系层次太深,八竿子打不着的那种最适合用通知.因为层级结构深了,用代理要一层一层往下传递,代码结构就复杂了 代理 : 父子关系,监听 ...

  4. python中画散点图

    python中画散点图 示例代码: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d impor ...

  5. 在Application_Error事件中获取当前的Action和Control

    ASP.NET MVC程序处理异常时,方法有很多,网上也有列举了6种,下面是使用全局处理在Global.asax文件的Application_Error事件中实现.既然是ASP.NET MVC,我需要 ...

  6. 用字体在网页中画Icon图标

    第一步,下载.IcoMoon网站选择字体图标并下载,解压后将fonts文件夹放在工程目录下.fonts文件夹内有四种格式的字体文件: 注:由于浏览器对每种字体的支持程度不一致,要想在所有浏览器中都显示 ...

  7. touch事件中的touches、targetTouches和changedTouches详解

    touches: 当前屏幕上所有触摸点的列表; targetTouches: 当前对象上所有触摸点的列表; changedTouches: 涉及当前(引发)事件的触摸点的列表 通过一个例子来区分一下触 ...

  8. 字体在网页中画ICON图标

    用字体在网页中画ICON图标有三种小技巧: 1.用CSS Sprite在网页中画小图标 实现方法: 首先将小图片整合到一张大的图片上 然后根据具体图标在大图上的位置,给背景定位.background- ...

  9. 功能源代码(扇形进度)及Delegate运用在开放事件中、UINavigationController的封装

    1:扇形进度视图及运用 首先先创建扇形的视图,传入进度值 #import <UIKit/UIKit.h> @interface LHProgressView : UIView @prope ...

随机推荐

  1. 关于MVC EntityType has no key defined的问题

    关于MVC EntityType has no key defined的问题 在测试MVC时发现一个奇怪的问题,在Model中定义数据类时,如 public class UserInfo { publ ...

  2. UltraISO做U盘启动盘教程

    用UltraISO做U盘启动盘教程 注意:制作前请先备份u盘内重要文件 vista.win7系统需要以管理员身份运行UltraISO,其他系统直接运行即可 1.打开UltraISO选择iso镜像文件 ...

  3. UVA1471( LIS变形)

    这是LIS的变形,题意是求一个序列中去掉某个连续的序列后,能得到的最长连续递增序列的长度. 用DP的解法是:吧这个序列用数组a来记录,再分别用两个数组f记录以i结尾的最长连续递增序列的长度,g[i]记 ...

  4. pthread_wrap.h

    #ifndef _PTHREAD_WRAP_H#define _PTHREAD_WRAP_H#include <pthread.h> class hm_pthread_mutex{publ ...

  5. js正则语法

    整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$".只能输入n位的数字:"^\d{n}$".只能输入至少n位的数 ...

  6. codility上的练习(5)

    codility出了lesson 5了. (1) 合法括号序列,包括( [ { ) ] }这6种字符的字符串,长度N在[0..200000]范围内,为其是否合法. 要求时间复杂度O(N),空间复杂度O ...

  7. 加密PHP文件的方式,目测这样可以写个DLL来加密了

    <?php function encode_file_contents($filename) { $type=strtolower(substr(strrchr($filename,'.'),1 ...

  8. Oracle的大数据类型,BIG DATA TYPE

    1.CLOB 字符LOB类型,主要用于存储大型英文字符 2.NCLOB 国际语言字符LOB类型,主要用于存储大型非英文字符 3.BLOB 二进制LOB类型,主要用于存储二进制数据 4.BFILE 二进 ...

  9. (IOS)悬浮按钮Demo

    思路:传入一个底层的view,将悬浮按钮(用view实现)和展开的子按钮列表add在其上,子按钮列表开始将坐标和悬浮按钮对应好后先将其隐藏,悬浮按钮识别到tap手势后触发展示子按钮列表的方法.通过在t ...

  10. dubbo服务者配置说明

    <?xml version="1.0" encoding="UTF-8"?> <!-- - Copyright 1999-2011 Aliba ...