2017-07-07 87 views
0

我正在通過在線教程進行操作。我一直在一步一步地執行,並在運行模擬器時在調試器中收到消息,說我有衝突的約束。我不相信有衝突的限制,所以我想我會伸出第二個意見。調試器中的衝突限制錯誤消息

下面是具有衝突約束的視圖控制器的屏幕截圖。

View Controller from Xcode Project

下面是在調試器中的錯誤消息的截屏:它看起來像它與停止按鈕的寬度約束的問題,但我不能從錯誤信息告訴如何解決它。

Part of Error Message

任何幫助,不勝感激!

+0

首先刪除高度:64從最後一個堆棧查看 –

+0

@jaydeepVyas然後底部堆棧視圖將佔用屏幕的一半。 –

+0

我已經給出了下面的答案,參見 –

回答

0

嘗試你並不需要給約束去年堆棧視圖 對於最後一個按鈕圖像下面的方法,你必須設置內容模式編程中心 enter image description here

+0

使用上面的約束建議,它將所有東西都轉移到幾乎離開視圖控制器的一側。我的錯誤信息縮短了。 –

+0

你能給我你的代碼嗎? –

+0

@Cali_Ranger你可以給我只是你的圖片 –

0

看起來你設置停止按鈕寬度= 64,但實際您沒有爲父視圖設置寬度,因此它會自動設置爲0或343. 單擊停止按鈕時是否獲得任何紅色約束?

+0

我點擊按鈕時唯一的約束是設置的寬度約束。我試圖將包含停止按鈕的堆棧視圖的約束寬度設置爲64,但這並沒有什麼好處。我仍然收到一個很長的錯誤信息。 –

0

我能找到答案。我必須在停止按鈕的寬度約束上將優先級更改爲999。調試消息是說下面的約束是衝突的。

(
"<NSLayoutConstraint:0x600000096080 UIButton:0x7fb874e157d0.width == 64 (active)>", 
"<NSLayoutConstraint:0x610000097ac0 'fittingSizeHTarget' UIStackView:0x7fb874e155d0.width == 0 (active)>", 
"<NSLayoutConstraint:0x600000096210 'UISV-canvas-connection' UIStackView:0x7fb874e155d0.leading <= UIButton:0x7fb874e157d0.leading (active)>", 
"<NSLayoutConstraint:0x600000097ca0 'UISV-canvas-connection' UIStackView:0x7fb874e155d0.centerX == UIButton:0x7fb874e157d0.centerX (active)>" 
) 

然後它說它需要打破停止按鈕的寬度約束,以解決衝突的約束問題。

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x600000096080 UIButton:0x7fb874e157d0.width == 64 
(active)> 

將優先級降至999可防止調試消息出現,並保持按鈕是我想要的。

我在這裏找到了解決方案的信息:

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/DebuggingTricksandTips.html

[從鏈接] 這些限制,上一次是由系統創建。你不能改變它。此外,它與第一個約束產生了明顯的衝突。如果你的超級看法只有320點寬,你永遠不會有400點寬的標籤。幸運的是,您不必擺脫第一個約束。如果您將其優先級降至999,系統仍會嘗試提供所選的寬度 - 儘可能接近,同時仍然滿足其他約束條件。