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 ...
随机推荐
- Linux常用监控命令简介 - top
top -hv | -bcisS -d delay -n iterations -p pid [, pid ...] 指令介绍-b : 批次模式运行.-c : 显示执行任务的命令行.-d : 设定延迟 ...
- jmeter 分布式压测(Linux)
之前一篇博文写的是如何在Linux上使用jmeter压测,这篇介绍下Linux上jmeter的分布式压测. 和windows上的分布式类似,需要配置agent节点和控制机 一.Agent节点配置 1. ...
- javascript基础修炼(6)——前端路由的基本原理
[造轮子]是笔者学习和理解一些较复杂的代码结构时的常用方法,它很慢,但是效果却胜过你读十几篇相关的文章.为已知的API方法自行编写实现,遇到自己无法复现的部分再有针对性地去查资料,最后当你再去学习官方 ...
- Python全栈开发之---assert断言
一.python assert的作用: 根据Python 官方文档解释(https://docs.python.org/3/reference/simple_stmts.html#assert), & ...
- 生产者消费者C++实现
#include<string>#include<iostream>#include<process.h>#include<windows.h>#inc ...
- Linux设备驱动之IIO子系统——Triggered buffer support触发缓冲支持
Triggered buffer support触发缓冲支持 在许多数据分析应用中,能够基于某些外部信号(触发器)捕获数据是比较有用的. 这些触发器可能是: 数据就绪信号 连接到某个外部系统的IRQ线 ...
- mac IDE输入光标变成块状 改为竖线
mac下安装IDE后,出现“输入光标变成块状”的情况,是因为安装的时候装了ideaVim插件,改为竖线光标的方法:把ideaVim插件去掉
- 一文看懂HTTPS的核心知识
1.HTTPS历史 由于HTTP的消息传输的安全隐患,于是网景公司在1994年设计了SSL(Secure Sockets Layer,安全套接字层)协议,目的是保障网上交易安全,从而就诞生了HTTPS ...
- 驰骋工作流引擎JFlow与activiti的对比之2种结构化模式
1. 任意循环(Arbitrary Cycles) ACTIVITI : 某一个或多个活动可以反复执行. 例子:用户买了瓶汽水,拿到汽水后,中了一瓶,又去兑换了一瓶汽水,如果又中了,再去兑换一瓶汽水- ...
- jsp+servlet include引入文件指令
1.index.jsp为首页 <%@ page contentType="text/html;charset=UTF-8" import="java.util.*& ...