2016-08-19 6 views
1

私はこの奇妙な問題があります(私はこのようなエラーは一度も見たことがないためです)、私のビューにTextfieldがあります。両側(トレーリングや大手)が、問題がある。このそのだけ(どちらか末尾またはリーディング)1つの側から拡大Xcodeは、ビューを水平に中央に置かないようにしています

私のコード:

のViewControllerクラス

@IBOutlet var constraint1: NSLayoutConstraint! // textfield's leading constraint 
@IBOutlet var constraint2: NSLayoutConstraint! // textfield's trailing constraint 

    viewDidload(){........} 

    @IBAction func editingBegin(sender: AnyObject) { 

    fullnameTextField.layer.cornerRadius = 0 
    fullnameTextField.clipsToBounds = false 
    self.constraint2.constant = -16 // here i'm expanding the width by setting constant of my Textfield 
    self.constraint1.constant = -16 
    UIView.animateWithDuration(duration) { 
     self.fullnameTextField.layoutIfNeeded() 
    } 
} 

私のNSLogエラー:

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:0x155e77fb0 UITextField:0x155d85e40.trailing == UIView:0x155e46800.trailingMargin>", 
    "<NSLayoutConstraint:0x1546b02b0 UITextField:0x155d85e40.leading == UIView:0x155e46800.leadingMargin - 16>", 
    "<NSLayoutConstraint:0x1546447e0 UITextField:0x155d85e40.centerX == UIView:0x155e46800.centerX>" 
) 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x1546447e0 UITextField:0x155d85e40.centerX == UIView:0x155e46800.centerX> 

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. 

ここで私が制約に

enter image description here

を設定してる私のストーリーボードは、奇妙に私は別のビューコントローラ上で同じことをやって、そのここではそこではなく、働いているということですです私は彼らが正しいすべての制約をチェックし、そのViewController(上記は正常に動作している)にもNSLogのエラーが表示されます

誰かが何か手がかりが何も間違っていますか?私は私のViewControllerのそののでイライラ

コードを教えてくださいhttp://pastebin.com/BvfEvzPE

+1

先頭の制約は '16'のみで、末尾は' -16'です。 –

+0

@DipenPanchasaraちょっとあなたの答えは、トリックをした –

+1

ありがとう。ハッピーコーディング:) –

答えて

1

AlignX制約を削除してください。あなたがすでに先導および制約を抱えているので、AlignXは必要ないからです。

ここからサンプルコードをダウンロードし、あなたのものと比較することができます。

http://www.filedropper.com/tst

+0

応答の男のためにありがとう、そこに行って、変更はありませんでした。 –

1

@ShoaibがCenter.x制約を削除し、言ったように、まず第一に。 Center X + Width、Leading + Trailingのいずれかで十分です。

でも、レイアウトエンジンはすでにCenter.xの制約を破っており、すべてがそのまま動作するはずです。しかし、ログメッセージで判断すると、 "leading"制約のみが変更されています(定数は-16です)。 "末尾の"ものは修正されていないようです。 両方の制約に対してIBOutletが接続されていることを確認してください。

UPDATE:実際には、アウトレットはスウィフトなので大丈夫でしょう。そうでなければクラッシュします。あなたのコードを一行一行ずつ進んで、拘束条件のログメッセージがいつ表示されるかを調べることをお勧めします。

UPDATE 2(コメントから):ビューの順序は厳密に拘束されていますか?つまり、どちらのビューが最初で、どちらが2番目であるかによって、+ 16または-16のいずれかの定数を設定する必要があります。ストーリーボードに行って視聴順序を切り替えるよりも早いので、+/-で試してみてください。 1つの制約に対して+16を指定する必要があります。

+0

応答ありがとう、私は接続が正しいことを数回チェックし、私もcenterX制約を削除して試してみました –

+0

@remyboys、はい、申し訳ありませんが、私はそれを十分に考えていませんでした。それはSwiftだからコネクションがなくなることはない。そうでなければクラッシュするでしょう。アップデートを参照してください。あなたのさらなるフィードバックに基づいて私の答えを更新しようとします。 – FreeNickname

+0

ここで私の追加したコード全体を確認してくださいhttp://pastebin.com/BvfEvzPE、私はそれを自分で確認しましたが、まだ問題は見つかりませんでした。 –

1

それが動作ホープあなたは編集オプションで999

enter image description here

クリックしセントレックス制約の優先順位を変更してみてください、あなたは999

に優先順位を変更することができます!

関連する問題