一、基础知识

  如果要想使用 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框架 - 结构体的更多相关文章

  1. foundation框架—结构体

    Foundation框架—结构体 一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...

  2. 李洪强iOS开发之Foundation框架—结构体

    Foundation框架—结构体 一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...

  3. Objective-C:Foundation框架-结构体

    在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发. ...

  4. OC Foundation框架—结构体

    一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...

  5. 黑马程序员——OC语言Foundation框架 结构体

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)结构体 NSRange(location length) NSPoi ...

  6. 「Foundation」结构体

    一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...

  7. iOS-Foundation框架—结构体(转载)

    一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...

  8. 八、Foundation -常用结构体

    一.NSRange 在foundation/NSRange.h中对NSRange的定义 typedef struct _NSRange{ NSUInteger location; NSUInteger ...

  9. OC - 7.Foundation框架的简单介绍

    OC语言-07-OC语言-Foundation框架   结构体 NSRange/CGRange 用来表示一个元素在另一个元素中的范围,NSRange等价于CGRange 包含两个属性: NSUInte ...

随机推荐

  1. Thread之九:stop

    搞过Java线程的人都知道,stop这个方法是臭名昭著了,早就被弃用了,但是现在任然有很多钟情与他的人,永远都放不下他,因为从他的字面意思上我们可以知道他貌似可以停止一个线程,这个需求是每个搞线程开发 ...

  2. Web技术的发展 网络发展简介(三)

    在上一篇文章中,对TCP/IP通信协议进行了简单的介绍 通信协议是通信的理论基石,计算机.操作系统以及各种网络设备对通信的支持是计算机网络通信的物质基础 而web服务则是运行于应用层,借助于应用层的协 ...

  3. 执行对象Statement、PreparedStatement和CallableStatement详解 JDBC简介(五)

    执行对象是SQL的执行者,SQL是“安排好的任务”,执行对象就是“实际工作的人”. 执行对象有三种: Statement.PreparedStatement和CallableStatement,他们都 ...

  4. 【Node.js】利用node.js搭建服务器并访问静态网页

    node.js是一门服务端的语言,下面讲讲如何利用node.js提供给我们的api来搭建服务器,并且访问静态网页 项目结构如下 ------------------------------------ ...

  5. Django 系列博客(八)

    Django 系列博客(八) 前言 本篇博客介绍 Django 中的模板层,模板都是Django 使用相关函数渲染后传输给前端在显式的,为了想要渲染出我们想要的数据,需要学习模板语法,相关过滤器.标签 ...

  6. Java学习笔记之——TreeMap

    TreeMap: 特点:存储时,按照键排序 底层使用一个红黑树,特殊的而二叉树 排序跟comparable,comparator有关系 如果需要在添加时进行排序,使用hashMap即可 构造方法: T ...

  7. SQL中# 与$ 的区别

    区别: (1)#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是id,则解析成的sql为order by "id&quo ...

  8. #WEB安全基础 : HTML/CSS | 0x5a标签拓展和class、id属性的使用

    a标签不只是能链接到其他网页,也能链接到网页中的元素 class属性让你用CSS对特定的元素进行修饰 这些是一个网页设计者的有力武器 这节课还是一个index.html文件   以下是代码 <h ...

  9. 《Odoo开发指南》精选分享—第1章-开始使用Odoo开发(1)

    引言 在进入Odoo开发之前,我们需要建立我们的开发环境,并学习它的基本管理任务. 在本章中,我们将学习如何设置工作环境,在这里我们将构建我们的Odoo应用程序.我们将学习如何设置Debian或Ubu ...

  10. Dynamics 365-Full Text Index on Stopwords

    之前写了一篇关于Online Relevance Search的博文,然后又看到罗勇大神关于Full Text Index的博文:Dynamics CRM中一个查找字段引发的[血案],于是准备写点关于 ...