ios - 在 AutoLayout - iOS 中,约束计数始终为零 ( 0 )
问题描述
我遇到了一个奇怪的问题,我正在使用情节提要对视图设置约束,如下所示:
但是,如果我通过代码访问所有应用的约束,那么总是得到零 (0)。
对于 self.view 它返回约束,但黄色视图变为零。
解决方案
使用此代码(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
}
}
}
推荐阅读
- java - 如何修复不可变类中的“无法使用带参数的构造函数 NO_CONSTRUCTOR 实例化 'className'”
- python-3.x - 将字典附加到元组列表中
- php - Var_dump 显示数组中的 2 个元素,但 foreach 仅显示最后一个元素
- javascript - vue.js 中的 Angular ng-container 等效项
- sqlite - 如何修复“无法为 unitName null 检索 EntityManagerFactory”
- python-3.x - 有没有办法从 docx 文档 python 中的表格中提取突出显示的文本?
- r - R中日期的函数给出的结果为“NA”
- reactjs - 无法理解 jitsi 中的导航
- amazon-web-services - 如何按顺序运行 terraform 代码?
- swift - 如何使用 UIGraphicsPDFRenderer 将多行字符串绘制为 pdf?