在CABasicAnimation.fromValue
我想将 a 转换CGPoint
为“类”,所以我使用NSValue
valueWithPoint
但在设备模式或模拟器中一个不工作......需要使用NSMakePoint
或者CGPointMake
如果在设备或模拟器中。
问问题
21758 次
7 回答
52
于 2009-04-21T15:24:28.207 回答
13
@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
于 2012-06-19T17:52:29.193 回答
3
在 Swift 中,你可以像这样改变一个值:
var pointValueare = CGPointMake(30,30)
NSValue(CGPoint: pointValueare)
于 2015-04-25T05:47:33.263 回答
1
&(cgpoint) -> 获取对 cgpoint (NSPoint *)&(cgpoint) 的引用(地址) -> 将该引用转换为 NSPoint 指针 *(NSPoint ) (cgpoint) -> 取消引用该 NSPoint 指针以返回一个 NSPoint返回类型快乐
于 2011-05-04T21:56:59.803 回答
1
在 Swift 中,静态方法更改为初始化方法:
var pointValue = CGPointMake(10,10)
NSValue(CGPoint: pointValue)
于 2015-04-17T13:26:13.573 回答
0
如果您使用的是最新版本的 Xcode(2015 年后),您可以为此采用现代的 Objective-C 语法。您只需将 CGPoint 包装在@()
:
CGPoint primitivePoint = CGPointMake(4, 6);
NSValue *wrappedPoint = @(primitivePoint);
在引擎盖下,编译器会+[NSValue valueWithCGPoint:]
为您调用。
于 2019-02-21T17:08:11.257 回答
-2
不要认为它是“转换”你的观点——NSValue 是一个包装类,它包含像 NSPoint 这样的原始结构。无论如何,这是您需要的功能。它是 Cocoa 的一部分,但不是 Cocoa Touch。您可以将整个函数添加到您的项目中,或者在需要的地方进行相同的转换。
NSPoint NSPointFromCGPoint(CGPoint cgpoint) {
return (*(NSPoint *)&(cgpoint));
}
于 2009-04-21T15:12:46.037 回答