我在 UIViewController 中有一个 UITableView,它占据了整个屏幕。它的约束只是水平和垂直空间,其超级视图的常数为 0。(我基本上只是将 tableView 放在 ViewController 的中心)并让 Xcode 添加缺少的约束。
我想做的是让一个动画从 UITableView 上滑下来,然后在 tableView 上方添加一个 activityIndicator,旋转,然后当我的任务完成后,将 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 无处可见。我想知道使用自动布局我应该为这样的事情做些什么。是否需要先添加一个在viewController的view和tableView之间创建空间的约束,然后再添加activityIndicator?或者我是否创建一个看起来像的新约束
"@V:|-[activityIndicator]-[tableView]|"
我之前尝试过这样的事情,但我也没有得到任何结果。有人知道如何使用自动布局解决这个问题吗?我只用字符串和支柱做过这样的事情。谢谢!