【问题标题】:Constraints for UITableView programmatically in iOS在 iOS 中以编程方式对 UITableView 的约束
【发布时间】:2015-04-17 07:00:45
【问题描述】:

我有一个 UITableView。我想以编程方式对其设置约束。以下是我要设置的约束。

  1. 领先
  2. 尾随
  3. 顶部
  4. 底部

【问题讨论】:

  • 这是非常标准的情况。您是否阅读过有关自动布局的文档?

标签: ios iphone autolayout nslayoutconstraint


【解决方案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)
        }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多