2014-11-22 3 views
1

Я пытаюсь сделать анимацию, чтобы просто перемещаться по оси Y примерно на 50 точек. Анимация работает, но как только она будет выполнена, она вернется в исходное положение.iOS: просмотр анимации возвращается в исходное положение

UIView* view = [self.view viewWithTag:50]; 
    [UIView animateWithDuration:0.5 
          delay:0.1 
         options: UIViewAnimationOptionCurveEaseOut 
        animations:^ 
    { 
     CGRect frame = view.frame; 
     frame.origin.y = 230; 
     frame.origin.x = 30; 
     view.frame = frame; 
    } 
        completion:^(BOOL finished) 
    { 
     NSLog(@"Completed"); 

    }]; 

ответ

1

Ваши ограничения компоновки будут тянуть его назад. На данный момент это очень распространенный вопрос. Вы должны изменить свои объекты NSLayoutConstraint, чтобы отразить изменения в представлении.

E.g. Constraint.constant + = 50;

Поиск переполнения стека для других вопросов, таких как вопрос, который вы хотите задать перед запросом.

+0

К сожалению, все мои поиски Google привели меня к устаревшим ответам. Я все-таки работал. Благодаря! – Andy

0

Для полноты, ограничения должны быть изменены и обновлены в анимации, как показано ниже:

- (IBAction)moveAction:(id)sender { 
    self.spaceConstraint.constant += 220; 

    [UIView animateWithDuration:0.5 animations:^{ 
     [self.imageView layoutIfNeeded]; 
    }]; 
}