Verschieben von Ansichten mit Einschränkungen
Habe ich ein paar Ansichten aus meiner Sicht-controller, die sich bewegen, wenn ein up streichen Sie erkannt wird, dann nach unten, wenn eine nach unten streichen erkannt wird. Ich Zwang den Blick zu bewegen, durch die Anpassung der y-Ursprung mit CGRectOffset. Ich habe jetzt angewendet Einschränkungen, um meine Ansichten mit IB und ich bin mir nicht sicher, was ist der beste Weg, um sich die Ansichten so, dass Sie am Ende in der richtigen position auf das iphone 5, 6, und 6+.
Zurzeit mache ich so etwas wie dieses:
[self.view layoutIfNeeded];
self.panFrameVerticalConstraint.constant = self.panFrameVerticalConstraint.constant +338;
[UIView animateWithDuration:5
animations:^{
[self.view layoutIfNeeded];
}];
Ist es besser, ändern Sie die Konstanten mithilfe der Verhältnisse? Also für die Einschränkung vor, anstelle der Verwendung von 338, wäre es besser, dies zu tun:
self.panFrameVerticalConstraint.constant = self.panFrameVerticalConstraint.constant + (self.panView.frame.size.height/1.680);
//self.panView.frame.size.height = 568
//(568/1.680) = 338
- Werfen Sie einen Blick auf diese - stackoverflow.com/questions/26667006/...
- darf ich Fragen, wie Sie umgesetzt streichen Sie nach oben/unten-gesten zu bewegen, Ihre Ansichten? Ich bin versucht, etwas ähnliches tun, aber nicht wissen, wo zu beginnen. Dank
- Ich habe es ziemlich genau die Schritte in der Antwort unten. Ich habe eine
IBOutlet
NSLayoutConstraint
Eigenschaft angeschlossen und es um die Einschränkung wollte ich einstellen im interface builder. Dann, wenn ich brauchte, um meine Sicht, ich änderte meine Konstante, wie diesself.panFrameVerticalConstraint.constant = -(self.panedView.frame.size.height/1.68);
. Ich rieflayoutIfNeeded
vor dem Wechsel die Konstante. Nach änderung der Konstanten, die ich genanntanimateWithDuration
und rieflayoutIfNeeded
wieder in den block, wie die Antwort unten. - Ich entschuldige mich, ich bin immer noch lernen, aber wie hast du erkannt das wischen nach oben von der UIView Sie nach oben verschieben möchten, um die animation?
- In
viewDidLoad
müssen Sie einenUISwipeGestureRecognizer
und die Methode, die aufgerufen wird, wenn ein swipe erkannt wird.UISwipeGestureRecognizer * swipeUpRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleUpSwipe:)];
Fügen Sie dann die gestik-Erkennung, um was auch immer Rahmen ist wohl zu erkennen, das streichen[self.someView addGestureRecognizer:swipeUpRec];
- ich danke Euch so sehr für Eure Geduld und Hilfe! Merry xmas 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, kein Problem, wenn Sie ändern Sie die Konstanten. Die Sache hier ist, dass Sie haben, um Ihre Einschränkung entsprechend.
Betrachten wir ein Beispiel.
Ich habe eine
UIView
im Storyboard, und das möchte ich ändern dessen Breite. Seine Standardbreite1024
.Nach einiger animation, werden Wir es ändern Breite zu
900
.Folgen Sie unten aufgeführten Schritte, um dies zu erreichen:
UIView
wollen wir update-Zwänge. Hier müssen wir aktualisierenwidth
, So werden wir hinzufügen, eine Einschränkung für die Breite.UIView
.Erstellen Sie nun eine
IBOutlet
variable fürNSLayoutConstraint
und verbinden Sie es mit den oben Breite Einschränkung.Ändern Konstante Breite
Swift 5.0
Objective C
UIView.animateWithDuration
block. Sie können die Einschränkung, bevor die animation-block und rufen SielayoutIfNeeded
im block.