gpt4 book ai didi

IOS/自动布局/objective-C : Create Constraint in Code that References Element in Storyboard

转载 作者:行者123 更新时间:2023-11-29 00:05:47 25 4
gpt4 key购买 nike

我正在用代码创建一个表格 View ,并希望使用自动布局将其直接放置在 Storyboard 中屏幕上最低元素的下方。最下面元素的位置会根据屏幕上元素的内容而变化——这要归功于自动布局。

有没有办法从 Storyboard中获取一个有导出的元素并使用代码为其创建约束?

这是我创建表的方式:

_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];

基本上我希望表格 View 出现在底部元素下方 12 点处。

但是,在创建约束后,它显示为未使用的变量。我如何让 tableview 适应这个约束?有没有办法让表格最初出现在正确的位置?

最佳答案

如果 bottom 元素位于 scollview 的底端,不要忘记删除它的最底部约束,以便将 tableview 挂接到它,并将 tableview 的底部挂接到 scrollview

   -(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;

}

}

关于IOS/自动布局/objective-C : Create Constraint in Code that References Element in Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48085340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com