質問

CABasicAnimation.fromValueで、私はので、私はCGPoint NSValueを使用しますが、デバイスモードまたはシミュレータ1で動作していない「クラス」にvalueWithPointを変換したいです... デバイスまたはシミュレータであればNSMakePointまたはCGPointMakeを使用する必要があります。

役に立ちましたか?

解決

関数を定義UIKitNSValue添加はあり
+ (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:]を呼び出します。

ます。https://開発.apple.com /ライブラリ/アーカイブ/リリースノート/ ObjectiveC / ModernizationObjC / AdoptingModernObjective-C / AdoptingModernObjective-C.htmlする

「変換」としてそれについて考えてはいけない、あなたのpoint-- NSValueはNSPointのような原始的な構造体を保持しているラッパークラスです。とにかく、ここであなたが必要とする機能です。それはココアの一部ではなく、ココアタッチです。あなたは、あなたのプロジェクトに全体の機能を追加、またはちょうどあなたがそれを必要な場所に同じ変換を行うことができます。

NSPoint NSPointFromCGPoint(CGPoint cgpoint) {
   return (*(NSPoint *)&(cgpoint));
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top