zoukankan      html  css  js  c++  java
  • Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect

    本节要点:红色标记 需要记下来

    1   NSRange

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

    NS_INLINEz是内联函数
     
      typedef NSRange *NSRangePointer;
     
      NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
      NSRange r;
      r.location = loc;
      r.length = len;
      return r;
      }
    使用方法

    //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

    NSPoint的原型

    struct CGPoint {
         CGFloat x;
         CGFloat y;
         };
    NSMakePoint函数

    NS_INLINE NSPoint NSMakePoint(CGFloat x, CGFloat y) {
      NSPoint p;
      p.x = x;
      p.y = y;
      return p;
      }
    CGPointMake函数

    CGPointMake(CGFloat x, CGFloat y)
         {
         CGPoint p; p.x = x; p.y = y; return p;
         }
    使用方法

    //NSPoint指的是位置
      NSPoint point;
     
      //给结构体里面的点进行赋值
      point.x = 10;
      point.y = 10;
     
      //快速创建点
      point = NSMakePoint(10, 18);
     
      //常见的是CGPointMake创建点的函数
      point = CGPointMake(29, 78);
      NSString* str2 = NSStringFromPoint(point);
      NSLog(@"point is %@",str2);
    3  CGSize

    CGSize的原型

    struct CGSize {
         CGFloat width;
         CGFloat height;
         };
    NSMakeSize函数

    NS_INLINE NSSize NSMakeSize(CGFloat w, CGFloat h) {
      NSSize s;
      s.width = w;
      s.height = h;
      return s;
      }
    CGSizeMake函数

    CGSizeMake(CGFloat width, CGFloat height)
         {
         CGSize size; size.width = width; size.height = height; return size;
         }
    使用方法

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

    CGRect的原型

    struct CGRect {
         CGPoint origin;
         CGSize size;
         };
    CGRectMake的函数

    CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
      {
      CGRect rect;
      rect.origin.x = x; rect.origin.y = y;
      rect.size.width = width; rect.size.height = height;
      return rect;
      }
    NSMakeRect函数

    NS_INLINE NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) {
      NSRect r;
      r.origin.x = x;
      r.origin.y = y;
      r.size.width = w;
      r.size.height = h;
      return r;
      }
    使用方法

    //既包含了尺寸大小和位置
      NSRect rect;
      rect.origin.x = 12;
      rect.origin.y = 14;
      rect.size.width = 12;
      rect.size.height = 15;
     
      //快速创建方法
      rect = CGRectMake(12, 12, 12, 12);
      rect = NSMakeRect(11, 11, 11, 11);
     
      //转化成字符串打印出来
      NSString* str5 = NSStringFromRect(rect);
      NSLog(@"rect is %@",str5);

     
     
     
     
  • 相关阅读:
    Maximum Depth of Binary Tree
    Single Number
    Merge Two Sorted Lists
    Remove Nth Node From End of List
    Remove Element
    Remove Duplicates from Sorted List
    Add Two Numbers
    编译视频直播点播平台EasyDSS数据排序使用Go 语言 slice 类型排序的实现介绍
    RTMP协议视频直播点播平台EasyDSS在Linux系统中以服务启动报错can’t evaluate field RootPath in type*struct排查
    【解决方案】5G时代RTMP推流服务器/互联网直播点播平台EasyDSS实现360°全景摄像机VR直播
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/4691919.html
Copyright © 2011-2022 走看看