iPhone: Positionierung zu einem Punkt auf einem Bild von jeder Skala (Transformation) Ebene

StackOverflow https://stackoverflow.com/questions/551083

  •  23-08-2019
  •  | 
  •  

Frage

Ich habe eine einfache UIImageView mit einem Bild, das größer als der Anzeige ist (600x1400). Das Bild beginnt mit Fit zu Aspect, so dass die Grenzen des UIImgageView Bericht 320x750, noch größer als der Anzeige, aber das ist OK. Ich weiß von einem Punkt (300, 150) relativ zu den ursprünglichen Abmessungen des Bildes (600x1400), die ich skalieren und Position will. Wenn ich Setup eine grundlegende Animation die Position und Skalierung (Zoom, Transformation) über Kern Animation zu handhaben, geschieht die Waage, aber ich habe nie an dem Punkt am Ende ich will. Stattdessen scheint es ich um den Punkt zu berechnen haben auf der Grundlage der Waage ich auf einmal umgewandelt werden.

Gibt es etwas offensichtlich fehle ich? Ich habe versucht mit convertPoint. Toview, aber es gibt immer den gleichen Punkt, den ich es nur gab

War es hilfreich?

Lösung

Ja, wenn Sie den Ursprung einer Ansicht setzen Sie es in dem Koordinatenraum des Superview setzen. Der Super weiß nichts von der Skala der Subview, wenn Sie also auf eine Koordinate in Bezug auf die skalierte Größe des Bildes bewegen müssen, werden Sie benötigen, um Ihre Koordinaten zu passen zu skalieren. Die Mathematik zu tun dies ist trivial, aber man kann die CGPointApplyAffineTransform () Funktion verwenden, um einen CGAffineTransform zu nehmen, die Sie verwendet haben, können Sie Ihre UIImageView über seine Eigenschaft trans zu skalieren und es auf eine Koordinate. (Denken Sie auch daran, dass die Koordinate 0,0 in der oberen linken Ecke ist auf dem iPhone.) Ich bin nicht sicher, ob die UIImageView Einstellung maßstabs zu passen die Skalierung über seine Eigenschaft trans tun oder nicht, aber Sie können leicht konstruieren eine affine Transformation die aktuelle Skala Ihrer Ansicht entsprechen.

Aber ich würde vorschlagen, dass Sie Ihr Bild auf eine kleinere Auflösung Resampling Speicher zu sparen und die Leistung zu verbessern. 600x1400 ist ein recht großes Bild auf dem iPhone zu werfen um werden. Dieser Beitrag einige Tipps für hat, wie UIImages skalieren. Wenn Sie einen bekannten Skalierungsfaktor auf Ihr Bild anwenden, können Sie einfach anzuwenden, dass der Skalierungsfaktor auf die X- und Y-Komponenten Ihres gewünschten koordinieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top