[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 size.height

从输出的尺寸对象的字符描述可以看出,
尺寸对象由大括号包括,
并由宽度和高度两个值组合而成

size.debugDescription

通过仿射变换,可以对尺寸对象进行变形。
在此初始化一个仿射变换对象,并设置其值为原始值

let transform: CGAffineTransform = CGAffineTransform.identity

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

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

然后给尺寸对象应用平移后的仿射变换。
从右侧输出的结果可以看出,尺寸对象的宽度和高度没有发生变化。

let secondSize = size.applying(moveTransform)

接着将仿射变换对象在水平方向上放大两倍,垂直方向上保持不变

let rotateTransform = moveTransform.scaledBy(x: 2.0, y: 1.0)

然后给尺寸对象应用缩放后的仿射变换。
从右侧输出的结果可以看出,
尺寸对象的宽度增加至两倍大小,而高度没有发生变化

let thirdSize = size.applying(rotateTransform)

判断两个尺寸大小是否相同,由于第三个尺寸对象是经常缩放变形的,
所以它们的尺寸并不相同。

thirdSize.equalTo(size)

判断两个尺寸大小是否相同

thirdSize.equalTo(CGSize(width: 40, height: 10))

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

let fifthSize = CGSizeFromString("{200,100}")

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

时间: 2024-10-11 15:05:03

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

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

本文将为你演示点对象CGPoint的使用,其中CG表示来自CoreGraphic(核心图形)这个跨平台框架 首先导入需要使用的两个框架第一个框架表示界面工具框架第二个框架表示核心绘图和动画框架 1 import UIKit 2 import QuartzCore 定义一个点对象,并设置它的位置为原点.从右侧的结果可以看出,原点的x和y值都是0 let zeroPoint = CGPoint.zero 初始化另一个点对象 var point = CGPoint() 接着查看点对象的坐标值,从右侧的

[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

转载 CSS3 经典教程系列:CSS3 盒阴影(box-shadow)详解

目标大纲 文章转载 CSS3 经典教程系列:CSS3 盒阴影(box-shadow)详解 IE中CSS-filter滤镜小知识大全

Android基础入门教程——8.3.1 三个绘图工具类详解

Android基础入门教程--8.3.1 三个绘图工具类详解 标签(空格分隔): Android基础入门教程 本节引言: 上两小节我们学习了Drawable以及Bitmap,都是加载好图片的,而本节我们要学习的绘图相关的 一些API,他们分别是Canvas(画布),Paint(画笔),Path(路径)!本节非常重要,同时也是我们 自定义View的基础哦~好的,话不多说开始本节内容~ 官方API文档:Canvas:Paint:Path: 1.相关方法详解 1)Paint(画笔): 就是画笔,用于设

学习ASP .NET MVC5官方教程总结(十一)Details 和 Delete 方法详解

学习ASP .NET MVC5官方教程总结(十一)Details 和 Delete 方法详解 在这一章,我们将研究一下自动生成的 Details 和Delete 方法. 打开Movie控制器,找到Details方法. // // GET: /Movies/Details/5 public ActionResult Details(Int32 id) { Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFou

黄聪:WordPress 多站点建站教程(二):后台(管理网络)设置详解,如何管理子站的用户、主题、插件、设置等功能

建立好了子站,我们需要有个地方配置所有子站的主题.插件等功能,我们可以在后台看到 我的站点--管理网络 如下图: 在 管理网络--仪表盘 里面,我们可以创新用户和站点,也提供了查询功能. 要注意的是:当你新上传的主题或者插件,都需要在管理网络那边的主题和插件里面将你上传的主题和插件开启.这样才可以在你的子站点中查看的到. 黄聪:WordPress 多站点建站教程(二):后台(管理网络)设置详解,如何管理子站的用户.主题.插件.设置等功能