Foundation框架 - 结构体
一、基础知识
如果要想使用 Foundation 框架的数据类型,那么包含它的主头文件就可以了。即 #import <Foundation/Foundation.h>
补充: Core Foundation 框架是相对底层,里面的代码几乎都是C语言的,而 Foundation 中是OC的。
iOS中坐标原点在左上角,向右水平方向为x轴,向下垂直方向为y轴。
二、常用的结构体介绍及简单使用
常用的结构体:
//在Foundation框架中常用的四种结构体
NSRange(location, length) //表示范围
CGPoint(x, y) //表示坐标
CGSize(width, height) //表示UI元素的尺寸
CGRect(CGPoint, CGSize) //一个UI元素的位置和尺寸
(一) NSRange 的基本使用
@"I love programming" //love的范围,location=2,length=4
{, , , , } //后三个数字的范围,location=2, length=3
//使用NSRange创建变量
NSRange r1 = {, }; //可读写不好
NSRange r2 = {.location=, .length=}; //比较多余
NSRange r3 = NSMakeRange(, ) //必须掌握
//查找某个字符串在str中的范围
NSString *str = @"I love programming";
NSRange range = [str rangeOfString:@"love"];
NSLog(@"loc = %ld, length = %ld", range.location, range.length);
输出:loc = 2, length = 4
(二) CGPoint 的使用
CGPoint p1 = CGPointMake(, );
CGPoint p2 = CGPointZero; //表示原点(0,0)
(三) CGSize 的使用
CGSize s1 = CGSizeMake(, );
CGSize s2 = CGSizeZero;
(四) CGRect 的使用
CGRect r1 = CGRectMake(, , , );
CGRect r2 = { {, }, {, }};
CGRect r3 = {p1, s1};
CGRect r4 = {CGPointZero, CGSizeMake(, )};
CGRect r5 = CGRectZero;
NSLog(@"x=%.1f, y=%.1f, width=%.1f, height=%.1f", r1.origin.x, r1.origin.y, r1.size.width, r1.size.height);
输出为:x=0.0, y=0.0, width=100.0, height=50.0
//将结构体转为字符串
NSString *str1 = NSStringFromRange(range1);
NSString *str2 = NSStringFromCGPoint(p1);
NSString *str3 = NSStringFromCGSize(s1);
NSString *str4 = NSStringFromCGRect(r1);
NSLog(@"str1 = %@\n str2 = %@\n str3 = %@\n str4 = %@", str1, str2, str3, str4);
输出为:
str1 = {2, 4}
str2 = {20, 20}
str3 = {100, 50}
str4 = {{0, 0}, {100, 50}}
(五) Foundation 框架中结构体常用函数
BOOL a = CGPointEqualToPoint(CGPointMake(, ), CGPointZero);
BOOL b = CGSizeEqualToSize(s1, s2);
BOOL c = CGRectEqualToRect(r1, r2);
BOOL d = CGRectContainsPoint(r1, CGPointZero);
NSLog(@"a=%d, b=%d, c=%d, d=%d", a, b, c, d);
输出为:a=0, b=0, c=1, d=1
参考博文:foundation框架—结构体
Foundation框架 - 结构体的更多相关文章
- foundation框架—结构体
Foundation框架—结构体 一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...
- 李洪强iOS开发之Foundation框架—结构体
Foundation框架—结构体 一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...
- Objective-C:Foundation框架-结构体
在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发. ...
- OC Foundation框架—结构体
一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...
- 黑马程序员——OC语言Foundation框架 结构体
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)结构体 NSRange(location length) NSPoi ...
- 「Foundation」结构体
一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...
- iOS-Foundation框架—结构体(转载)
一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...
- 八、Foundation -常用结构体
一.NSRange 在foundation/NSRange.h中对NSRange的定义 typedef struct _NSRange{ NSUInteger location; NSUInteger ...
- OC - 7.Foundation框架的简单介绍
OC语言-07-OC语言-Foundation框架 结构体 NSRange/CGRange 用来表示一个元素在另一个元素中的范围,NSRange等价于CGRange 包含两个属性: NSUInte ...
随机推荐
- Docker最全教程——从理论到实战(四)
往期内容链接 https://www.cnblogs.com/codelove/p/10030439.html https://www.cnblogs.com/codelove/p/10036608. ...
- 强大的jupyter,python开发者的福音
jupyter是一种交互式计算和开发环境的笔记,ipython命令行比原生的python命令行更加友好和高效,还可以运行web版的界面,支持多语言,输出图形.音频.视频等功能. 一.安装 pip3 i ...
- [Luogu4705] 玩游戏
Description 给定两个长度分别为 \(n\) 和 \(m\) 的序列 \(a\) 和 \(b\).要从这两个序列中分别随机一个数,设为 \(a_x,b_y\),定义该次游戏的 \(k\) 次 ...
- 解决ajax跨域问题
JQuery ajax支持get方式的跨域,采用了jsonp来完成.完成跨域请求的有两种方式实现.一种是使用Jquery ajax最底层的Api实现跨域的请求,而另一种则是JQuery ajax的高级 ...
- MySQL 笔记整理(6) --全局锁和表锁:给表加个字段怎么有这么多阻碍
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 6) --全局锁和表锁:给表加个字段怎么有这么多阻碍 数据库锁设计的初衷是处理并发问题.作为多用户共享的资源,当出现并发访问的时候, ...
- .NET Core[MVC] 利用特性捕捉异常
声明:本方式适用于MVC.本代码只适用于.NET Core MVC. 先创建一个类继承ExceptionFilterAttribute这个抽象类,并override它的方法OnException. 代 ...
- .Net 控制台中文(简体/繁体)乱码问题
加上这句就可以了: Console.OutputEncoding = System.Text.Encoding.UTF8; class Program { static void Main(strin ...
- win10 git bash 闪退
使用ghost重装了win10 专业版后.安装git,尝试重装了n个版本的git,右键git bash here 直接闪退,直接进入安装目录打开git-bash.exe依旧闪退, git右键点击Git ...
- ES10特性详解
摘要: 最新的JS特性. ES10 还只是一个草案.但是除了 Object.fromEntries 之外,Chrome 的大多数功能都已经实现了,为什么不早点开始探索呢?当所有浏览器都开始支持它时,你 ...
- Vs2017 xaramin mac build agent部署后记
换了四种黑苹果,最终成功了 步骤: 1.升级vs2017, 2.安装XCODE 8.3 3.安装vs2017 for mac 企业版 4 ...