Crash stattfindet, weil "CALayer Grenzen enthält NaN: [nan 0; nan 15.1]"
Bekomme ich folgenden crash:
CALayerInvalidGeometry CALayerInvalidGeometry
CALayer bounds contains NaN: [nan 0; nan 15.1]
in der letzten Zeile dieses code:
CGRect bounds = self.bounds;
bounds.size = CGSizeMake(fabsf(self.width), self.height);
self.bounds = bounds;
wo selbst.Breite ist abgeleitet von einem pan gesture recognizer:
CGPoint panGestureRecognizerTranslationPoint = [panGestureRecognizer translationInView:panGestureRecognizer.view.superview.superview];
CGPoint rotatedPanGestureRecognizerTranslationPoint = CGPointApplyAffineTransform(panGestureRecognizerTranslationPoint, CGAffineTransformMakeRotation(-self.angle));
self.width += rotatedPanGestureRecognizerTranslationPoint.x;
Die eine gemeinsamkeit, wenn ich dieser Absturz ist in der Fehlermeldung, es ist immer [nan 0; gefolgt von etwas. Wer weiß, was könnte die Ursache sein?
Haben Sie sich die Größe und Breite Variablen? Welcher Datentyp sind Sie?
Sie sind beide CGFloat. Nein, ich habe nicht melden Sie, dies ist ein crash-Bericht von einem Benutzer also nicht sicher, welche Werte wurden den Absturz verursacht.
siehe Kommentare auf Wain Antwort. Er fragte etwas.
vielen Dank für das heads-up, ich reagierte auf ihn.
Sie sind beide CGFloat. Nein, ich habe nicht melden Sie, dies ist ein crash-Bericht von einem Benutzer also nicht sicher, welche Werte wurden den Absturz verursacht.
siehe Kommentare auf Wain Antwort. Er fragte etwas.
vielen Dank für das heads-up, ich reagierte auf ihn.
InformationsquelleAutor Ser Pounce | 2014-01-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies bedeutet, dass die
x
Lage der Grenzen und diewidth
sind beide nicht zahlen. Das könnte bedeuten negative Werte, oder es könnte eine Division durch null Problem geben.nan
der Breite könnte eventuell auch eine sehr große Breite, die nicht unterstützt werden können (obwohl, die sollte führen zu anderen Fehlermeldungen).Diese Art der Sache wird oft die Folge von Transformationen angewendet, entweder, um die Werte zu schaffen, die
bounds
oder, um die Ansicht /Ebene, auf die die Grenzen angewendet werden (wie das ändern der angewendetenbounds
zu bestimmen, dieframe
).Aus der Drehung verwandelt, seien Sie vorsichtig mit der
anchorPoint
.Wenn Sie mit Ansicht /Schicht verwandelt, zurücksetzen der Transformation zu
identity
bevor Sie änderungen an derframe
.fabsf(self.width)
. dann ist, wie es passieren negativer Wert?Hmm, verpaßt, sind Sie beim anwenden einer Transformation, um die Ansicht / Schicht irgendwo anders im code?
Ja, ich bin, ich bin dabei: selbst.transform = CGAffineTransformMakeRotation(selbst.Winkel); . Diese Codezeile tritt nach der Zeile, wo der Absturz Auftritt.
Ein negativer Wert ist nicht NaN. Division durch null ist das häufigste problem.
InformationsquelleAutor Wain
Jungs! Mein Fall war das nicht so, aber in der Nähe. Ich habe Nan-Werte im Rahmen rect, wenn ich versuche zu machen UIimageView.
Nach einigen Recherchen habe ich herausgefunden, dass ich die Initialisierung frame aus dem nichts - ich gebundenen Rahmen auf UIimage Größe, aber nicht überprüfen, wenn das Bild nicht nil ist. Also, warum Nan-Werte erschien in meinem Fall.
Prüfen Sie, ob Sie alle Werte korrekt, bevor Sie erstellen-Rahmen aus.
InformationsquelleAutor user2557885
in meinem Fall, dass ich vergaß hinzuzufügen, Bilder in mein Projekt und Laufzeit ich habe versucht, verwenden Sie diese Bilder durch Ihren Namen deshalb bekam ich diese Fehlermeldung.
Sein mittlerweile gelöst, nachdem platziert die Bilder im Projekt.
Hoffe, dieser Tipp hilft auch anderen.
InformationsquelleAutor Muhammad Rizwan
Können Sie die
CG_NUMERICS_SHOW_BACKTRACE
Umwelt-Variablen in Xcode ausführen Schema und es wird dump der stacktrace verursacht die nicht-numerischen Wert zu kommen.Ab dort untersuchen, warum es passiert und Wache gegen es.
InformationsquelleAutor iwasrobbed
Ich weiß, Sie haben bereits gefunden, das problem aber für diejenigen, die vor dem gleichen problem :
Ich hatte das gleiche problem. Mein code war:
Wenn ich öffnen Sie die Ansicht für das erste und zweite mal hat alles gut funktioniert. Aber in der Dritten versuchen Sie, auf die, wie
[_imageView setFrame:rect]
ich hatteCALayer bounds contains NaN
Also habe ich manuell Hinzugefügtx
undy
für meinerect
:Also es funktioniert jetzt gut.
InformationsquelleAutor Rudi
Einen der folgenden codes hatte mir geholfen, in meinem Fall.
Stellen Sie bitte sicher, dass Ihre CGRect und andere Kind von UIView Größe, die übergeben werden, funktioniert richtig und haben die richtigen Werte. und vergessen Sie nicht, schalten Sie Ihre Ausnahme-debugging-Modi auf.
InformationsquelleAutor hajunho