NSRect 位置和尺寸

前言

  • NSRect:结构体,这个结构体用来表示事物的坐标点和宽高度。

    • Objective-C

      1
      2
      3
      4
      5
      6
      7
      8
      typedef CGRect NSRect;

      struct CGRect {
      CGPoint origin;
      CGSize size;
      };

      typedef struct CGRect CGRect;
    • Swift

      1
      2
      3
      4
      5
      6
      7
      8
      public typealias NSRect = CGRect

      public struct CGRect {
      public var origin: CGPoint
      public var size: CGSize
      public init()
      public init(origin: CGPoint, size: CGSize)
      }

1、NSRect 结构体变量的创建与调用

  • Objective-C

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    // NSRect 结构体变量的创建与赋值

    // 先定义变量,再赋值
    NSRect rect1;
    rect1.origin.x = 6;
    rect1.origin.y = 1;
    rect1.size.width = 1;
    rect1.size.height = 6;

    // 定义时直接赋值,或者 NSRect rect2 = {{7, 2}, {2, 7}};
    NSRect rect2 = {7, 2, 2, 7};

    // 给指定成员赋值
    NSRect rect3 = {.size.height = 8, .size.width = 3, .origin.y = 3, .origin.x = 8};

    // 使用函数赋值
    NSRect rect4 = NSMakeRect(9, 4, 4, 9);

    // 使用等价的结构体定义,等价于 CGRect rect5 = CGRectMake(10, 5, 5, 10);
    NSRect rect5 = CGRectMake(10, 5, 5, 10);

    // NSRect 结构体变量值的调用

    NSLog(@"rect1: %.0f, %.0f, %.0f, %.0f", rect1.origin.x, rect1.origin.y, rect1.size.width, rect1.size.height);
    NSLog(@"rect2: %.0f, %.0f, %.0f, %.0f", rect2.origin.x, rect2.origin.y, rect2.size.width, rect2.size.height);
    NSLog(@"rect3: %.0f, %.0f, %.0f, %.0f", rect3.origin.x, rect3.origin.y, rect3.size.width, rect3.size.height);
    NSLog(@"rect4: %.0f, %.0f, %.0f, %.0f", rect4.origin.x, rect4.origin.y, rect4.size.width, rect4.size.height);
    NSLog(@"rect5: %.0f, %.0f, %.0f, %.0f", rect5.origin.x, rect5.origin.y, rect5.size.width, rect5.size.height);
  • Swift

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    // NSRect 结构体变量的创建与赋值

    // 先定义变量,再赋值
    var rect1: NSRect = NSRect()
    rect1.origin.x = 6;
    rect1.origin.y = 1;
    rect1.size.width = 1;
    rect1.size.height = 6;

    // Int 型值
    let rect2: NSRect = NSRect(x: 1, y: 2, width: 5, height: 6)

    // Double 型值
    let rect3: NSRect = NSRect(x: 2.1, y: 3.2, width: 6.3, height: 7.4)

    // CGFloat 型值
    let rect4: NSRect = NSRect(x: 3.1, y: 4.2, width: 7.3, height: 8.4)

    // 由方法创建
    let rect5: NSRect = NSMakeRect(4.1, 5.2, 6.3, 7.4)

    // 由方法创建
    let rect6: NSRect = CGRectMake(5.1, 6.2, 7.3, 8.4)

    // NSRect 结构体变量值的调用

    print("\(rect1.origin.x), \(rect1.origin.y), \(rect1.size.width), \(rect1.size.height)")

2、NSRect 与 NSString 的相互转换

  • Objective-C

    1
    2
    3
    4
    5
    // NSRect 转 NSString
    NSString *stringFronRect = NSStringFromRect(rect5);

    // NSString 转 NSRect
    NSRect rect6 = NSRectFromString(stringFronRect);
  • Swift

    1
    2
    3
    4
    5
    6
    7
    let rect1: NSRect = NSMakeRect(4.1, 5.2, 6.3, 7.4)

    // NSRect 转 String
    let string: String = NSStringFromRect(rect1);

    // String 转 NSRect
    let rect: NSRect = NSRectFromString(string);
文章目录
  1. 1. 前言
  2. 2. 1、NSRect 结构体变量的创建与调用
  3. 3. 2、NSRect 与 NSString 的相互转换
隐藏目录