swift - 向 uiview 添加约束时的 SIGABRT

标签 swift debugging autolayout

自动布局再次让我摸不着头脑。我在类的顶部定义了一个 UIView 和 UITextField:

var urlField = UITextField(frame: .zero)
var barView = UIView(frame: .zero)

我从 viewWillAppear 调用我的配置方法(所以我知道 self.view 已全部设置):

   override func viewWillAppear(_ animated: Bool) {
                configureURLBar()
    }

我在那里没有做任何特别的事情。

func configureURLBar() {
    barView.translatesAutoresizingMaskIntoConstraints = false
    barView.topAnchor.constraint(equalTo: self.view.layoutMarginsGuide.topAnchor).isActive = true
    barView.heightAnchor.constraint(equalToConstant: 30).isActive = true
    }

当它到达 topAnchor 约束时,我得到异常,我不明白为什么。如果我反转第 2 和第 3 行,它在到达 .topAnchor 行之前不会爆炸,所以这就是问题所在。一旦我理解了这个异常的原因(以防你想知道我想做什么),我可以问第二个问题:如何在我的 UIWebView 的顶部添加一个用户输入 (url) 栏。 (这也不起作用 - 如果我尝试限制显示完美的 self.webView,结果相同)另外:我在调用 viewWillAppear() 之前调用 self.view.setNeedsDisplay()。

最佳答案

您必须先将您的 View 添加到父 View 。之后,您可以添加约束。

试试这个:

override func viewWillAppear(_ animated: Bool) 
{
self.view.addSubview(barView)               
configureURLBar()
}

关于swift - 向 uiview 添加约束时的 SIGABRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42856610/

相关文章:

ios - 从 [Entity] 转换为无关类型的 Entity 在 CoreData 中总是失败

c - 如何修复段错误?

c++ - 在 linux 上调试时如何显示 Unicode 字符串?

iOS 7 缩放在带有 AutoLayout 的 ScrollView 中不起作用,但在 iOS8/9 中起作用

objective-c - 为 UITableView 的 tableFooterView 设置标签 - 使用自动布局

swift - 从 UINavigationController 堆栈 View 呈现自定义 UIAlert

arrays - Firebase/Swift 在删除时更新 TableView 值?

android - onAttach(上下文上下文)未被调用

ios - 使用自动布局以编程方式将 subview 添加到 UIView 时来源错误

ios - 有什么方法可以在 iOS 中使用 swift 将用户名和密码保存在设备中,这与 Android 中的偏好相同?