У меня есть UITableView в UIViewController, который занимает весь экран. Это ограничения - это просто горизонтальные и вертикальные пространства, которые имеют константы 0 для супервизора. (Я просто просто потерял таблицуView в центре ViewController), и Xcode добавил недостающие ограничения.Добавление UIView над UITableView с автоматической компоновкой
Что я хочу сделать, так это сделать анимацию слайд вниз по UITableView, а затем добавить ActivityIndicator над tableView, вращение, а затем, когда моя задача будет выполнена, анимируйте tableView обратно.
Это то, что я до сих пор:
- (void)revealUnderTableView:(UITapGestureRecognizer *)gesture {
NSLog(@"show");
self.activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectZero];
[self.activityIndicator setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:_activityIndicator];
NSLayoutConstraint *constraintW = [NSLayoutConstraint constraintWithItem:_activityIndicator attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:0 multiplier:1 constant:200];
NSLayoutConstraint *constraintH = [NSLayoutConstraint constraintWithItem:_activityIndicator attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:0 multiplier:1 constant:200];
[self.view addConstraints:[NSArray arrayWithObjects:constraintW, constraintH, nil]];
// [_activityIndicator setConstrainedView:_activityIndicator width:100 height:100];
[_activityIndicator setTintColor:[UIColor redColor]];
self.tableViewHeightConstraint.constant = 44.; // 1
[self.tableView setNeedsUpdateConstraints]; // 2
[UIView animateWithDuration:.3 animations:^{
[self.tableView layoutIfNeeded]; // 3
}];
NSLog(@"%@", NSStringFromCGRect(self.activityIndicator.frame));
}
Мой activityIndicator нигде не было видно. Мне было интересно, что я должен сделать для чего-то подобного с помощью Auto Layout. Нужно ли сначала добавить ограничение, которое создает пространство между представлением viewController и tableView, а затем добавить ActivityIndicator? Или я создаю новое ограничение, которое выглядит примерно так:
"@V:|-[activityIndicator]-[tableView]|"
Я пробовал что-то подобное раньше, и у меня также не было никаких результатов. Кто-нибудь знает, как подойти к этой проблеме с помощью Auto Layout? Я только делал такие вещи со строками и стойками. Благодаря!
Если можно просто использовать 'tableHeaderView'. –