2017-08-09 23 views
0

私はスタートDeveloping iOS Apps (Swift)チュートリアルでスイフトを学んでいます。私は、このカスタム評価コントロールを作成していますが、私はアプリケーションを実行するたびにエラーをfolowing送信されていない:私は44 == 44 ==ボタンの幅の制約を設定し、ボタンの高さのためにXCode Swift:なぜ制約が崩れるのですか?

2017-08-09 15:49:41.894597+0200 FoodTracker[5051:2273797] [LayoutConstraints] Unable to simultaneously satisfy constraints. 
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
     (1) look at each constraint and try to figure out which you don't expect; 
     (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x17409af90 UIButton:0x100c12d90.width == 44 (active)>", 
    "<NSLayoutConstraint:0x17009c160 'UISV-canvas-connection' FoodTracker.RatingControl:0x100c02400.leading == UIButton:0x100c12d90.leading (active)>", 
    "<NSLayoutConstraint:0x17009c200 'UISV-canvas-connection' H:[UIButton:0x100c12d90]-(0)-| (active, names: '|':FoodTracker.RatingControl:0x100c02400)>", 
    "<NSLayoutConstraint:0x17009bee0 'UIView-Encapsulated-Layout-Width' FoodTracker.RatingControl:0x100c02400.width == 343 (active)>" 
) 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x17409af90 UIButton:0x100c12d90.width == 44 (active)> 

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. 
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful. 
2017-08-09 15:49:41.895770+0200 FoodTracker[5051:2273797] [LayoutConstraints] Unable to simultaneously satisfy constraints. 
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
     (1) look at each constraint and try to figure out which you don't expect; 
     (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x17409af40 UIButton:0x100c12d90.height == 44 (active)>", 
    "<NSLayoutConstraint:0x17009c250 'UISV-canvas-connection' FoodTracker.RatingControl:0x100c02400.top == UIButton:0x100c12d90.top (active)>", 
    "<NSLayoutConstraint:0x17009c340 'UISV-canvas-connection' V:[UIButton:0x100c12d90]-(0)-| (active, names: '|':FoodTracker.RatingControl:0x100c02400)>", 
    "<NSLayoutConstraint:0x17009bf30 'UIView-Encapsulated-Layout-Height' FoodTracker.RatingControl:0x100c02400.height == 50 (active)>" 
) 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x17409af40 UIButton:0x100c12d90.height == 44 (active)> 

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. 
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful. 

が、他のどれも制約。私はチュートリアルで説明したようにすべてを行いましたが、なぜそれがうまくいかないのかわかりません。私は見つけることができるすべての制約をチェックしましたが、私がXcodeでそれほど経験していないようなものであるかどうかはわかりません。誰かが問題を解決するための手がかりを持っていますか?

This is how it should look like: Apples Result But this is how it looks: My Result (Only The Red Area is important)

お願いします。

エラーメッセージに基づいて、ニコ

+0

は赤い四角/ UIButtonかのUIViewを長方形で? – DonMag

+0

StackView内部のUIButtonです。 –

+0

ああ、私はちょうどあなたが従っているチュートリアルを見てみました.... StackView自体が他の要素を保持する* vertical * StackViewの中にありますか?もしそうなら、* StackViewの 'Alignment'が' Fill'に設定されていますか? – DonMag

答えて

0

、私はあなたがUIStackView内のボタンが埋め込まれていると思います。スタックビューには、制約が正しくないか、まったく制約がなく、自動サイズ調整マスクが使用されています。スタックビューのサイズは343x50で、ボタンを強制的に一致させます。

+0

あなたの提案はすべて正しいです。私はスタックビューの制約を設定しないでください。しかしチュートリアルを書いた人たちはどちらも...(彼らはリンゴのものなので、私は思っていたはずだから..)スタックビューのサイズに合わせてボタンをアンバインドするにはどうすればいいですか?スタックビューに独自の制約を設定するだけですか? –

+0

スタックビューがまったく必要ですか? –

+0

5つのボタンが隣り合わせに配置される必要があります(水平方向)。だから、私はそれが必要だと思う? D –

0

あなたはUIStackViewを持っているようです。 UIStackViewからUIButtonを削除し、そのUIButtonの上限制約をUIStackViewで定義したのと同じ間隔に設定し、UIButtonの整列先行をUiStackViewに設定してください。

+0

しかし、私はスタックビューからボタンを移動することはありません。チュートリアルでは、スタックビューを使って作業する方法を学ぶ必要があります。そのため、UIStackViewの目的は何かについてお読みください。 –

+0

個人的には、その中のすべてのビューで同じ制約が必要な場合に使用します。あなたは明らかにUIButtonのための同じ制約を望まない。だから、それはUIStackViewの外にあるはずです。それを取り出すことでUIStackViewのことを学ぶことはありません – hooliooo

+0

このボタンには同じConstantをスタックビューと同じにしたくないのですが、このスタックビューには5つのButtonがあります。他の(水平)..私はスタックビューの目的thtsと思った。互いに隣り合う複数のオブジェクトを持つには.. –

0

私は理由と解決策を見つけました。

水平スタックビュー - 内部空間全体を縦と横で塗りつぶします。それは意味です - 水平スタックビューは、内部アイテムの高さと幅を設定して、使用可能なすべてのスペースを埋めます。私が見つけた、このような警告を削除する

唯一の方法は - と/すべての内部要素の高さが完璧にフィットするように水平スタックビューの幅/高さを設定されている:252x44

関連する問題