在AutoLayout - iOS中,约束计数总是变为零
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在AutoLayout - iOS中,约束计数总是变为零相关的知识,希望对你有一定的参考价值。
答案
使用此代码(Swift 4+和Xcode 9.4.1)
import UIKit
class ViewController: UIViewController {
@IBOutlet var subView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
print(self.view.getAllConstraints().count)
print(self.subView.getAllConstraints().count)
}
}
extension UIView {
func getAllConstraints() -> [NSLayoutConstraint] {
var views = [self]
var view = self
while let superview = view.superview {
views.append(superview)
view = superview
}
return views.flatMap({ $0.constraints }).filter { constraint in
return constraint.firstItem as? UIView == self ||
constraint.secondItem as? UIView == self
}
}
}
另一答案
试着在viewDidAppear
中打印约束。在viewDidLoad
方法约束中没有为视图加载,所以只需尝试使用viewDidAppear
方法。
另一答案
对于viewDidLoad被称为subviews的你的信息还没有列出那就是为什么你得到零,把代码放到viewDidLayoutSubviews
你会得到你的约束
以上是关于在AutoLayout - iOS中,约束计数总是变为零的主要内容,如果未能解决你的问题,请参考以下文章
IOS/Autolayout:在生命周期中为代码中创建的元素设置约束