在 iOS 中以编程方式对 UITableView 的约束
Posted
技术标签:
【中文标题】在 iOS 中以编程方式对 UITableView 的约束【英文标题】:Constraints for UITableView programmatically in iOS 【发布时间】:2015-04-17 07:00:45 【问题描述】:我有一个 UITableView。我想以编程方式对其设置约束。以下是我要设置的约束。
-
领先
尾随
顶部
底部
【问题讨论】:
这是非常标准的情况。您是否阅读过有关自动布局的文档? 【参考方案1】:试试这个,
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];
【讨论】:
【参考方案2】:在我的代码中通常使用如下方法,您可以根据自己的需要进行自定义。
-(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];
【讨论】:
我应该在这里为“parentView”设置什么。我正在设置 self.view 通过设置 self.view 它不起作用。 我认为你的 parentView 是“self.view”。完成添加约束后,尝试使用“ [self.view layoutSubviews];”更新视图的布局【参考方案3】:您可以使用 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)
【讨论】:
以上是关于在 iOS 中以编程方式对 UITableView 的约束的主要内容,如果未能解决你的问题,请参考以下文章
在 UITableViewController 中以编程方式切换 UITableView
如何在 Swift 3 中以编程方式在 UIImageview 中添加 UITableview
如何在 UITableView Cell 中以编程方式创建 n 个 UIButton?