在 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?

如何使用 Swift 在 iOS 中以编程方式进行 segue

如何在 iOS 8 中以编程方式隐藏状态栏 [重复]

如何在 SwiftUI 中以编程方式滚动列表?