将CGPoint转换为NSValue

CABasicAnimation.fromValue
我想将
CGPoint
转换为“类”所以我使用
NSValue
valueWithPoint
但在设备模式或模拟器中一个不起作用... 如果在设备或模拟器中,需要使用
NSMakePoint
CGPointMake
。     
已邀请:
NSValue
还有一个
UIKit
,它定义了一个函数
+ (NSValue *)valueWithCGPoint:(CGPoint)point
请参阅iPhone文档     
@ashcatch的回答非常有帮助,但考虑那些方法来自添加复制值,当本机
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
    
在Swift中,您可以更改这样的值:
    var pointValueare = CGPointMake(30,30)
    NSValue(CGPoint: pointValueare)
    
&(cgpoint) - >获取cgpoint的引用(地址) (NSPoint *)&(cgpoint) - >强制转换引用NSPoint指针 *(NSPoint)(cgpoint) - >取消引用NSPoint指针返回一个NSPoint以使返回类型开心     
在Swift中,静态方法更改为初始化方法:
var pointValue = CGPointMake(10,10)
NSValue(CGPoint: pointValue)
    
不要认为它是“转换”你的观点 - NSValue是一个包装类,它包含像NSPoint这样的原始结构。无论如何,这是你需要的功能。它是Cocoa的一部分,但不是Cocoa Touch。您可以将整个功能添加到项目中,也可以在需要的地方进行相同的转换。
NSPoint NSPointFromCGPoint(CGPoint cgpoint) {
   return (*(NSPoint *)&(cgpoint));
}
    

要回复问题请先登录注册