2016-08-19 3 views
1

ok У меня есть эта странная проблема (потому что я никогда не видел таких ошибок раньше), у меня есть текстовое поле в моем представлении, и я расширяю его ширину с помощью анимации от обе стороны (Скользящие и ведущий), но проблема в том, это его единственное расширение с одной стороны (либо задней или передней)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

странно, что я делаю то же самое на другой контроллер с видом и его работы там, но не здесь раскадровка, Я проверил каждое ограничение, которое они правильные, и что ошибка NSLog также появляется в этом ViewController (где выше работает нормально)

У кого-нибудь есть какие-то сведения, что здесь не так? пожалуйста, дайте мне знать его так расстраивает

код моего 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 для вас, и все должно работать так, как есть. Однако, судя по сообщению журнала, только «ведущее» ограничение было изменено (имеет константу -16). «Конец» не кажется измененным. Убедитесь, что ваши IBOutlets подключены для обоих ограничений.

ОБНОВЛЕНИЕ: на самом деле выходы должны быть в порядке, так как это Swift, и это может привести к сбою в противном случае. Я предлагаю идти по строкам через ваш код и смотреть, когда появляется сообщение журнала ломающихся ограничений.

ОБНОВЛЕНИЕ 2 (из комментариев): вы уверены, что порядок просмотров прав в ограничениях? Я имею в виду, что в зависимости от того, какой вид является первым, а второй, вам нужно либо установить константу на +16, либо -16. Попробуйте сыграть с +/-, так как он быстрее, чем переход на раскадровку и изменение порядка просмотров. Возможно, вам нужно указать +16 для одного из ограничений.

+0

спасибо за ответ, я проверил его несколько раз, когда соединения были правильными, и я также попытался удалить ограничение по центруX до сих пор никаких изменений –

+0

@remyboys, да, извините, я не думал об этом достаточно хорошо. Ничто не может быть ничтожным, потому что это Swift. В противном случае он рухнул бы. См. Обновление. Я попытаюсь обновить свой ответ на основе ваших дальнейших отзывов. – FreeNickname

+0

, пожалуйста, проверьте мой добавленный весь код здесь http://pastebin.com/BvfEvzPE, я проверил его самостоятельно, но еще не нашел проблемы –

1

Вы можете попытаться изменить приоритет Centrex ограничения 999

enter image description here

Нажмите на Edit варианта, и вы можете изменить приоритет 999

Надеются, что это работает!