// 则r表示的即是love的范围,金沙js娱乐场官方网站CGPoint(开发中常用后者)

在Foundation中定义了很多常用结构体类型来简化我们的日常开发,CGPoint(开发中常用后者),      NSRange range2 =,      NSRange range1=NSMakeRange(2,NSRange { NSUInteger,NSUInteger length,CGRect 的使用,  typedef NSRange

IOS-Foundation 里常用的结构体:,ios-foundation结构

在Foundation中定义了成都百货上千常用结构体类型来简化大家的不以为奇开支

NSRange(location length)用来表示范围,分多样处境

NSPoint \ CGPoint(开采中常用后者)

NSSize \ CGSize

NSRect \ CGRect (CGPint CGSize)

NSRange原型

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

那是 NSRange
结构体的内部结构的方式,八个分子,叁个长度,四个岗位。无需再和 c
同样选取 struct 关键字,且成员的数据类型是 NSUInteger

typedef unsigned long NSUInteger;

属于无符号长整型类型的代替写法,就知晓它正是几个整型的正数而已。

 

利用 NSRange 结构体表示范围,比方:

    //{1, 2, 3, 4, 5}
    //表示3,4,5的范围,location=2,length=3

从0开端计数,第3个地方上马,长度为3。

 

字符串里 love 的限量,从0初步计数第一个地方,长度为4

@"i love oc";

 

上面这两种写法不推荐(后边二个可读性太差,后面一个太冗长)

//NSRange r1 = {2, 4}; // 不用
//NSRange r2 = {.location = 2, .length = 4};// 不用

要明白上边那一个写法,下面的八个不利用

NSRange r3 = NSMakeRange(2, 4); // 掌握

 

在工程中,常常采取的贰个物色字符串地方的艺术

    NSString *str = @"i love oc";

    // 查找某个字符串在str中的范围,很常用的一个方法,重要!
    // 如果找不到,length=0,location=NSNotFound==-1
    NSRange range = [str rangeOfString:@"java"];
    NSLog(@"loc = %ld, length=%ld", range.location, range.length);

因为,location 是无符号 long
类型,那么-1打印出来会是多个相当大的正数。当然,若是最高位依照负数表示了,约等于NSNotFound依照(带符号)整数打字与印刷,那么就是-1。

 

NSPoint \ CGPoint

点结构体

struct CGPoint {
  CGFloat x;
  CGFloat y;
};
typedef struct CGPoint CGPoint;

还有:

typedef CGPoint NSPoint;
typedef struct _NSPoint {
    CGFloat x;
    CGFloat y;
} NSPoint;

后续翻看:

 typedef CGFLOAT_TYPE CGFloat;

继续查看:

#define CGFLOAT_TYPE double

本质正是 double 类型

类似 NSRange 结构体

CGPoint p1 = NSMakePoint(10, 10);
NSPoint p2 = CGPointMake(20, 20);// 最常用

 

NSSize \ CGSize

代表中度,宽度尺寸的结构体,联想纪念。

    NSSize s1 = CGSizeMake(100, 50);
    NSSize s2 = NSMakeSize(100, 50);
    CGSize s3 = NSMakeSize(200, 60);

 

CGRect 表示矩形尺寸

    CGRect r1 = CGRectMake(0, 0, 100, 50);
    CGRect r2 = { {0, 0}, {100, 90}};
    CGRect r3 = {p1, s2};

能够看看对于常用结构体在Foundation框架中都有二个对应的make方法开始展览创办,那也是我们未来相比常用的操作;

何况与之相应的还都有三个NSStringFromXX方法来开展字符串调换,方便我们调试。上面也波及NSSize其实就是CGSize,NSRect其实便是CGRect。

注意:

UI是iOS的UI库,用objective-c封装的
NS是objc的基础库
CG,CF等是比较底层的C语言的库
能够知道UIFont就是用objc封装过的CGFont,用起来方便些

里常用的结构体:,ios-foundation结构
在Foundation中定义了无数常用结构体类型来简化大家的一般性支出
NSRange(location length) 用来表示…

猛然技术员——Foundation中的OC结构体,foundationoc

 


OC结构体

NSRange

NSPoint\CGPoint 

NSSize\CGSize

NSRect\CGRect

1.NSRange:字符在字符串中的范围(地方,长度)

用typedef 定义NSRange结构体类型:

      typedef struct _NSRange {

          NSUInteger location;

          NSUInteger length;

        } NSRange;

  用法比方:

     
NSString*[email protected]”i
love you”;

      NSRange range1=NSMakeRange(2,4);// 则r代表的正是love的限定

      NSRange range2 = [str rangeOfString:@”love”];
       // 定义NSRange结构体类型变量range
并将字符串@“love”的任务和长度保存在range第22中学。

      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));

 

 

    

 

    

OC结构体 NSRange NSPoint\CGPoint NSSize\CGSize NSRect\CGRect
1.NSRange: 字符在字符串中的范围(地方,…

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

一、NSRange

NSRange的定义:

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

NSRanage的使用:

    NSRange range = NSMakeRange(8, 10);

    NSLog(@"location:%zi", range.location);
    NSLog(@"length:%zi", range.length);

    NSString *str = NSStringFromRange(range);
    NSLog(@"%@", str);

二、NSPoint

NSPoint的定义:

typedef CGPoint NSPoint;

struct CGPoint {
  CGFloat x;
  CGFloat y;
};
typedef struct CGPoint CGPoint;

NSPoint的使用:

    NSPoint p;
    p.x = 10;
    p.y = 10;

    p = NSMakePoint(11, 11);

    //常见的方式
    p = CGPointMake(12, 12);

    NSString * str = NSStringFromPoint(p);
    NSLog(@"%@", str);

三、NSSize

NSSize的定义:

typedef CGSize NSSize;

struct CGSize {
  CGFloat width;
  CGFloat height;
};
typedef struct CGSize CGSize;

NSSize的使用:

    NSSize s;
    s.width = 100.1;
    s.height = 100.3;

    s = NSMakeSize(12.3, 16.9);

    s = CGSizeMake(15.3, 19.2);

    NSString *str = NSStringFromSize(s);
    NSLog(@"%@", str);

四、NSRect

NSRect的定义:

typedef CGRect NSRect;

struct CGRect {
  CGPoint origin;
  CGSize size;
};
typedef struct CGRect CGRect;

NSRect的使用:

    NSRect r;
    //r.origin.x = 11;
    //r.origin.y = 13;
    r.origin = NSMakePoint(50, 50);
    r.size = NSMakeSize(60, 60);

    r = NSMakeRect(20, 20, 30, 30);

一、NSRange NSRange的定义: typedef struct _NSRange { NSUInteger
location; NSUInteger length;} NSRange; NSRanage的使…

  //NSRange的使用
    NSRange r1 = NSMakeRange(2, 4);  //第一个参数为.location 第二个参数为.length

    NSString *str = @"学习OC";

    NSRange range = [str rangeOfString:@"学习"];  //查找某个字符串在str字符串中的位置和长度

    NSLog(@"loc = %ld, len = %ld",range.location, range.length);

    NSRange range1 = [str rangeOfString:@"找不到"];  //查找某个字符串在str字符串中的位置和长度

    NSLog(@"loc = %d, len = %ld",range1.location, range1.length);  //如果找不到,location 的返回值为-1,要用%d输出location 的值才会有负号,默认的%ld是没有符号



    //CGPoint的使用
    CGPoint point1 = NSMakePoint(10, 10);
    NSPoint point2 = CGPointMake(10, 10); //平常经常使用这种方法定义一个CGPoint 对象


    //NSSzie的使用
    NSSize size1 = CGSizeMake(10, 20);
    CGSize size2 = NSMakeSize(10, 20);


    //CGRect 的使用
    CGRect rect1 = CGRectMake(0, 0, 50, 50);
    CGRect rect2 = {point1, size1};


    //打印结构体的方法
    NSString *s = NSStringFromPoint(point1);
    NSLog(@"%@",s);

    NSString *s1 = NSStringFromRect(rect1);
    NSLog(@"%@",s1);

typedef struct _NSRange {
     NSUInteger location;
     NSUInteger length;
     } NSRange;
NSMakeRange 的函数

 1.  着力使用:

CGSize的原型

    NSMutableString * mutableString1 = [NSMutableString stringWithFormat:@"test"];
    //拼接字符串
    [mutableString1 appendString:@"append str"];

    //删除
    NSRange range = [mutableString1 rangeOfString:@"test"];
    [mutableString1 deleteCharactersInRange:range];
    NSLog(@"%@",mutableString1);

//NSRange表示的是限制
  NSRange  range;
  range.location = 18;
  range.length = 34;
 
  NSLog(@”location is %zi”,range.location);
  NSLog(@”length is %zi”,range.length);
 
  //快捷创造
  range = NSMakeRange(8, 10);
  NSLog(@”location is %zi”,range.location);
  NSLog(@”length is %zi”,range.length);
 
  //NSStringFromRange将上边的结构体转化成字符串类型,打字与印刷出来
 
  NSString* str1 =
NSStringFromRange(range);
 
  //%@是四个OC对象,range代表的是多少个结构体,str是多少个OC对象
  NSLog(@”rang is %@”,str1);
2  NSPoint

3.NSArray 和 NSMutableArray

NSSize size;
   
  size.width = 100;
  size.height = 12;
  size = NSMakeSize(12, 12);
  size = CGSizeMake(11, 11);
 
  NSString* str3 =
NSStringFromSize(size);
  NSLog(@”%@”,str3);
4 CGRect

    //创建字符串
    NSString *s1 = @"test";
    NSString *s2 = [[NSString alloc]initWithFormat:@"test is %c",'c'];

    //此方法可以将c语言字符串转化为OC字符串
    NSString *s3 = [[NSString alloc]initWithUTF8String:"name"];

    //OC字符串转化为C语言字符串
    const char *cs = [s3 UTF8String];

    NSString *s4 = [[NSString alloc] initWithContentsOfFile:@"/Users/lpmac/Desktop/my.text" encoding:NSUTF8StringEncoding error:nil];
    [NSString stringWithContentsOfFile:@"/Users/lpmac/Desktop/my.text" encoding:NSUTF8StringEncoding error:nil];



    NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/lpmac/Desktop/my.text"];
    //类方法
    [NSURL URLWithString:@"file:///Users/lpmac/Desktop/my.text"];

    NSString *s5 = [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
     //类方法
    [NSString stringWithContentsOfFile:@"file:///Users/lpmac/Desktop/my.text" encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@",s5);

CGRect的原型