У меня есть подкласс UIView с соответствующим файлом xib. В моем xib у меня есть свойство NSLayoutConstraint, которое я пытаюсь анимировать. У меня есть метод animateIn. Проблема в том, что работает только метод animateIn. Когда я снова пытаюсь обновить константу, она просто остается на прежнем значении.
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *horizontalConstraint;
Я пытаюсь обновить константу после нажатия кнопки. Но константа, похоже, не обновляется после установки. Он по-прежнему регистрирует 0 даже после установки его на -500. Я звоню layoutIfNeeded, но ничего не происходит.
// this works
- (void) animateIn {
[UIView animateWithDuration:1.0 delay:2.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.alpha = 1.0;
} completion:^(BOOL finished) {
[UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.horizontalConstraint.constant = 0;
[self layoutIfNeeded];
} completion:^(BOOL finished) {
}];
}];
}
// this does not work
- (IBAction)resume:(id)sender {
self.horizontalConstraint.constant = -500;
[self layoutIfNeeded];
NSLog(@"%f",self.horizontalConstraint.constant); // this always stays 0
}
ОБНОВЛЕНИЕ
Похоже, что мой NSLayoutConstraint равен (null), когда я хочу использовать его во второй раз. Это объясняет, почему он не обновляется. Как сохранить ссылку на него?

null, попробуйте с указателемstrong. - person Yogesh Suthar   schedule 11.08.2014