【发布时间】:2015-04-17 07:00:45
【问题描述】:
我有一个 UITableView。我想以编程方式对其设置约束。以下是我要设置的约束。
- 领先
- 尾随
- 顶部
- 底部
【问题讨论】:
-
这是非常标准的情况。您是否阅读过有关自动布局的文档?
标签: ios iphone autolayout nslayoutconstraint
我有一个 UITableView。我想以编程方式对其设置约束。以下是我要设置的约束。
【问题讨论】:
标签: ios iphone autolayout nslayoutconstraint
试试这个,
NSLayoutConstraint *constraintSet = [NSLayoutConstraint constraintWithItem:YourTableView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.f];
[self.view addConstraint:constraint];
现在也添加这个属性,
NSLayoutAttributeTop
NSLayoutAttributeTrailing
NSLayoutAttributeBottom
比添加
[yourview addConstraint: constraintSet];
【讨论】:
在我的代码中通常使用如下方法,您可以根据自己的需要进行自定义。
-(void)addConstraintForView:(UITableView*)tableView toView:(UIView*)parentView
{
NSMutableArray *constraints = [NSMutableArray new];
[constraints addObject:[NSLayoutConstraint constraintWithItem:tableView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:parentView
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:0.0f]];
[constraints addObject:[NSLayoutConstraint constraintWithItem:tableView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:parentView
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:0.0f]];
[constraints addObject:[NSLayoutConstraint constraintWithItem:tableView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:parentView
attribute:NSLayoutAttributeTrailing
multiplier:1.0f
constant:0.0f]];
[constraints addObject:[NSLayoutConstraint constraintWithItem:tableView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:parentView
attribute:NSLayoutAttributeBottom
multiplier:1.0f
constant:0.0f]];
[parentView addConstraints:constraints];
}
【讨论】:
您可以使用 SnapKit pod 库以编程方式添加约束。在这里获取snapkit
import SnapKit
class YourViewController: UIViewController {
var tableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(tableView)
tableView.snp.makeConstraints { (make) -> Void in
make.leading.equalTo(0)
make.trailing.equalTo(self.view)
make.top.equalTo(0)
make.bottom.equalTo(0)
}
}
}
【讨论】: