2016-04-27 35 views
3

當我在Xcode 7中編輯我的約束時,我在Interface Builder中發現標識符字段。如何使用約束,約束的標識符是什麼?使用標識符可以以編程方式訪問約束並更改常量?我的問題是爲什麼這個標識符有幫助?如何在自動佈局中使用約束標識符以及如何使用標識符更改約束? [Swift]

SNAPSHOT

有什麼方法與在子視圖循環,再次循環約束子視圖的標識符來訪問約束。我的意思是有什麼方法可以直接訪問約束而不需要循環。

UPDATE

我tryed這個代碼,但只有寬度和高度約束被訪問

for subview in view.subviews { 
     for constraint in subview.constraints() { 
      if constraint.identifier == "identifier" { 
       return constraint 
      } 
     } 
    } 
+0

在這裏回答:http://stackoverflow.com/questions/27791597/is-there-a-way-to-add-an-identifier-to-auto-layout-constraints-in-interface-buil/31831576# 31831576 – oyalhi

+0

http://stackoverflow.com/questions/33038451/get-reference-to-nslayoutconstraint-using-identifier-set-in-storyboard –

+0

@oyalhi我更新了問題.. –

回答

4

HOW:標識符是有用的,當不匹配調試(例如約束和其中一個在運行時被破壞;約束標識符以日誌形式顯示,因此您可以看到哪一個可能導致問題)

原因:約束標識符使日誌更易於閱讀,更準確,並且可以爲您節省大量時間。

約束編輯:如果你想以編程方式更改的限制,你將不得不把他們定義爲網點(如標籤或按鈕),然後從視圖(而不是對象本身),刪除它們,然後將它們再次向觀點。根據我的知識,您不能僅通過編程方式「編輯」約束條件。

您的代碼只給出寬度和高度,因爲您訪問視圖的約束,只包含對象的寬度和高度。

+3

實際上可以在你聲明它爲插座後修改一個約束,如下所示:self.myConstraint.constant = 50.0 –