UIImageView verschieben !?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UIImageView verschieben !?

    Hi,

    ich habe jetzt fast den ganzen Tag damit verbracht eine Lösung auf diese finden (ja auch Google und die Forumssuche haben nicht weitergeholfen ) aber ich hoffe das mir hier jemand helfen kann ;(

    Ich sitze grade an einem Projekt wo ein Bild auf ein anderes gezogen werden soll und das obere dann verschwindet. Klappt bisher super ! Nur eine Kleinigkeit stört mich.
    Wenn ich das Bild anklicke und es ziehe, verschiebt sich die Bildmitte auf die Mitte meines Fingers ... genau das möchte ich aber nicht :cursing: ich möchte, das dass Bild sich dort bewegt wo ich es anfasse.

    Hier ist der Code den ich verwende:

    Quellcode

    1. - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    2. UITouch *beruehrung = [[event allTouches] anyObject];
    3. CGPoint beruerungsort = [beruehrung locationInView:beruehrung.view];
    4. if (CGRectContainsPoint([bild frame], beruerungsort)) {
    5. bild.center = beruerungsort;
    6. }



    Achso bitte nicht mit Steinen schmeißen ich bin ziemlich am Anfang mir das Programmieren selbst beizubringen :whistling:
  • Michael schrieb:

    Du musst am Anfang erst einmal die Differenz von der Bildmitte zum Berührungspunkt ermitteln und diese Differenz dann immer bei der Aktualisierung der Bildposition mit einrechnen.



    ich blick doch nicht so ganz durch :huh:

    also die Differenz hab ich jetzt ermittelt und einen CGFloat Wert namens "distanz" hier der Code den ich dazu benutze

    Quellcode

    1. -(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    2. UITouch *touch = [touches anyObject];
    3. CGPoint location = [touch locationInView:self.view];
    4. CGPoint p2 = bild.center;
    5. CGPoint p1 = location;
    6. CGFloat xDist = (p2.x - p1.x);
    7. CGFloat yDist = (p2.y - p1.y);
    8. CGFloat distance = (xDist * xDist) + (yDist * yDist);
    9. if (touch.view == bild){
    10. (CGRectContainsPoint([a frame], location));
    11. bild.center = location;
    12. }
    Alles anzeigen



    wie rechne ich die Distanz bzw. Differenz in die Aktualisierung der Bildposition mit ein?
  • Du denkst viel zu kompliziert.

    In der Methode touchesBegan:withEvent: merkst Du Dir einfach die zwei Werte (Property und so, weißt schon):

    Quellcode

    1. self.deltaX = bild.center.x - location.x;
    2. self.deltaY = bild.center.y - location.y;

    In der Methode touchesMoved:withEvent: addierst Du die beiden Werte dann wieder drauf:

    Quellcode

    1. CGPoint bildCenter;
    2. bildCenter.x = location.x + self.deltaX;
    3. bildCenter.y = location.y + self.deltaY;
    4. bild.center = bildCenter;

    Michael