【问题标题】:rightAnchor constraint did not apply when added programmatically - swift以编程方式添加时,rightAnchor 约束不适用 - swift
【发布时间】:2018-07-18 06:30:04
【问题描述】:

当我添加 rightAnchor 约束时,常量 = 20 不适用。在leftAnchor就可以了

override init(frame: CGRect) {
    super.init(frame: frame)

    addSubview(collectionView)
    collectionView.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.activate([collectionView.leftAnchor.constraint(equalTo: leftAnchor, constant: 20),
                                 collectionView.topAnchor.constraint(equalTo: self.topAnchor),
                                 collectionView.rightAnchor.constraint(equalTo: rightAnchor, constant: 20),
                                 collectionView.heightAnchor.constraint(equalTo: self.heightAnchor)])
}

有人可以帮我吗?

【问题讨论】:

  • 您可能需要leadingAnchortrailingAnchod 而不是左/右,因为它们会自动尊重从右到左的语言环境

标签: ios swift constraints ios-autolayout


【解决方案1】:

我有一种强烈的感觉,那就是你想为rightAnchor 做的事情。

collectionView.rightAnchor.constraint(equalTo: rightAnchor, constant: -20)

如果您想从右侧或底部填充,您应该使用负值。


经验法则:任何东西留下或向上的东西都是负面的。

【讨论】:

    【解决方案2】:

    您正在添加 20+rightAnchor 的超级视图。应该是-20

    addSubview(collectionView)
    collectionView.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.activate([collectionView.leftAnchor.constraint(equalTo: leftAnchor, constant: 20),
                                 collectionView.topAnchor.constraint(equalTo: self.topAnchor),
                                 collectionView.rightAnchor.constraint(equalTo: rightAnchor, constant: -20),
                                 collectionView.heightAnchor.constraint(equalTo: self.heightAnchor)])
    

    【讨论】:

      猜你喜欢
      • 2016-05-28
      • 1970-01-01
      • 2020-05-12
      • 2014-11-28
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多