[Swift4.2互动教程]七、常见概念 - (2)点CGPoint和变形CGAffineTransform的使用

本文将为你演示点对象CGPoint的使用,其中CG表示来自CoreGraphic(核心图形)这个跨平台框架

首先导入需要使用的两个框架
第一个框架表示界面工具框架
第二个框架表示核心绘图和动画框架

1 import UIKit
2 import QuartzCore

定义一个点对象,并设置它的位置为原点。从右侧的结果可以看出,原点的x和y值都是0

let zeroPoint = CGPoint.zero

初始化另一个点对象

var point = CGPoint()

接着查看点对象的坐标值,从右侧的结果可以看出,它的x和y值也都是0

1 point.x
2 point.y

从输出的点对象的字符描述可以看出,点对象由大括号包括,并由x和y两个值组合而成

1 point.debugDescription
2 //"(0.0,0.0)"

判断两个点对象的坐标值是否相同

point.equalTo(CGPoint(x: 0,y: 0))

初始化另一个点对象,并设置它的坐标值

var secondPoint = CGPoint(x:10,y:10)

通过仿射变换,可以对点对象进行变形。
仿射变换定义在二维空间上,可以完成平移、旋转、缩放等效果。
在此初始化一个仿射变换对象,其值为原始值

let transform: CGAffineTransform = CGAffineTransform.identity

将仿射变换对象在水平和垂直方向上,各平移10点的距离

let moveTransform = transform.translatedBy(x:10,y:10)

然后给点对象应用平移后的仿射变换。
从右侧的输出结果可以看出,点的坐标变为(20,20)

let thirdPoint = secondPoint.applying(moveTransform)

接着对仿射变换对象进行旋转90度,旋转的角度为弧度方式

let rotateTransform = moveTransform.rotated(by: 90 * 3.1415/100.0)

给点对象应用旋转后的仿射变换,从右侧的输出结果可以看出旋转后的点对象的坐标

let fouthPoint = thirdPoint.applying(rotateTransform)

点对象和字符串可以相互转换。
通过系统提供的函数,可以很方便的将格式化后的字符串,转换为点对象

let pointFromString = CGPointFromString("{100,100}")

原文地址:https://www.cnblogs.com/strengthen/p/9753699.html

时间: 2024-11-08 14:30:11

[Swift4.2互动教程]七、常见概念 - (2)点CGPoint和变形CGAffineTransform的使用的相关文章

[Swift4.2互动教程]七、常见概念 - (3)尺寸CGSize的使用详解

本文将为你演示CGSize的使用 首先导入需要使用到的两个框架 1 import UIKit 2 import QuartzCore 定义一个尺寸对象,尺寸对象包含宽度和和高度两个参数.从右侧的结果可以看出,此时该尺寸对象的宽度和高度都是0 let zeroSize = CGSize.zero 初始化另一个尺寸对象,并设置它的宽度为20,高度为10 let size = CGSize(width: 20, height: 10) 查看该尺寸对象的高度和宽度的数值 1 size.width 2 s

[Swift4.2互动教程]七、常见概念-(6)日期Date和DateFormatter日期的格式化

本文将为你演示日期类型的使用,以及如何对日期进行格式化. 首先引入需要使用到的界面框架 import UIKit 初始化一个日期对象,它的值和当前电脑中的日期相同 var date = Date() 获得当前60分钟之后的时间 date.addTimeInterval(60 * 60) 获得当前60分钟之后的时间,并存储再一个常量之中. let sencondDate = date.addTimeInterval(60 * 60) 对两个时间进行比较,当时间小于进行比较的时间时,返回值为-1.比

[Swift4.2互动教程]七、常见概念-(10)使用UserDefaults和归档方式存取用户数据

在项目开发之中,你会经常需要将一些数据存储在本地,以便记录用户生产的数据或操作习惯.在项目文件夹上带点击鼠标右键.弹出右键菜单.本文将为你演示,存储用户数据的两种常用方式. 选择菜单中的创建新文件选项(New File),创建一个类文件,用来存档用户数据.在弹出的文件模板选择窗口中,保持默认的选项(Cocoa Touch Class),然后点击下一步按钮,进入下一步设置页面.在类名输入框内输入类的名称. Class: Person 接着输入父类的名称. Subclass of: NSObject

[Swift4.2互动教程]七、常见概念-(12)使用DispatchGroup(调度组)管理线程数组

本文将为你演示调度组的使用,使用调度组可以将多个线程中的人物进行组合管理,可以设置当多个相同层次的任务完成之后,再执行另一项任务. 首先导入需要使用的界面工具框架 import UIKit 在控制台输出一条日志语句,表示调试任务开始执行 print("Start the task and display teh Loading animation.") 接着初始化一个调度组对象. let gro =DispatchGroup() 同时运行多个任务,每个任务的启动时间是按照加入队列的顺序

[Swift4.2互动教程]七、常见概念-(13)使用UIScreen查询设备屏幕信息

本文将为你演示,如何获得设备的屏幕信息,了解设备的屏幕尺寸等信息,才能做出适配性更好的应用程序. 首先导入需要使用到的界面工具框架 import UIKit 然后通过UIScreen类,就可以获得设备的屏幕信息.这里获得设备的屏幕尺寸,点击显示结果图标,查看获得的结果 UIScreen.main.availableModes.description 从结果列表中可以看出,屏幕的宽度为2048像素,高度为1536像素.再次点击结果图标,关闭结果列表. [<UIScreenMode: ox60000

[Swift4.2互动教程]八、实用进阶-(6)通过属性进行对象间的消息传递

本文将演示,如何通过一个对象作为另一个对象的属性,从而通过设置属性的值,来实现对象之间的消息传递.首先打开自定义视图的代码文件(CustomView.swift) 1 import UIKit 2 //使当前的自定义类,遵循文本输入框代理协议 3 class CustomView: UIView,UITextFieldDelegate{ 4 //给自定义类添加一个文本框类型的属性 5 var textField: UITextField! 6 //添加一个视图控制器类的属性,并设置类型为弱引用,

《互动教程 for Photoshop CC》已成功发布在App Store

不看视频不看书,超级好玩的PS教程! App store下载量超百万! 超千份来自世界各地用户的五星好评以及诚意推荐! 单击.双击.长按.拖动及各种快捷键,就像您在真正的Photoshop上操作一样! 比观看视频.阅读书籍更加有效.有趣! 指尖点亮设计之源!哪里不会戳哪里,妈妈再也不会担心我的Ps了! 一起动手来戳Photoshop吧! App Store免费下载地址: https://itunes.apple.com/cn/app/hu-dong-jiao-cheng-for-photosho

Laravel教程 七:表单验证 Validation

Laravel教程 七:表单验证 Validation 此文章为原创文章,未经同意,禁止转载. Laravel Form 终于要更新这个Laravel系列教程的第七篇了,期间去写了一点其他的东西. 就不 说废话了吧,直接进入Form Validation的部分吧.几乎在每一个web应用当中都会有表单,而有表单基本就离不开表单验证.在laravel中,其实可以说是有两种方式来进行表单验证:使用Request和使用Validation.下面将分开讲这两部分的内容,而且我会更着重第一种,也更推荐大家使

《互动教程 for Excel 2016》已成功发布在App Store

不看视频不看书,超级好玩的Excel教程! 单击.双击.长按.拖动及各种快捷键,就像您在真正的Excel 2016上操作一样! 比观看视频.阅读书籍更加有效.有趣! 哪里不会戳哪里,妈妈再也不会担心我的Excel了! 免费下载地址: https://itunes.apple.com/cn/app/hu-dong-jiao-cheng-for-excel/id1090726089?mt=8 [关于Excel互动教程] 1.Excel互动教程是一款简单.有趣.互动式的学习Office Excel 2