** Ich möchte eine Ansicht mit UIpangesture vertikal nach oben ziehen. Da mein Projekt automatisches Layout enthält, habe ich 4 Layout-Einschränkungen [oben, rechts, unten, links] erstellt und einen Auslass aus der Topspace-Einschränkung erstellt. Wenn die Geste erkannt wird, ist die Konstante von topspaceConstraint in der Lage, die Ansichten orgin Y zu ändern. Der Code funktioniert, aber das Ziehen ist nicht glatt. Wie kann ich es glatt machen **UIView wird nicht reibungslos von UIpangesture gezogen, wenn die automatische Layoutbeschränkung verwendet wird
-(void)gestureAction:(UIPanGestureRecognizer *)gesture
{
CGFloat targetY = 0;
if(gesture.state == UIGestureRecognizerStateBegan)
{
self.panCoord = [gesture locationInView:gesture.view];
}
CGPoint newCoord = [gesture locationInView:gesture.view];
float dY = newCoord.y-self.panCoord.y;
float newOriginY = (gesture.view.frame.origin.y+dY);
dispatch_async(dispatch_get_main_queue(), ^(void){
self.propertyDetailContentViewTopConstraint.constant = newOriginY;
});
if (gesture.state == UIGestureRecognizerStateEnded) {
if (gesture.view.frame.origin.y*0.8 < 100) {
targetY = 0;
}else if (gesture.view.frame.origin.y*0.8 < 250){
targetY = 250;
}else{
targetY = MAIN_SCREEN_HEIGHT;
}
[self setPropertyDetailContentViewTopConstraintTop:targetY];
}
}
-(void)setPropertyDetailContentViewTopConstraintTop:(CGFloat)top
{
[self.view layoutIfNeeded];
self.propertyDetailContentViewTopConstraint.constant = top;
[UIView animateWithDuration:0.5
animations:^{
[self.view layoutIfNeeded];
}];
}