NSValueにするCGPointの変換
-
12-09-2019 - |
質問
CABasicAnimation.fromValue
で、私はので、私はCGPoint
NSValue
を使用しますが、デバイスモードまたはシミュレータ1で動作していない「クラス」にvalueWithPoint
を変換したいです...
デバイスまたはシミュレータであればNSMakePoint
またはCGPointMake
を使用する必要があります。
解決
関数を定義
UIKit
にNSValue
添加はあり
+ (NSValue *)valueWithCGPoint:(CGPoint)point
<のhref = "https://developer.apple.com/library/prerelease/ios/documentation/Cocoa/Reference/Foundation/Classes/NSValue_Class/#//apple_ref/occ/clm/NSValue/valueWithCGPointを参照してください。 noreferrer " "= REL"> 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
スウィフトでは、このような値を変更することができます
var pointValueare = CGPointMake(30,30)
NSValue(CGPoint: pointValueare)
&(するCGPoint) - >するCGPointを参照(アドレス)を取得 (NSPoint *)&(するCGPoint) - > NSPointポインタへの参照をキャスト *(NSPoint )の(するCGPoint) - > NSPointポインタは
戻り値の型を幸せにするためにNSPointを返すようにすることを逆参照スイフトの静的メソッドは、初期化子の方法に変更されます:
var pointValue = CGPointMake(10,10)
NSValue(CGPoint: pointValue)
を使用すると、Xcodeの(ポスト2015)の最近っぽいバージョンを使用している場合は、このための現代のObjective-Cの構文を採用することができます。あなただけの@()
であなたのするCGPointをラップする必要があります:
CGPoint primitivePoint = CGPointMake(4, 6);
NSValue *wrappedPoint = @(primitivePoint);
ボンネットの下に、コンパイラはあなたのため+[NSValue valueWithCGPoint:]
を呼び出します。
「変換」としてそれについて考えてはいけない、あなたのpoint-- NSValueはNSPointのような原始的な構造体を保持しているラッパークラスです。とにかく、ここであなたが必要とする機能です。それはココアの一部ではなく、ココアタッチです。あなたは、あなたのプロジェクトに全体の機能を追加、またはちょうどあなたがそれを必要な場所に同じ変換を行うことができます。
NSPoint NSPointFromCGPoint(CGPoint cgpoint) {
return (*(NSPoint *)&(cgpoint));
}