簡體   English   中英

NSLayoutConstraint.constraintsWithVisualFormat在Swift 2.0中的options參數中傳遞nil

[英]NSLayoutConstraint.constraintsWithVisualFormat pass nil in options parameter in Swift 2.0

因此,我有一個項目,並且該項目中的UI已完全編碼(根本沒有.xib文件或情節提要)。 使用Objective-C,我們可以傳遞nil0作為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM