3 Stimmen

Leistungsunterschied zwischen der Einstellung frame.origin und CGAffineTransformMakeTranslation

Ich habe eine Grid-ähnliche Thumbnail-Scroll-Ansicht, wo ich erstens alle Thumbnails initialisieren und dann seinen Rahmen mit setzen:

thumbnail.frame = CGRectMake(0, 0, 100, 100);

dann später willAnimateRotationToInterfaceOrientation , die Positionierung dieser Miniaturbilder mit:

thumbnail.transform = CGAffineTransformMakeTranslation(posX, posY);

obwohl bei der Überprüfung der Position nach der obigen Methode:

NSLog(@"thumbnail frame x: %f", thumbnail.frame.origin.x);

wird die Position einschließlich der durchgeführten Transformation zurückgegeben und nicht 0,0

Gibt es einen wirklichen Vorteil bei der Verwendung von transform stattdessen wird eine neue frame für eine UIView als Zweck der Neupositionierung?

1voto

SVGreg Punkte 2270

Der Hauptvorteil ist, dass Sie mehr Arten von Affinen Transformationen verwenden können, wie

  • CGAffineTransformTranslate
  • CGAffineTransformScale
  • CGAffineTransformRotate
  • CGAffineTransformInvert
  • CGAffineTransformConcat

aber frame struct setzt nur den Rahmen.

Sonstige Anmerkungen:

1) Aus Leistungsgründen unter der Annahme, dass CGAffineTransformMakeTranslation(posX, posY) nur Änderungen center Eigenschaft sollte es schneller gehen als die Änderung der frame Eigentum, aber wer weiß. Also für die Neupositionierung würde ich diesen Weg oder die Änderung der center Eigentum.

2) Im Gegensatz zu CALayer 's transform die UIView 's transform ändert die tatsächliche Position der Ansicht.

0voto

Die Verwendung der Translations-Transformation verschiebt (übersetzt) die Ansicht in der transformierten Perspektive. Das heißt, wenn Sie die Ansicht zuerst drehen und dann verschieben, bewegt sie sich in die Richtung, in die sie gedreht wurde. Für eine einfache Neuordnung würde ich vorschlagen, die center Eigenschaft. Auf diese Weise können Sie weiterhin die frame Eigenschaft auf sinnvolle Weise.

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