19 Stimmen

Umwandlung eines CGPoint in einen NSValue

Unter CABasicAnimation.fromValue Ich möchte eine CGPoint einer "Klasse" zuzuordnen, also habe ich NSValue valueWithPoint aber im Gerätemodus oder Simulator funktioniert es nicht... brauchen zu verwenden NSMakePoint o CGPointMake wenn im Gerät oder Simulator.

53voto

ashcatch Punkte 2287

Es gibt eine UIKit zusätzlich zu NSValue die eine Funktion definiert

+ (NSValue *)valueWithCGPoint:(CGPoint)point

Voir iPhone-Doku

13voto

DanSkeel Punkte 3653

@ashcatch 's Antwort ist sehr hilfreich, aber bedenken Sie, dass diese Methoden von Zusatzwerte kopieren, wenn native NSValue Methoden speichern Zeiger! Hier ist mein Code, der dies überprüft:

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

aquí newPoint.x = 2; point.x = 10


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

aquí newPoint.x = 10; point.x = 10

3voto

Sk Rejabul Punkte 33

In Swift können Sie einen Wert wie folgt ändern:

    var pointValueare = CGPointMake(30,30)
    NSValue(CGPoint: pointValueare)

1voto

user738872 Punkte 11

&(cgpoint) -> liefert einen Verweis (Adresse) auf cgpoint (NSPoint *)&(cgpoint) -> überträgt diese Referenz auf einen NSPoint-Zeiger *(NSPoint ) (cgpoint) -> dereferenziert diesen NSPoint-Zeiger, um einen NSPoint zurückzugeben, damit der Rückgabetyp stimmt

1voto

Antoine Punkte 22558

In Swift wird die statische Methode in eine Initialisierungsmethode umgewandelt:

var pointValue = CGPointMake(10,10)
NSValue(CGPoint: pointValue)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X