• Foundation框架 ---- 结构体


    一.基本定义

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

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

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

          表示坐标         NSPointCGPoint

          表示UI元素的大小    NSSizeCGSize

          表示UI元素的位置和大小 NSRectCGRect (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  NSPointCGPoint   NSMakePoint(x , y );

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

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

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

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

         

    2.3  NSSizeCGSize  定义控件的尺寸  CGSizeMake(width , height);

        NSSize s1 = CGSizeMake(100, 50);

        NSSize s2 = NSMakeSize(100, 50);

        CGSize s3 = NSMakeSize(200, 60);

     

    2.4 NSRectCGRect (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轴 

        

    可以选择,但是别选择放弃
  • 相关阅读:
    JavaScript中的闭包
    正则表达式(括号)、[中括号]、{大括号}的区别
    写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串
    正则替换实现字符串链接每4位用“-”连接成新的字符串
    memcache搭建
    MySQL优化
    网络优化
    JDK配置及tomcat部署
    oracle中增加pga和sga
    sudo用法
  • 原文地址:https://www.cnblogs.com/hangdada/p/4985619.html
Copyright © 2020-2023  润新知