我正在代码中创建一个表视图,并希望使用自动布局将其直接放置在情节提要中屏幕上最低元素的正下方。 由于自动布局,最下层元素的位置会根据屏幕上元素的内容而变化。
无论如何,是否可以从故事板中获取具有出口的元素并使用代码为其创建约束?
这是我创建表的方式:
_myTableView = [[UITableView alloc] initWithFrame:
CGRectMake(20, 714, 280, 200) style:UITableViewStylePlain];
_myTableView.delegate = self;
_myTableView.dataSource = self;
_myTableView.scrollEnabled = NO;
_myTableView.layer.cornerRadius = 5;
_myTableView.backgroundColor = [UIColor whiteColor];
_myTableView.rowHeight=28;
[self.scrollView addSubview:_myTableView];
这就是我通常在代码中创建约束的方式:
NSLayoutConstraint *tableToBottomElement = [NSLayoutConstraint
constraintWithItem:_myTableView attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual toItem:self.bottomElement
attribute:NSLayoutAttributeBottom multiplier:1 constant:12];
基本上,我希望表格视图显示在底部元素下方 12 点。
但是,在创建约束后,它显示为未使用的变量。 如何让表视图适应此约束? 有没有办法使表格最初出现在正确的位置?
如果底部元素位于 scollview 的底端,请不要忘记删除底部元素的最底部约束,以将表视图挂钩到它并将表视图的底部挂钩到滚动视图
-(void)viewDidLayoutSubviews
{
if(once){
_myTableView.translatesAutoresizingMaskIntoConstraints = NO;
NSLayoutConstraint *con1 = [NSLayoutConstraint
constraintWithItem:_myTableView attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual toItem:self.bottomElement
attribute:NSLayoutAttributeBottom multiplier:1 constant:12];
NSLayoutConstraint *con2 = [NSLayoutConstraint
constraintWithItem:_myTableView attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual toItem:self.scrollView
attribute:NSLayoutAttributeTrailing multiplier:1 constant:0];
NSLayoutConstraint *con3 = [NSLayoutConstraint
constraintWithItem:_myTableView attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual toItem:self.scrollView
attribute:NSLayoutAttributeLeading multiplier:1 constant:0];
NSLayoutConstraint *con4 = [NSLayoutConstraint
constraintWithItem:_myTableView attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual toItem:self.scrollView
attribute:NSLayoutAttributeBottom multiplier:1 constant:0];
[self.scrollView addConstraints:@[con1,con2,con3,con4]];
[self.view layoutIfNeeded];
once = NO;
}
}