swift学习 - 分类(Extensions)
在oc中为了增强已有类的功能,我们经常使用分类。使用分类,我们可以在不破坏原有类的结构的前提下,对原有类进行模块化的扩展。
但是在swift中没有分类这种写法了。相对应的是swift中只有扩展(Extensions)。
下面是swift中扩展(Extensions)的说明
扩展就是向一个已有的类、结构体、枚举类型或者协议类型添加新功能(functionality)。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即逆向建模)。扩展和 Objective-C 中的分类(categories)类似。(不过与 Objective-C 不同的是,Swift 的扩展没有名字。)
下面是swift实现对UIView的分类:
extension UIView {
//x
var x:CGFloat {
set{
var oldFrame = self.frame
oldFrame.origin.x = newValue;
self.frame = oldFrame
}
get{
return self.frame.origin.x
}
}
//y
var y:CGFloat {
set{
var oldFrame = self.frame
oldFrame.origin.y = newValue;
self.frame = oldFrame
}
get{
return self.frame.origin.y
}
}
//height
var height:CGFloat {
set{
var oldFrame = self.frame
oldFrame.size.height = newValue;
self.frame = oldFrame
}
get{
return self.frame.size.height
}
}
//width
var width:CGFloat {
set{
var oldFrame = self.frame
oldFrame.size.width = newValue;
self.frame = oldFrame
}
get{
return self.frame.size.width
}
}
//top
var top:CGFloat {
set{
var oldFrame = self.frame
oldFrame.origin.y = newValue;
self.frame = oldFrame
}
get{
return self.frame.origin.y
}
}
//left
var left:CGFloat {
set{
var oldFrame = self.frame
oldFrame.origin.x = newValue;
self.frame = oldFrame
}
get{
return self.frame.origin.x
}
}
//bottom
var bottom:CGFloat {
set{
var oldFrame = self.frame
oldFrame.origin.y = newValue - oldFrame.size.height;
self.frame = oldFrame
}
get{
return self.frame.origin.y + self.frame.size.height
}
}
//right
var right:CGFloat {
set{
var oldFrame = self.frame
oldFrame.origin.x = newValue+oldFrame.size.width;
self.frame = oldFrame
}
get{
return self.frame.origin.x + self.frame.size.width
}
}
//size
var size:CGSize {
set{
var oldFrame = self.frame
oldFrame.size = newValue
self.frame = oldFrame
}
get{
return self.frame.size
}
}
//origin
var origin: CGPoint{
set{
var oldFrame = self.frame
oldFrame.origin = newValue;
self.frame = oldFrame
}
get{
return self.frame.origin
}
}
}
swift学习 - 分类(Extensions)的更多相关文章
- [转]swift 学习资源 大集合
今天看到了一个swift的学习网站,里面收集了很多学习资源 [转自http://blog.csdn.net/sqc3375177/article/details/29206779] Swift 介绍 ...
- swift 学习资源 大集合
今天看到一个swift学习网站,其中我们收集了大量的学习资源 Swift 介绍 Swift 介绍 来自 Apple 官方 Swift 简单介绍 (@peng_gong) 一篇不错的中文简单介绍 [译] ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- 今天开始Swift学习
今天开始Swift学习 在此记录笔记 以备之后查阅! allenhuang
- iOS ---Swift学习与复习
swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...
- 12套swift学习资源分享
虽然objective-c编程语言在过去很长一段时间都是iOS应用开发的基础语言,且很多iOS开发者对其也深爱有佳,但是随着swift编程语言的问世,迅速发展为开发者追捧的语言.且今年伴随着swift ...
- Swift学习之常用UI的使用
Swift学习之常用UI的使用 最近笔者在开始学习苹果最新的编程语言,因为笔者认为,苹果既然出了这门语言就绝对不会放弃,除非苹果倒闭了(当然这里知识一个玩笑). 所以在不久的将来,swift绝对是iO ...
- Swift学习笔记(一)搭配环境以及代码运行成功
原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...
- swift学习:第一个swift程序
原文:swift学习:第一个swift程序 最近swift有点火,赶紧跟上学习.于是,个人第一个swift程序诞生了... 新建项目
随机推荐
- Java第二章 变量
1.什么是变量? 存储数据的基本单位. 2.数据类型分为: 基本类型和引用数据 3.基本数据类型和引用数据类型的区别: 基础数据:不同的变量会分配不同的存储空间,改变一个变量不会影响另一个变量 引用数 ...
- 读书笔记 effective c++ Item 46 如果想进行类型转换,在模板内部定义非成员函数
1. 问题的引入——将operator*模板化 Item 24中解释了为什么对于所有参数的隐式类型转换,只有非成员函数是合格的,并且使用了一个为Rational 类创建的operator*函数作为实例 ...
- spring_boot攻略1.1-hello SpringBoot
交流账号:2318645572 说明: 开发工具:eclipse 开发系统:windows 7 开发规范:maven项目 注意:按照我说的方式做下去 1.导包:pom.xml <project ...
- Druid Indexing 服务
索引服务由三个主要组件:一个是peon 组件,可以运行一个任务,一个是Middle Managers组件,管理peons,和一个overlord 组件管理任务分发给Middle Managers. o ...
- 关于使用ModelSim中编写testbench模板问题
对于初学者来说写Testbench测试文件还是比较困难的,但Modelsim和quartus ii都提供了模板,下面就如何使用Modelsim提供的模板进行操作. Modelsim提供了很多Testb ...
- 使用Maven整合SSM总结
项目环境: spring-4.3.7 + mybatis-3.3.0 + maven-3.3.9 + oracle11g 1. 首先使用maven引入相关依赖: pom.xml: <projec ...
- python在cmd上导包成功,但是python charm上面就提示找不到
失败 成功 原因:我的python file名称和numpy 的名字一样了,把python file 的名字改了就好了
- File Transfer
本博客的代码的思想和图片参考:好大学慕课浙江大学陈越老师.何钦铭老师的<数据结构> 代码的测试工具PTA File Transfer 1 Question 2 Explain First, ...
- _getch() 函数,应用于输入密码敲入回车前修改
body,table { font-family: 微软雅黑; font-size: 10pt } table { border-collapse: collapse; border: solid g ...
- JS中字符串与数组的一些常用方法
真是恨透了这些类似于substring substr slice 要么长得像,要么就功能相近的方法... 1⃣️string 1.substring(start开始位置的索引,end结束位置索引) 截 ...