代码之家  ›  专栏  ›  技术社区  ›  CiNN

将CGPoint转换为NSValue

  •  19
  • CiNN  · 技术社区  · 17 年前

    CABasicAnimation.fromValue 我想兑换一张支票 CGPoint 到一个“类”,所以我用 NSValue valueWithPoint 但在设备模式或模拟器一个是不工作的。。。 NSMakePoint CGPointMake 如果在设备或模拟器中。

    7 回复  |  直到 8 年前
        1
  •  52
  •   Ashish Kakkad Roman Scher    10 年前

    有一个 UIKit 增加 NSValue 它定义了一个函数

    + (NSValue *)valueWithCGPoint:(CGPoint)point
    

    看见 iPhone doc

        2
  •  13
  •   Ashish Kakkad Roman Scher    10 年前

    @ ASHCATER的答案非常有用,但考虑到这些方法是从添加复制值开始的。 NSValue 方法存储指针!下面是我的代码检查它:

    CGPoint point = CGPointMake(2, 4);
    NSValue *val = [NSValue valueWithCGPoint:point];
    point.x = 10;
    CGPoint newPoint = [val CGPointValue];
    

    在这里 newPoint.x = 2; point.x = 10


    CGPoint point = CGPointMake(2, 4);
    NSValue *val = [NSValue valueWithPointer:&point];
    point.x = 10;
    CGPoint *newPoint = [val pointerValue];
    

    在这里 newPoint.x = 10; point.x = 10

        3
  •  3
  •   Sk Rejabul    11 年前

        var pointValueare = CGPointMake(30,30)
        NSValue(CGPoint: pointValueare)
    
        4
  •  1
  •   user738872    15 年前

    &(cgpoint)>获取cgpoint的引用(地址) ) (cgpoint)>取消对NSPoint指针的引用以返回NSPoint以使返回类型满意

        5
  •  1
  •   Antoine    11 年前

    在Swift中,静态方法更改为初始化器方法:

    var pointValue = CGPointMake(10,10)
    NSValue(CGPoint: pointValue)
    
        6
  •  0
  •   Guillaume Algis    7 年前

    如果您使用的是最新版本的Xcode(2015年后),那么可以采用现代Objective-C语法。你只需要把你的观点总结一下 @()

    CGPoint primitivePoint = CGPointMake(4, 6);
    NSValue *wrappedPoint = @(primitivePoint);
    

    编译器将在后台调用 +[NSValue valueWithCGPoint:] 为你。

    https://developer.apple.com/library/archive/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html

        7
  •  -2
  •   Marc Charbonneau    17 年前

    NSPoint NSPointFromCGPoint(CGPoint cgpoint) {
       return (*(NSPoint *)&(cgpoint));
    }