![](/img/trans.png)
[英]What to pass as a NULL value for the options parameter of [NSLayoutConstraint constraintsWithVisualFormat:options:metrics:views:]
[英]NSLayoutConstraint.constraintsWithVisualFormat pass nil in options parameter in Swift 2.0
因此,我有一個項目,並且該項目中的UI已完全編碼(根本沒有.xib文件或情節提要)。 使用Objective-C,我們可以傳遞nil
或0
作為options
參數的參數。 像這樣
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-[one(two)]-[two(three)]-[three]-|" options: nil metrics:metrics views:views]];
Swift 1.2還允許我們將nil作為參數傳遞
self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[categoryTitleLabel]|", options: nil, metrics: nil, views: views))
但是,在最新的帶有Swift 2.0選項參數的Xcode 7 beta 6中,現在需要非可選值,我有點卡住了。 我之前假設,如果我們在options
參數中傳遞nil
,那么將使用NSLayoutFormatOptions
一些默認值。 我查看了NSLayoutFormatOptions
聲明,發現DirectionLeadingToTrailing
是默認值。 因此,我將所有nil參數替換為.DirectionLeadingToTrailing
。 工作正常,但該應用開始崩潰
由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:'*** + [NSLayoutConstraintconstraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]:無法在前導/跟蹤屬性與right /之間建立約束左屬性。 兩者都不使用前導/尾隨
我已經意識到一些約束是沖突的,但事實是,顯然.DirectionLeadingToTrailing
不是默認值。 如果沒有,那是什么? 當前的解決方法是將NSLayoutFormatOptions(rawValue: 0)
作為參數傳遞,但是看起來很丑。
嘗試:
self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[categoryTitleLabel]|", options: [], metrics: nil, views: views))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.