f(sixleaves) = sixleaves

重剑无锋 大巧不工

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  95 随笔 :: 0 文章 :: 7 评论 :: 0 Trackbacks
OC中常用的结构体有NSRange、(NSPoint、NSSize、NSRect)后面三个由于开发中,为了跨平台的原因。
一般都用CGPoint、CGSize、CGRect代替。所以我们主要介绍和掌握NSRange、CGPoint、CGSize、CGRect
即可。(在OC中NSPoint、NSSize、NSRect其实是对应CG类型的typedef,也就是说他们是等价的)。

  1 #import <Foundation/Foundation.h>
  2 
  3 int main(int argc, const char * argv[]) {
  4 /*
  5  NSRange {location, length};
  6  NSPoint {} \ CGPoint
  7  NSSize {} \ CGSize
  8  NSRect {} \ CGRect
  9  
 10  NSPoint、NSSize、NSRect都是对应的
 11  CGPoint、CGSize、CGRect的typedef
 12  所以以上这三个于其对应的都一样。
 13  */
 14     
 15     NSRange r1 = {2, 4}; // 不用,表达不清楚
 16     NSRange r2 = {.location = 2, .length = 4}; // 不用,太冗余
 17     
 18     // 一般用这个, 因为函数的参数有说明参数的意思。
 19     NSRange r3 = NSMakeRange(2, 4);
 20     /*
 21          NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
 22              NSRange r;
 23              r.location = loc;
 24              r.length = len;
 25              return r;
 26          }
 27      */
 28     
 29     NSString *str = @"i love oc";
 30     // 查找某个字符串在Str中的范围
 31     // 如果找不到, length = 0, location = NSNotFound = -1
 32     NSRange loveRange = [str rangeOfString:@"love"];
 33     NSLog(@"loc = %ld, len = %ld", loveRange.location, loveRange.length);
 34     
 35     
 36     /*
 37      struct CGPoint {
 38         CGFloat x; // CGFloat ~~~ double
 39         CGFloat y;
 40      };
 41      
 42      struct CGSize {
 43         CGFloat width; // 宽
 44         CGFloat height; // 高
 45      };
 46      
 47      struct CGRect {
 48         CGPoint origin; // 左上角的点位置
 49         CGSize size;    // 长、宽
 50      };
 51      */
 52     /*
 53         总结:
 54             开发中一般都用CGPoint、CGSize、CGRect, 因为这些是跨平台的。
 55             创建CG结构体的函数都是结构体函数名开头 + Make
 56             
 57             CGFloat等效于double类型。CGPoint用来表示一个点
 58             CGSize用来表示大小的宽高。
 59             CGRect是由CGPoint、CGSize组成,表示一个矩形。
 60      
 61      */
 62     
 63     CGRect r = CGRectMake(0, 0, 100, 50); // 前两个构成CGPoint, 后两个构成CGSize
 64     /*
 65      CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
 66      {
 67          CGRect rect;
 68          rect.origin.x = x; 
 69          rect.origin.y = y;
 70          rect.size.width = width; 
 71          rect.size.height = height;
 72          return rect;
 73      }
 74      
 75      */
 76     
 77     
 78     // 快速返回结构体内部的成员值。
 79     /*
 80         NSStringFromRange
 81         NSStringFromPoint
 82         NSStringFromSize
 83         NSStringFromRect
 84      */
 85     NSString *str1 = NSStringFromRect(r);
 86     NSLog(@"%@", str1);
 87     
 88     NSString *str2 = NSStringFromRange(r1);
 89     NSLog(@"%@", str2);
 90     return 0;
 91 }
 92 /*
 93  总结:
 94  1.各个结构体的含义
 95     NSRange:表示范围(loc, len)。
 96     CGPoint:表示二维坐标系的一个点
 97     CGSize:表示二维空间的一个大小
 98     CGRect:表示二维空间的一个矩形
 99 
100  2.创建结构体的常用方法:使用函数
101     CG结构体名 + Make
102  
103  3.快速打印结构体的方式
104  NSStringFromRange\NSStringFromPoint\NSStringFromSize\NSStirngFromRect
105  都是返回结构体内部的数据成员用字符串拼接起来。
106  
107  4.CGFloat的本质:double
108  */
posted on 2015-05-13 21:13 swp 阅读(238) 评论(0)  编辑 收藏 引用 所属分类: objective-c

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理