码迷,mamicode.com
首页 > 其他好文 > 详细

Foundation框架 ---- 结构体

时间:2015-11-22 13:54:58      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

一.基本定义

(1). 使用方式 :#import  <Foundation / Foundation.h>

(2). 常用的结构体介绍及简单使用 :

      表示字符串位置和长度 : NSRange(location   length)   

      表示坐标         NSPoint\CGPoint

      表示UI元素的大小    NSSize\CGSize

      表示UI元素的位置和大小 NSRect\CGRect (CGPint CGSize)

 

结构体的定义方式 : 

  stuct Date {

     int year; 

     int month;

     int day;

};

// 结构体的使用 

struct Date d = {2013 , 9 , 1};  / /  不使用这种方式定义

struct Date d2 = {.month = 12 , .year = 2013 , .day  = 12} / /  不使用这种方式定义

  

(3). 按范围获取字符串  NSMakeRange   结构体

NSRange   r1  = {2 , 4};  //   不用,可读性不好

NSRange   r2  = { .location = 2  , .length = 4 } ; // 不用,代码显得多余

NSRange   r3  =  NSMakeRange (2 ,  4 );   // 掌握,系统方法 

 

(4) .  rangeOfString : 查找某个字符串在range的范围

// 如果找不到,length = 0 , location = NSNotFound = -1

NSString *str = @“I  love  oc”;

NSRange range = [str rangOfString : @“love”];  // 查找某个字符串在str中的范围

NSLog(@“location = %d , length = %d”, range.location , range.length);  // 2  ,  4

 

二. Point、Size、Rect01 结构体-简介

  2. 1 CGFloat 是double类型  

struct CGPoint{

   CGFloat x ;

   CGFloat y ;

};

CGPoint  : UI元素的位置

// typedef 定义新的类型名来替换已有的类型名

typedef   原类型名             新类型名

typedef   struct CGPoint      CGPoint;  // 开发中使用,跨平台

typedef   CGPoint      NSPoint 

 

2.2  NSPoint\CGPoint   NSMakePoint(x , y );

定义一个点 CGPoint p1 = NSMakePoint(10, 10);  

      CGPoint    p1  =  CGPointMake(20 , 20) ;  // 最常用

      ==    NSPoint p2 = CGPointMake(20, 20);// 最常用 

        表示原点 CGPointZero  ==   CGPointMake( 0 ,  0 ) ; 

     

2.3  NSSize\CGSize  定义控件的尺寸  CGSizeMake(width , height);

    NSSize s1 = CGSizeMake(100, 50);

    NSSize s2 = NSMakeSize(100, 50);

    CGSize s3 = NSMakeSize(200, 60);

 

2.4 NSRect\CGRect (CGPoint CGSize) 

//  相当与UI元素的位置和尺寸

   typedef strct _NSRect

    {

        NSPoint origin ;   // UI元素的位置

        NSSize  size ;     // UI的尺寸

    }

// 定义一个元素的位置和尺寸  (x , y , width . height)

CGRect r1 =  CGRectMake( o , o , 100 , 50);

CGRect r2 = { {0,0} ,  {100 ,  50 }};    // 这个结构体中含有2个结构体  

CGRect r3  = {p1 , s2};   // 将2个定义好的结构体传进入

CGRect r4  = {CGzero , CGSizeMake(100 , 50) };

 

// 模拟实现NSRectMake

CGRect myRect(GCFloat x , CGFloat y , CGFloat width , CGFloat height)

{

GCRect  rect ;  // 定义CGRect结构体变量

rect.origin.x = x;   // 为结构体变量赋值

rect.origin.y = y;

rect.origin,width = width;

rect.origin.height = height;

return rect;   

}

 

2.5   将结构体转为字符串打印显示,便于调试

CGPoint p1 = NSMakePoint(1010);  

NSString *str = NSStringFromPoint(p1);

NSLog(@“%@“,str);

 

2.6  // 比较两个点是否相同(xy

    BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));

   比较尺寸  CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>)

   比较位置和尺寸 CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>)

  

2.7   判断某个点是否在规定的区域

// x (50, 150) y (40 , 90) 点的范围

BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));   

// CG  开头的依赖于  CoreGraphics (核心图形)

使用这些CGPointEqualToPointCGRectContainsPoint等函数的前提是添加CoreGraphics框架      

  可以在下图中的方式添加框架

 

补充 : 导入框架 Build phase -- > (+)

           ios中坐标原点在左上角,右为X轴,下位Y轴 

    

Foundation框架 ---- 结构体

标签:

原文地址:http://www.cnblogs.com/hangdada/p/4985619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!