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.

0voto

Guillaume Algis Punkte 10486

Wenn Sie eine neuere Version von Xcode (nach 2015) verwenden, können Sie dafür die moderne Objective-C-Syntax verwenden. Sie müssen lediglich Ihren CGPoint in @() :

CGPoint primitivePoint = CGPointMake(4, 6);
NSValue *wrappedPoint = @(primitivePoint);

Unter der Haube ruft der Compiler +[NSValue valueWithCGPoint:] für Sie.

https://developer.apple.com/library/archive/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html

-2voto

Marc Charbonneau Punkte 40221

Betrachten Sie es nicht als "Umwandlung" Ihres Punktes - NSValue ist eine Wrapper-Klasse, die primitive Strukturen wie NSPoint enthält. Wie auch immer, hier ist die Funktion, die Sie brauchen. Sie ist Teil von Cocoa, aber nicht von Cocoa Touch. Sie können die gesamte Funktion zu Ihrem Projekt hinzufügen, oder einfach die gleiche Umwandlung, wo immer Sie es brauchen.

NSPoint NSPointFromCGPoint(CGPoint cgpoint) {
   return (*(NSPoint *)&(cgpoint));
}

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