2013-03-28 6 views
2

У меня есть настройки ограничений в проекте Mac OS X в Interface Builder следующим образом:Как я могу изменить Mac OS X Cocoa Layout Constraint

H:|-(61)-[webView] 

Я хотел бы изменить, что IB ограничение из моего кода. Я могу добавить еще одно ограничение, однако тогда консоль жалуется на конфликт, как показано ниже:.

Unable to simultaneously satisfy constraints: 
(
    "<NSLayoutConstraint:0x102112320 H:|-(61)-[WebView:0x10230a1c0] (Names: '|':NSView:0x102362e90)>", 
    "<NSLayoutConstraint:0x10063bab0 H:|-(0)-[WebView:0x10230a1c0] (Names: '|':NSView:0x102362e90)>" 
) 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x102112320 H:|-(61)-[WebView:0x10230a1c0] (Names: '|':NSView:0x102362e90)> 

документация Apple, на Apple - Mac OS X - Cocoa Auto Layout Guide утверждает, что «Ограничения в основном неизменен ... Это алгоритмически важно Это гораздо более эффективным для изменения константы, чем для удаления ограничения и добавления нового ... »

Как я могу изменить это ограничение ведущего пространства из моего кода?

ответ

2

Ограничения - это объекты, подобные другим объектам в IB, поэтому вы можете создать выход в своем контроллере (или любом другом подходящем объекте) и связать ограничение с ним.

Затем в вашем коде вы можете изменить постоянную часть ограничения.

Вы также можете программно удалить ограничение и добавить другое, для ситуации, когда это не просто постоянная часть, которую вы хотите изменить.

Смежные вопросы