<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结构体的更多相关文章

  1. 黑马程序员——Foundation之NSString和NSMutableString

    ------Java培训.Android培训.iOS培训.Net培训.期待与您交流!------ 在OC中NSString是一个非常重要的字符串类;和C语言的字符串不用的是,C语言的字符串是用双引号括 ...

  2. 黑马程序员--C#中属性和字段(变量)的区别

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 属性为类提供了一种很有用的封装数据 ...

  3. Objective-C基础笔记(7)Foundation中的常用结构体

    一.NSRange NSRange的定义: typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; N ...

  4. 黑马程序员—C语言的函数、数组、字符串

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...

  5. 黑马程序员:Java基础总结----java注解

    黑马程序员:Java基础总结 java注解   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...

  6. 黑马程序员:轻松精通Java学习路线连载1-基础篇!

    编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...

  7. 黑马程序员:3分钟带你读懂C/C++学习路线

    随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者.而在今天,它又扮演着什么样重要的角色呢?请往下看: 后端服务器,移 ...

  8. 课程10:《黑马程序员_Hibernate开发资料》视频目录--没有细看

    老师很厉害,讲得蛮详细的 \Hibernate视频教程\01_黑马程序员_Hibernate教程__Hibernate入门基础.avi; \Hibernate视频教程\02_黑马程序员_Hiberna ...

  9. 黑马程序员——【Java高新技术】——代理

    ---------- android培训.java培训.期待与您交流! ---------- 一.“代理概述”及“AOP概念” (一)代理概述 1.问题:要为已存在的多个具有相同接口的目标类的各个方法 ...

随机推荐

  1. 修改linux默认jdk版本

    当你已经成功把jdk1.6.0_03 安装到 /usr/java,并且配置好了系统环境变量 执行 # java -version 时就是 显示jdk1.4.3,是因为你的linux系统有默认的jdk; ...

  2. javascript 阻止冒泡

    JS  阻止冒泡 function stopBubble(e) { //如果提供了事件对象,则这是一个非IE浏览器 if(e && e.stopPropagation) { //因此它 ...

  3. allegro下快捷键设置[转贴]

    zz : http://yuandi6.blog.163.com/blog/static/207265185201210245435397/ 修改变量文件,设置自定义快捷键. Allegro可以通过修 ...

  4. android:descendantFocusability的作用:viewgroup与其上面view的焦点控制,如何让子view失去焦点等。

    ViewGroup的下面这个属性可以控制. 原文: android:descendantFocusability Defines the relationship between the ViewGr ...

  5. MS UI Automation Introduction

    MS UI Automation Introduction 2014-09-17 MS UI Automation是什么 UIA架构 UI自动化模型 UI自动化树概述 UI自动化控件模式概述 UI 自 ...

  6. 中文web font技术及方案

    我们在日常需求中,经常会碰到视觉设计师对某个中文字体效果非常坚持的情况,因为页面是否高大上,字体选择是很重要的一个因素,选择合适的字体可以让页面更优雅.面对这种问题,我们通常以下方式来进行设计还原: ...

  7. grub rescue修复引导项

    1.需要先找到linux系统盘所在到目录 grub rescue > ls 然后依次 ls (hd0,msdosX)/ 假如我们到系统在msdos2 2.输入 set root=(hd0,msd ...

  8. HTML元素margin、padding的默认值

    HTML元素margin.padding的默认值 element margin(单位像素) padding html 0 0 body 8 0 div 0 0 h1 21 0 h2 19 0 19 0 ...

  9. 实现图片大小的自动控制( 图片大小控制CSS代码)

    图片大小控制CSS代码 将以下代码放到你的样式表文件中即可实现图片大小的自动控制. /*图片大小控制CSS By Tekin */img,a img{border:0;margin:0;padding ...

  10. ios多手势事件

    开发ios应用时我们经常用到多手势来处理事情,如给scrollView增加点击事件,scrollView不能响应view的touch事件,但有时候却要用到多手势事件,那么我们可以给这个scrollVi ...