黑马程序员——Foundation中的OC结构体
<span style="font-size:14px">------<a target="_blank" href="http://www.itheima.com">Java培训、Android培训、ios培训、.Net培训</a>、期待与您交流!------</span>
------Java培训、Android培训、ios培训、.Net培训、期待与您交流!------
OC结构体
NSRange
NSPoint\CGPoint
NSSize\CGSize
NSRect\CGRect
1.NSRange:字符在字符串中的范围(位置,长度)
用typedef 定义NSRange结构体类型:
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
用法举例:
NSString*str=@"i love you";
NSRange range1=NSMakeRange(2,4);// 则r表示的即是love的范围
NSRange range2 = [str rangeOfString:@"love"]; // 定义NSRange结构体类型变量range 并将字符串@“love”的位置和长度保存在range2中。
NSLog(@"loc = %ld length = %ld", range2.location, range2.length);// 打印出love的位置和长度,结果为loc=2 length=4.
若查找不到某个字符串的范围length=0,location=NSNotFound==-1。
2.NSPoint\CGPoint:确定平面中一个点的坐标
typedef struct CGPoint {
CGFloat x;
CGFloat y;
}CGPoint;
typedef CGPoint NSPoint;
用法举例:
CGPoint p1 = NSMakePoint(10,10);//即点p1的x和y的值都是10.
NSPoint p2 = CGPointMake(5,6); //常用这种写法; 点p2.x=5,p2.y=6.
结构体可以转为字符串,方便查看结构体各个属性
NSString *str = NSStringFromPoint(p1);//将点p1转成字符串保存在str中
NSLog(@"%@", str);//输入该字符串 {10,10}
下面两种情况都需要在CoreGraphics框架下运行
1.比较两个点是否相同
BOOL a = CGPointEqualToPoint(CGPointMake(10,10), CGPointMake(10,10));
2.下面表示坐标原点
CGPointZero等价于CGPointMake(0,0)
3.NSSize\CGSize 描述一个UI元素的尺寸(宽度,高度)
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
typedef CGSize NSSize;
用法举例:
NSSize s1 = NSMakeSize(15,20);
CGSize s2 = NSMakeSize(45,23);
NSSize s3 = CGSizeMake(20,20);
NSString *str1 = NSStringFromSize(s1);
NSLog(@"%@", str1);
比较尺寸是否相同要调用的CGSizeEqualToSize函数也需要在CoreGraphics框架下运行。
NSSize s1 = NSMakeSize(15,20);
CGSize s2 = NSMakeSize(45,23);
BOOL b = CGSizeEqualToSize(s1, s2);
// 或写成行代码BOOL b =CGSizeEqualToSize(CGSizeMake(15,20),CGSizeMake(45,23));
NSLog(@"%d",b);
4.NSRect\CGRect :确定一个矩形
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
typedef CGRect NSRect;
用法举例:CGRect定义变量及初始化的方法有下面几种。
CGRect r = CGRectMake(2,2,50,12);
CGRect r1 = CGRectMake(3,2,25,12);
CGRect r2 = {p1,s1};
CGRect r3 = {{10,20},{100,50}};
CGRect r3 = {CGPointZero, CGSizeMake(50,12)};
同样也可以将这种结构体转为字符串
NSString *str2 = NSStringFromRect(r);
NSLog(@"%@", str2);
比较两个矩形是否相等可以用下面函数实现
CGRectEqualToRect(r,r1);
判断一个点是否在矩形内可以用下面函数实现
BOOL b1=CGRectContainsCGPoint(CGRectMake(50,60,100,90),CGPointMake(90,90));
黑马程序员——Foundation中的OC结构体的更多相关文章
- 黑马程序员——Foundation之NSString和NSMutableString
------Java培训.Android培训.iOS培训.Net培训.期待与您交流!------ 在OC中NSString是一个非常重要的字符串类;和C语言的字符串不用的是,C语言的字符串是用双引号括 ...
- 黑马程序员--C#中属性和字段(变量)的区别
---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 属性为类提供了一种很有用的封装数据 ...
- Objective-C基础笔记(7)Foundation中的常用结构体
一.NSRange NSRange的定义: typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; N ...
- 黑马程序员—C语言的函数、数组、字符串
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...
- 黑马程序员:Java基础总结----java注解
黑马程序员:Java基础总结 java注解 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...
- 黑马程序员:轻松精通Java学习路线连载1-基础篇!
编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...
- 黑马程序员:3分钟带你读懂C/C++学习路线
随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者.而在今天,它又扮演着什么样重要的角色呢?请往下看: 后端服务器,移 ...
- 课程10:《黑马程序员_Hibernate开发资料》视频目录--没有细看
老师很厉害,讲得蛮详细的 \Hibernate视频教程\01_黑马程序员_Hibernate教程__Hibernate入门基础.avi; \Hibernate视频教程\02_黑马程序员_Hiberna ...
- 黑马程序员——【Java高新技术】——代理
---------- android培训.java培训.期待与您交流! ---------- 一.“代理概述”及“AOP概念” (一)代理概述 1.问题:要为已存在的多个具有相同接口的目标类的各个方法 ...
随机推荐
- matlab 扩大虚拟内存
今天服务器挂了..用了自己电脑结果爆内存,分享一个扩大虚拟内存的方法,经测试有效.. 使用Matlab生成很大的图片时,碰到了"out of memory"的错误,导致图片无法生成 ...
- 使用 DB Fixtures 为 Unit Test 提供基础数据,Sails + Mocha 实现。
使用 DB Fixtures 为 Unit Test 提供基础数据,Sails + Mocha 实现. 问题:Test Fixture 太分散,管理麻烦. 在做单元测试的时候,数据回滚是个比较麻烦的问 ...
- QQ2013手工去广告
QQ的广告令人讨厌,虽然网上有很多去广告补丁或者是去广告版,但是总是害怕有被盗号的风险,那除了付费会员还有其他什么方法可以安全的去除qq广告吗?显然有,那就是手动去广告. 很简单,不会比使用去广告补丁 ...
- 开发板上修改时间方法date命令【转】
转自:http://blog.chinaunix.net/uid-25906157-id-3138157.html 之前使用开发板时发现每次开机后,系统的时间都恢复到初始状态1970年. 一. 先说一 ...
- powerdesigner 15 如何导出sql schema
PowerDesigner导出所有SQL脚本 操作:Database=>Generate Database PowerDesigner怎么导出建表sql脚本 1 按照数据库类型,切换数据库. D ...
- linux中/etc/init.d [转]
一.关于/etc/init.d 如果你使用过linux系统,那么你一定听说过init.d目录.这个目录到底是干嘛的呢?它归根结底只做了一件事情,但这件事情非同小可,是为整个系统做的,因此它非常重要.i ...
- YTU 2621: B 继承 圆到圆柱体
2621: B 继承 圆到圆柱体 时间限制: 1 Sec 内存限制: 128 MB 提交: 313 解决: 240 题目描述 定义了Circle圆形类,在此基础上派生出Cylinder圆柱体类. ...
- 自定义View(9)关于onLayout
1,何时被调用 当外层容器组件调用其内部组件的layout(l,r,t,b)时,内部组件的onLayout就被调用.与onMeasure类似. 2,注意 onLayout对ViewGroup及子类才有 ...
- HDU 4664 Triangulation(SG函数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4664 题意:给出一个n个点的凸包(不存在三点共线).每次可以选择两个点连线,但是任意两条线只能在顶点处 ...
- 《OD大数据实战》mac下安装nginx+php
一.mac安装nginx + php + php-fpm 或apache + php 1. Mac 下 Nginx.MySQL.PHP-FPM 的安装配置 2. Mac下安装LNMP(Nginx+P ...